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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (703) hide show
  1. package/dist/admin/adapters/router.d.ts +1 -1
  2. package/dist/admin/adapters/router.d.ts.map +1 -1
  3. package/dist/admin/adapters/router.js.map +1 -1
  4. package/dist/admin/forms/Diff.d.ts +0 -4
  5. package/dist/admin/forms/Diff.d.ts.map +1 -1
  6. package/dist/admin/forms/Diff.js.map +1 -1
  7. package/dist/admin/forms/Form.d.ts +0 -2
  8. package/dist/admin/forms/Form.d.ts.map +1 -1
  9. package/dist/admin/forms/Form.js.map +1 -1
  10. package/dist/admin/initAdminContext.d.ts.map +1 -1
  11. package/dist/admin/initAdminContext.js +0 -10
  12. package/dist/admin/initAdminContext.js.map +1 -1
  13. package/dist/auth/createAuthToken.d.ts +26 -0
  14. package/dist/auth/createAuthToken.d.ts.map +1 -0
  15. package/dist/auth/createAuthToken.js +39 -0
  16. package/dist/auth/createAuthToken.js.map +1 -0
  17. package/dist/auth/endpoints/refresh.d.ts.map +1 -1
  18. package/dist/auth/endpoints/refresh.js +2 -1
  19. package/dist/auth/endpoints/refresh.js.map +1 -1
  20. package/dist/auth/getFieldsToSign.js.map +1 -1
  21. package/dist/auth/loginWithCookie.d.ts.map +1 -1
  22. package/dist/auth/loginWithCookie.js +1 -0
  23. package/dist/auth/loginWithCookie.js.map +1 -1
  24. package/dist/auth/operations/local/login.d.ts.map +1 -1
  25. package/dist/auth/operations/local/login.js +1 -0
  26. package/dist/auth/operations/local/login.js.map +1 -1
  27. package/dist/auth/operations/login.d.ts +2 -0
  28. package/dist/auth/operations/login.d.ts.map +1 -1
  29. package/dist/auth/operations/login.js +6 -19
  30. package/dist/auth/operations/login.js.map +1 -1
  31. package/dist/auth/operations/refresh.d.ts +8 -0
  32. package/dist/auth/operations/refresh.d.ts.map +1 -1
  33. package/dist/auth/operations/refresh.js +50 -19
  34. package/dist/auth/operations/refresh.js.map +1 -1
  35. package/dist/auth/operations/resetPassword.d.ts.map +1 -1
  36. package/dist/auth/operations/resetPassword.js +54 -20
  37. package/dist/auth/operations/resetPassword.js.map +1 -1
  38. package/dist/auth/refreshAuthToken.d.ts +32 -0
  39. package/dist/auth/refreshAuthToken.d.ts.map +1 -0
  40. package/dist/auth/refreshAuthToken.js +113 -0
  41. package/dist/auth/refreshAuthToken.js.map +1 -0
  42. package/dist/auth/serverFunctions/cookies.js.map +1 -1
  43. package/dist/auth/serverFunctions/login.js.map +1 -1
  44. package/dist/auth/sessions.d.ts +9 -2
  45. package/dist/auth/sessions.d.ts.map +1 -1
  46. package/dist/auth/sessions.js +6 -5
  47. package/dist/auth/sessions.js.map +1 -1
  48. package/dist/auth/types.d.ts +25 -1
  49. package/dist/auth/types.d.ts.map +1 -1
  50. package/dist/auth/types.js.map +1 -1
  51. package/dist/cli/commands/data/utilities.d.ts +1 -1
  52. package/dist/cli/commands/data/utilities.d.ts.map +1 -1
  53. package/dist/cli/commands/data/utilities.js.map +1 -1
  54. package/dist/cli/defineCLICommand.js +1 -1
  55. package/dist/cli/defineCLICommand.js.map +1 -1
  56. package/dist/collections/config/client.d.ts +1 -1
  57. package/dist/collections/config/client.d.ts.map +1 -1
  58. package/dist/collections/config/client.js +0 -1
  59. package/dist/collections/config/client.js.map +1 -1
  60. package/dist/collections/config/defaults.d.ts +2 -0
  61. package/dist/collections/config/defaults.d.ts.map +1 -1
  62. package/dist/collections/config/defaults.js +4 -0
  63. package/dist/collections/config/defaults.js.map +1 -1
  64. package/dist/collections/config/sanitize.d.ts.map +1 -1
  65. package/dist/collections/config/sanitize.js +3 -0
  66. package/dist/collections/config/sanitize.js.map +1 -1
  67. package/dist/collections/config/sanitizeCompoundIndexes.d.ts.map +1 -1
  68. package/dist/collections/config/sanitizeCompoundIndexes.js +0 -9
  69. package/dist/collections/config/sanitizeCompoundIndexes.js.map +1 -1
  70. package/dist/collections/config/types.d.ts +4 -21
  71. package/dist/collections/config/types.d.ts.map +1 -1
  72. package/dist/collections/config/types.js.map +1 -1
  73. package/dist/collections/dataloader.d.ts +1 -10
  74. package/dist/collections/dataloader.d.ts.map +1 -1
  75. package/dist/collections/dataloader.js +6 -14
  76. package/dist/collections/dataloader.js.map +1 -1
  77. package/dist/collections/operations/create.d.ts.map +1 -1
  78. package/dist/collections/operations/create.js +0 -13
  79. package/dist/collections/operations/create.js.map +1 -1
  80. package/dist/collections/operations/delete.d.ts.map +1 -1
  81. package/dist/collections/operations/delete.js +121 -638
  82. package/dist/collections/operations/delete.js.map +1 -1
  83. package/dist/collections/operations/deleteByID.d.ts.map +1 -1
  84. package/dist/collections/operations/deleteByID.js +32 -238
  85. package/dist/collections/operations/deleteByID.js.map +1 -1
  86. package/dist/collections/operations/findByID.d.ts.map +1 -1
  87. package/dist/collections/operations/findByID.js +0 -6
  88. package/dist/collections/operations/findByID.js.map +1 -1
  89. package/dist/collections/operations/findDistinct.d.ts.map +1 -1
  90. package/dist/collections/operations/findDistinct.js +6 -7
  91. package/dist/collections/operations/findDistinct.js.map +1 -1
  92. package/dist/collections/operations/findVersionByID.d.ts.map +1 -1
  93. package/dist/collections/operations/findVersionByID.js +7 -0
  94. package/dist/collections/operations/findVersionByID.js.map +1 -1
  95. package/dist/collections/operations/findVersions.d.ts.map +1 -1
  96. package/dist/collections/operations/findVersions.js +5 -0
  97. package/dist/collections/operations/findVersions.js.map +1 -1
  98. package/dist/collections/operations/local/count.d.ts +4 -9
  99. package/dist/collections/operations/local/count.d.ts.map +1 -1
  100. package/dist/collections/operations/local/count.js.map +1 -1
  101. package/dist/collections/operations/local/countVersions.d.ts +0 -4
  102. package/dist/collections/operations/local/countVersions.d.ts.map +1 -1
  103. package/dist/collections/operations/local/countVersions.js.map +1 -1
  104. package/dist/collections/operations/local/create.d.ts +4 -9
  105. package/dist/collections/operations/local/create.d.ts.map +1 -1
  106. package/dist/collections/operations/local/create.js.map +1 -1
  107. package/dist/collections/operations/local/delete.d.ts +4 -9
  108. package/dist/collections/operations/local/delete.d.ts.map +1 -1
  109. package/dist/collections/operations/local/delete.js.map +1 -1
  110. package/dist/collections/operations/local/duplicate.d.ts +0 -5
  111. package/dist/collections/operations/local/duplicate.d.ts.map +1 -1
  112. package/dist/collections/operations/local/duplicate.js.map +1 -1
  113. package/dist/collections/operations/local/find.d.ts +4 -9
  114. package/dist/collections/operations/local/find.d.ts.map +1 -1
  115. package/dist/collections/operations/local/find.js.map +1 -1
  116. package/dist/collections/operations/local/findByID.d.ts +4 -9
  117. package/dist/collections/operations/local/findByID.d.ts.map +1 -1
  118. package/dist/collections/operations/local/findByID.js.map +1 -1
  119. package/dist/collections/operations/local/findDistinct.d.ts +0 -5
  120. package/dist/collections/operations/local/findDistinct.d.ts.map +1 -1
  121. package/dist/collections/operations/local/findDistinct.js.map +1 -1
  122. package/dist/collections/operations/local/findVersionByID.d.ts +0 -5
  123. package/dist/collections/operations/local/findVersionByID.d.ts.map +1 -1
  124. package/dist/collections/operations/local/findVersionByID.js.map +1 -1
  125. package/dist/collections/operations/local/findVersions.d.ts +0 -5
  126. package/dist/collections/operations/local/findVersions.d.ts.map +1 -1
  127. package/dist/collections/operations/local/findVersions.js.map +1 -1
  128. package/dist/collections/operations/local/restoreVersion.d.ts +0 -5
  129. package/dist/collections/operations/local/restoreVersion.d.ts.map +1 -1
  130. package/dist/collections/operations/local/restoreVersion.js.map +1 -1
  131. package/dist/collections/operations/local/update.d.ts +4 -9
  132. package/dist/collections/operations/local/update.d.ts.map +1 -1
  133. package/dist/collections/operations/local/update.js.map +1 -1
  134. package/dist/collections/operations/renameFile.js +1 -1
  135. package/dist/collections/operations/renameFile.js.map +1 -1
  136. package/dist/collections/operations/restoreVersion.d.ts.map +1 -1
  137. package/dist/collections/operations/restoreVersion.js +76 -157
  138. package/dist/collections/operations/restoreVersion.js.map +1 -1
  139. package/dist/collections/operations/update.d.ts.map +1 -1
  140. package/dist/collections/operations/update.js +171 -357
  141. package/dist/collections/operations/update.js.map +1 -1
  142. package/dist/collections/operations/updateByID.d.ts +0 -15
  143. package/dist/collections/operations/updateByID.d.ts.map +1 -1
  144. package/dist/collections/operations/updateByID.js +60 -265
  145. package/dist/collections/operations/updateByID.js.map +1 -1
  146. package/dist/collections/operations/utilities/buildBeforeOperation.d.ts.map +1 -1
  147. package/dist/collections/operations/utilities/buildBeforeOperation.js +0 -7
  148. package/dist/collections/operations/utilities/buildBeforeOperation.js.map +1 -1
  149. package/dist/collections/operations/utilities/update.d.ts +1 -14
  150. package/dist/collections/operations/utilities/update.d.ts.map +1 -1
  151. package/dist/collections/operations/utilities/update.js +20 -92
  152. package/dist/collections/operations/utilities/update.js.map +1 -1
  153. package/dist/collections/operations/validate.js +4 -4
  154. package/dist/collections/operations/validate.js.map +1 -1
  155. package/dist/config/client.d.ts +1 -3
  156. package/dist/config/client.d.ts.map +1 -1
  157. package/dist/config/client.js +1 -9
  158. package/dist/config/client.js.map +1 -1
  159. package/dist/config/defaults.d.ts.map +1 -1
  160. package/dist/config/defaults.js +1 -0
  161. package/dist/config/defaults.js.map +1 -1
  162. package/dist/config/definePlugin.js.map +1 -1
  163. package/dist/config/sanitize.d.ts.map +1 -1
  164. package/dist/config/sanitize.js +2 -40
  165. package/dist/config/sanitize.js.map +1 -1
  166. package/dist/config/types.d.ts +13 -21
  167. package/dist/config/types.d.ts.map +1 -1
  168. package/dist/config/types.js.map +1 -1
  169. package/dist/database/defaultCopy.d.ts.map +1 -1
  170. package/dist/database/defaultCopy.js +0 -1
  171. package/dist/database/defaultCopy.js.map +1 -1
  172. package/dist/database/types.d.ts +4 -75
  173. package/dist/database/types.d.ts.map +1 -1
  174. package/dist/database/types.js.map +1 -1
  175. package/dist/exports/build-config.d.ts +9 -0
  176. package/dist/exports/build-config.d.ts.map +1 -0
  177. package/dist/exports/build-config.js +38 -0
  178. package/dist/exports/build-config.js.map +1 -0
  179. package/dist/exports/shared.d.ts +0 -2
  180. package/dist/exports/shared.d.ts.map +1 -1
  181. package/dist/exports/shared.js +0 -2
  182. package/dist/exports/shared.js.map +1 -1
  183. package/dist/fields/baseFields/authorship/index.d.ts +1 -2
  184. package/dist/fields/baseFields/authorship/index.d.ts.map +1 -1
  185. package/dist/fields/baseFields/authorship/index.js +0 -12
  186. package/dist/fields/baseFields/authorship/index.js.map +1 -1
  187. package/dist/fields/config/client.js.map +1 -1
  188. package/dist/fields/config/reservedFieldNames.d.ts.map +1 -1
  189. package/dist/fields/config/reservedFieldNames.js.map +1 -1
  190. package/dist/fields/config/types.d.ts.map +1 -1
  191. package/dist/fields/config/types.js.map +1 -1
  192. package/dist/fields/hooks/afterChange/promise.js.map +1 -1
  193. package/dist/fields/hooks/afterRead/index.d.ts +0 -8
  194. package/dist/fields/hooks/afterRead/index.d.ts.map +1 -1
  195. package/dist/fields/hooks/afterRead/index.js +2 -6
  196. package/dist/fields/hooks/afterRead/index.js.map +1 -1
  197. package/dist/fields/hooks/afterRead/promise.d.ts +1 -3
  198. package/dist/fields/hooks/afterRead/promise.d.ts.map +1 -1
  199. package/dist/fields/hooks/afterRead/promise.js +17 -41
  200. package/dist/fields/hooks/afterRead/promise.js.map +1 -1
  201. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.d.ts.map +1 -1
  202. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.js +0 -2
  203. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.js.map +1 -1
  204. package/dist/fields/hooks/afterRead/traverseFields.d.ts +1 -3
  205. package/dist/fields/hooks/afterRead/traverseFields.d.ts.map +1 -1
  206. package/dist/fields/hooks/afterRead/traverseFields.js +2 -4
  207. package/dist/fields/hooks/afterRead/traverseFields.js.map +1 -1
  208. package/dist/fields/hooks/afterRead/virtualFieldPopulationPromise.d.ts.map +1 -1
  209. package/dist/fields/hooks/afterRead/virtualFieldPopulationPromise.js +0 -3
  210. package/dist/fields/hooks/afterRead/virtualFieldPopulationPromise.js.map +1 -1
  211. package/dist/fields/hooks/beforeChange/flattenValidationData.d.ts +14 -0
  212. package/dist/fields/hooks/beforeChange/flattenValidationData.d.ts.map +1 -0
  213. package/dist/fields/hooks/beforeChange/flattenValidationData.js +36 -0
  214. package/dist/fields/hooks/beforeChange/flattenValidationData.js.map +1 -0
  215. package/dist/fields/hooks/beforeChange/promise.d.ts +2 -1
  216. package/dist/fields/hooks/beforeChange/promise.d.ts.map +1 -1
  217. package/dist/fields/hooks/beforeChange/promise.js +96 -22
  218. package/dist/fields/hooks/beforeChange/promise.js.map +1 -1
  219. package/dist/fields/hooks/beforeChange/traverseFields.d.ts +2 -1
  220. package/dist/fields/hooks/beforeChange/traverseFields.d.ts.map +1 -1
  221. package/dist/fields/hooks/beforeChange/traverseFields.js +2 -1
  222. package/dist/fields/hooks/beforeChange/traverseFields.js.map +1 -1
  223. package/dist/fields/hooks/beforeValidate/promise.d.ts.map +1 -1
  224. package/dist/fields/hooks/beforeValidate/promise.js +0 -8
  225. package/dist/fields/hooks/beforeValidate/promise.js.map +1 -1
  226. package/dist/fields/validations.d.ts.map +1 -1
  227. package/dist/fields/validations.js +4 -1
  228. package/dist/fields/validations.js.map +1 -1
  229. package/dist/globals/config/types.d.ts +2 -6
  230. package/dist/globals/config/types.d.ts.map +1 -1
  231. package/dist/globals/config/types.js.map +1 -1
  232. package/dist/globals/operations/countGlobalVersions.d.ts.map +1 -1
  233. package/dist/globals/operations/countGlobalVersions.js +0 -7
  234. package/dist/globals/operations/countGlobalVersions.js.map +1 -1
  235. package/dist/globals/operations/findOne.d.ts.map +1 -1
  236. package/dist/globals/operations/findOne.js +0 -7
  237. package/dist/globals/operations/findOne.js.map +1 -1
  238. package/dist/globals/operations/findVersionByID.d.ts.map +1 -1
  239. package/dist/globals/operations/findVersionByID.js +6 -6
  240. package/dist/globals/operations/findVersionByID.js.map +1 -1
  241. package/dist/globals/operations/findVersions.d.ts.map +1 -1
  242. package/dist/globals/operations/findVersions.js +4 -6
  243. package/dist/globals/operations/findVersions.js.map +1 -1
  244. package/dist/globals/operations/local/countVersions.d.ts +0 -5
  245. package/dist/globals/operations/local/countVersions.d.ts.map +1 -1
  246. package/dist/globals/operations/local/countVersions.js.map +1 -1
  247. package/dist/globals/operations/local/findOne.d.ts +0 -5
  248. package/dist/globals/operations/local/findOne.d.ts.map +1 -1
  249. package/dist/globals/operations/local/findOne.js.map +1 -1
  250. package/dist/globals/operations/local/findVersionByID.d.ts +0 -5
  251. package/dist/globals/operations/local/findVersionByID.d.ts.map +1 -1
  252. package/dist/globals/operations/local/findVersionByID.js.map +1 -1
  253. package/dist/globals/operations/local/findVersions.d.ts +0 -5
  254. package/dist/globals/operations/local/findVersions.d.ts.map +1 -1
  255. package/dist/globals/operations/local/findVersions.js.map +1 -1
  256. package/dist/globals/operations/local/restoreVersion.d.ts +0 -5
  257. package/dist/globals/operations/local/restoreVersion.d.ts.map +1 -1
  258. package/dist/globals/operations/local/restoreVersion.js.map +1 -1
  259. package/dist/globals/operations/local/update.d.ts +0 -5
  260. package/dist/globals/operations/local/update.d.ts.map +1 -1
  261. package/dist/globals/operations/local/update.js +18 -61
  262. package/dist/globals/operations/local/update.js.map +1 -1
  263. package/dist/globals/operations/restoreVersion.d.ts +2 -3
  264. package/dist/globals/operations/restoreVersion.d.ts.map +1 -1
  265. package/dist/globals/operations/restoreVersion.js +24 -61
  266. package/dist/globals/operations/restoreVersion.js.map +1 -1
  267. package/dist/globals/operations/update.d.ts.map +1 -1
  268. package/dist/globals/operations/update.js +8 -86
  269. package/dist/globals/operations/update.js.map +1 -1
  270. package/dist/globals/operations/validate.js +1 -1
  271. package/dist/globals/operations/validate.js.map +1 -1
  272. package/dist/hierarchy/addHierarchyToCollection.d.ts.map +1 -1
  273. package/dist/hierarchy/addHierarchyToCollection.js +32 -21
  274. package/dist/hierarchy/addHierarchyToCollection.js.map +1 -1
  275. package/dist/hierarchy/createFolderField.js.map +1 -1
  276. package/dist/hierarchy/getInitialTreeData.d.ts +1 -3
  277. package/dist/hierarchy/getInitialTreeData.d.ts.map +1 -1
  278. package/dist/hierarchy/getInitialTreeData.js +1 -4
  279. package/dist/hierarchy/getInitialTreeData.js.map +1 -1
  280. package/dist/hierarchy/resolveHierarchyCollections.js +9 -3
  281. package/dist/hierarchy/resolveHierarchyCollections.js.map +1 -1
  282. package/dist/hierarchy/utils/computePaths.d.ts.map +1 -1
  283. package/dist/hierarchy/utils/computePaths.js.map +1 -1
  284. package/dist/index.bundled.d.ts +4336 -5501
  285. package/dist/index.d.ts +27 -51
  286. package/dist/index.d.ts.map +1 -1
  287. package/dist/index.js +14 -37
  288. package/dist/index.js.map +1 -1
  289. package/dist/llm-instructions/getInstructionsCollection.d.ts.map +1 -1
  290. package/dist/llm-instructions/getInstructionsCollection.js +2 -0
  291. package/dist/llm-instructions/getInstructionsCollection.js.map +1 -1
  292. package/dist/preferences/keys.d.ts +4 -11
  293. package/dist/preferences/keys.d.ts.map +1 -1
  294. package/dist/preferences/keys.js +3 -10
  295. package/dist/preferences/keys.js.map +1 -1
  296. package/dist/preferences/types.d.ts +0 -19
  297. package/dist/preferences/types.d.ts.map +1 -1
  298. package/dist/preferences/types.js.map +1 -1
  299. package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.js +1 -1
  300. package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.js.map +1 -1
  301. package/dist/types/index.d.ts +0 -13
  302. package/dist/types/index.d.ts.map +1 -1
  303. package/dist/types/index.js.map +1 -1
  304. package/dist/uploads/deleteAssociatedFiles.d.ts.map +1 -1
  305. package/dist/uploads/deleteAssociatedFiles.js +29 -108
  306. package/dist/uploads/deleteAssociatedFiles.js.map +1 -1
  307. package/dist/uploads/endpoints/getFile.d.ts.map +1 -1
  308. package/dist/uploads/endpoints/getFile.js +0 -5
  309. package/dist/uploads/endpoints/getFile.js.map +1 -1
  310. package/dist/uploads/fileExists.d.ts.map +1 -1
  311. package/dist/uploads/fileExists.js +2 -5
  312. package/dist/uploads/fileExists.js.map +1 -1
  313. package/dist/uploads/fileVersioning/archive.d.ts.map +1 -1
  314. package/dist/uploads/fileVersioning/archive.js +1 -15
  315. package/dist/uploads/fileVersioning/archive.js.map +1 -1
  316. package/dist/uploads/fileVersioning/cleanup.d.ts +0 -7
  317. package/dist/uploads/fileVersioning/cleanup.d.ts.map +1 -1
  318. package/dist/uploads/fileVersioning/cleanup.js +0 -12
  319. package/dist/uploads/fileVersioning/cleanup.js.map +1 -1
  320. package/dist/uploads/fileVersioning/cloudStorage.d.ts.map +1 -1
  321. package/dist/uploads/fileVersioning/cloudStorage.js +1 -16
  322. package/dist/uploads/fileVersioning/cloudStorage.js.map +1 -1
  323. package/dist/uploads/fileVersioning/resolveHistoricalFile.js.map +1 -1
  324. package/dist/uploads/formatFilesize.js +1 -1
  325. package/dist/uploads/formatFilesize.js.map +1 -1
  326. package/dist/uploads/generateFileData.d.ts +0 -5
  327. package/dist/uploads/generateFileData.d.ts.map +1 -1
  328. package/dist/uploads/generateFileData.js +2 -74
  329. package/dist/uploads/generateFileData.js.map +1 -1
  330. package/dist/uploads/getBaseFields.d.ts.map +1 -1
  331. package/dist/uploads/getBaseFields.js +29 -46
  332. package/dist/uploads/getBaseFields.js.map +1 -1
  333. package/dist/uploads/getFileContentRequirement.js.map +1 -1
  334. package/dist/uploads/getFileFromUploadInstructions.js.map +1 -1
  335. package/dist/uploads/getSafeFilename.d.ts.map +1 -1
  336. package/dist/uploads/getSafeFilename.js +3 -5
  337. package/dist/uploads/getSafeFilename.js.map +1 -1
  338. package/dist/uploads/safeFetch.js.map +1 -1
  339. package/dist/uploads/stagedUpload.js.map +1 -1
  340. package/dist/uploads/transformers/handleDynamicFileRequest.js +11 -2
  341. package/dist/uploads/transformers/handleDynamicFileRequest.js.map +1 -1
  342. package/dist/uploads/types.d.ts +0 -11
  343. package/dist/uploads/types.d.ts.map +1 -1
  344. package/dist/uploads/types.js.map +1 -1
  345. package/dist/uploads/uploadFiles.d.ts +1 -4
  346. package/dist/uploads/uploadFiles.d.ts.map +1 -1
  347. package/dist/uploads/uploadFiles.js +5 -29
  348. package/dist/uploads/uploadFiles.js.map +1 -1
  349. package/dist/utilities/addSelectGenericsToGeneretedTypes.d.ts.map +1 -1
  350. package/dist/utilities/addSelectGenericsToGeneretedTypes.js +0 -1
  351. package/dist/utilities/addSelectGenericsToGeneretedTypes.js.map +1 -1
  352. package/dist/utilities/appendDateTimezoneSelectFields.js.map +1 -1
  353. package/dist/utilities/assertNoValidationWrite.d.ts.map +1 -1
  354. package/dist/utilities/assertNoValidationWrite.js +0 -4
  355. package/dist/utilities/assertNoValidationWrite.js.map +1 -1
  356. package/dist/utilities/checkDocumentLockStatus.d.ts +6 -15
  357. package/dist/utilities/checkDocumentLockStatus.d.ts.map +1 -1
  358. package/dist/utilities/checkDocumentLockStatus.js +11 -44
  359. package/dist/utilities/checkDocumentLockStatus.js.map +1 -1
  360. package/dist/utilities/cloneValidationRequest.js.map +1 -1
  361. package/dist/utilities/commitTransaction.d.ts +0 -4
  362. package/dist/utilities/commitTransaction.d.ts.map +1 -1
  363. package/dist/utilities/commitTransaction.js +1 -41
  364. package/dist/utilities/commitTransaction.js.map +1 -1
  365. package/dist/utilities/configToJSONSchema.d.ts.map +1 -1
  366. package/dist/utilities/configToJSONSchema.js +2 -18
  367. package/dist/utilities/configToJSONSchema.js.map +1 -1
  368. package/dist/utilities/createPayloadRequest.d.ts +0 -5
  369. package/dist/utilities/createPayloadRequest.d.ts.map +1 -1
  370. package/dist/utilities/createPayloadRequest.js +3 -50
  371. package/dist/utilities/createPayloadRequest.js.map +1 -1
  372. package/dist/utilities/createPayloadRequestFromWebRequest.d.ts +12 -1
  373. package/dist/utilities/createPayloadRequestFromWebRequest.d.ts.map +1 -1
  374. package/dist/utilities/createPayloadRequestFromWebRequest.js +9 -5
  375. package/dist/utilities/createPayloadRequestFromWebRequest.js.map +1 -1
  376. package/dist/utilities/deepCopyObject.js.map +1 -1
  377. package/dist/utilities/documentMatchingWhereExists.js +1 -1
  378. package/dist/utilities/documentMatchingWhereExists.js.map +1 -1
  379. package/dist/utilities/entityInputSchema/validateEntityData.d.ts.map +1 -1
  380. package/dist/utilities/entityInputSchema/validateEntityData.js.map +1 -1
  381. package/dist/utilities/filterDataToSelectedLocales.js.map +1 -1
  382. package/dist/utilities/getEntityPermissions/getEntityPermissions.d.ts.map +1 -1
  383. package/dist/utilities/getEntityPermissions/getEntityPermissions.js +1 -0
  384. package/dist/utilities/getEntityPermissions/getEntityPermissions.js.map +1 -1
  385. package/dist/utilities/getEntityPermissions/populateFieldPermissions.js.map +1 -1
  386. package/dist/utilities/getVersionsConfig.d.ts +4 -0
  387. package/dist/utilities/getVersionsConfig.d.ts.map +1 -1
  388. package/dist/utilities/getVersionsConfig.js +5 -0
  389. package/dist/utilities/getVersionsConfig.js.map +1 -1
  390. package/dist/utilities/handleEndpoints.d.ts.map +1 -1
  391. package/dist/utilities/handleEndpoints.js +10 -9
  392. package/dist/utilities/handleEndpoints.js.map +1 -1
  393. package/dist/utilities/httpStatus.d.ts +0 -2
  394. package/dist/utilities/httpStatus.d.ts.map +1 -1
  395. package/dist/utilities/httpStatus.js +1 -3
  396. package/dist/utilities/httpStatus.js.map +1 -1
  397. package/dist/utilities/initTransaction.d.ts.map +1 -1
  398. package/dist/utilities/initTransaction.js +7 -35
  399. package/dist/utilities/initTransaction.js.map +1 -1
  400. package/dist/utilities/killTransaction.d.ts.map +1 -1
  401. package/dist/utilities/killTransaction.js +0 -27
  402. package/dist/utilities/killTransaction.js.map +1 -1
  403. package/dist/utilities/parseParams/index.js.map +1 -1
  404. package/dist/utilities/parseValidationLocale.js.map +1 -1
  405. package/dist/utilities/sanitizePopulateParam.js.map +1 -1
  406. package/dist/utilities/telemetry/conf/index.d.ts +4 -1
  407. package/dist/utilities/telemetry/conf/index.d.ts.map +1 -1
  408. package/dist/utilities/telemetry/conf/index.js.map +1 -1
  409. package/dist/utilities/telemetry/featureInfo/getFeatureInfo.js.map +1 -1
  410. package/dist/versions/allLocalesPublicationStatus.js.map +1 -1
  411. package/dist/versions/buildCollectionFields.d.ts.map +1 -1
  412. package/dist/versions/buildCollectionFields.js +0 -23
  413. package/dist/versions/buildCollectionFields.js.map +1 -1
  414. package/dist/versions/buildGlobalFields.d.ts.map +1 -1
  415. package/dist/versions/buildGlobalFields.js +0 -14
  416. package/dist/versions/buildGlobalFields.js.map +1 -1
  417. package/dist/versions/buildVersionCompoundIndexes.d.ts.map +1 -1
  418. package/dist/versions/buildVersionCompoundIndexes.js +2 -8
  419. package/dist/versions/buildVersionCompoundIndexes.js.map +1 -1
  420. package/dist/versions/deleteCollectionVersions.d.ts +1 -2
  421. package/dist/versions/deleteCollectionVersions.d.ts.map +1 -1
  422. package/dist/versions/deleteCollectionVersions.js +8 -37
  423. package/dist/versions/deleteCollectionVersions.js.map +1 -1
  424. package/dist/versions/deleteScheduledPublishJobs.d.ts.map +1 -1
  425. package/dist/versions/deleteScheduledPublishJobs.js +0 -4
  426. package/dist/versions/deleteScheduledPublishJobs.js.map +1 -1
  427. package/dist/versions/drafts/appendVersionToQueryKey.d.ts.map +1 -1
  428. package/dist/versions/drafts/appendVersionToQueryKey.js +1 -9
  429. package/dist/versions/drafts/appendVersionToQueryKey.js.map +1 -1
  430. package/dist/versions/drafts/replaceWithDraftIfAvailable.d.ts.map +1 -1
  431. package/dist/versions/drafts/replaceWithDraftIfAvailable.js +1 -8
  432. package/dist/versions/drafts/replaceWithDraftIfAvailable.js.map +1 -1
  433. package/dist/versions/enforceMaxVersions.d.ts +0 -1
  434. package/dist/versions/enforceMaxVersions.d.ts.map +1 -1
  435. package/dist/versions/enforceMaxVersions.js +6 -22
  436. package/dist/versions/enforceMaxVersions.js.map +1 -1
  437. package/dist/versions/getLatestCollectionVersion.d.ts.map +1 -1
  438. package/dist/versions/getLatestCollectionVersion.js +2 -10
  439. package/dist/versions/getLatestCollectionVersion.js.map +1 -1
  440. package/dist/versions/getLatestGlobalVersion.d.ts +2 -6
  441. package/dist/versions/getLatestGlobalVersion.d.ts.map +1 -1
  442. package/dist/versions/getLatestGlobalVersion.js +21 -65
  443. package/dist/versions/getLatestGlobalVersion.js.map +1 -1
  444. package/dist/versions/isInheritedReadVersionsAccess.js.map +1 -1
  445. package/dist/versions/saveVersion.d.ts +0 -7
  446. package/dist/versions/saveVersion.d.ts.map +1 -1
  447. package/dist/versions/saveVersion.js +4 -27
  448. package/dist/versions/saveVersion.js.map +1 -1
  449. package/dist/versions/updateLatestVersion.d.ts +0 -1
  450. package/dist/versions/updateLatestVersion.d.ts.map +1 -1
  451. package/dist/versions/updateLatestVersion.js +7 -24
  452. package/dist/versions/updateLatestVersion.js.map +1 -1
  453. package/package.json +30 -28
  454. package/skills/payload/reference/ENDPOINTS.md +3 -9
  455. package/skills/payload/reference/PLUGIN-DEVELOPMENT.md +4 -4
  456. package/dist/admin/getAdminPreferences.d.ts +0 -10
  457. package/dist/admin/getAdminPreferences.d.ts.map +0 -1
  458. package/dist/admin/getAdminPreferences.js +0 -53
  459. package/dist/admin/getAdminPreferences.js.map +0 -1
  460. package/dist/admin/getRequestBranch.d.ts +0 -6
  461. package/dist/admin/getRequestBranch.d.ts.map +0 -1
  462. package/dist/admin/getRequestBranch.js +0 -17
  463. package/dist/admin/getRequestBranch.js.map +0 -1
  464. package/dist/branching/appendBranchFilter.d.ts +0 -30
  465. package/dist/branching/appendBranchFilter.d.ts.map +0 -1
  466. package/dist/branching/appendBranchFilter.js +0 -105
  467. package/dist/branching/appendBranchFilter.js.map +0 -1
  468. package/dist/branching/assertBranchAccess.d.ts +0 -10
  469. package/dist/branching/assertBranchAccess.d.ts.map +0 -1
  470. package/dist/branching/assertBranchAccess.js +0 -36
  471. package/dist/branching/assertBranchAccess.js.map +0 -1
  472. package/dist/branching/assertBranchActionAccess.d.ts +0 -10
  473. package/dist/branching/assertBranchActionAccess.d.ts.map +0 -1
  474. package/dist/branching/assertBranchActionAccess.js +0 -15
  475. package/dist/branching/assertBranchActionAccess.js.map +0 -1
  476. package/dist/branching/assertBranchCreatedDocumentsUnreferenced.d.ts +0 -53
  477. package/dist/branching/assertBranchCreatedDocumentsUnreferenced.d.ts.map +0 -1
  478. package/dist/branching/assertBranchCreatedDocumentsUnreferenced.js +0 -833
  479. package/dist/branching/assertBranchCreatedDocumentsUnreferenced.js.map +0 -1
  480. package/dist/branching/assertBranchReadable.d.ts +0 -36
  481. package/dist/branching/assertBranchReadable.d.ts.map +0 -1
  482. package/dist/branching/assertBranchReadable.js +0 -83
  483. package/dist/branching/assertBranchReadable.js.map +0 -1
  484. package/dist/branching/assertBranchUpdateAccess.d.ts +0 -8
  485. package/dist/branching/assertBranchUpdateAccess.d.ts.map +0 -1
  486. package/dist/branching/assertBranchUpdateAccess.js +0 -12
  487. package/dist/branching/assertBranchUpdateAccess.js.map +0 -1
  488. package/dist/branching/assertBranchWritable.d.ts +0 -18
  489. package/dist/branching/assertBranchWritable.d.ts.map +0 -1
  490. package/dist/branching/assertBranchWritable.js +0 -46
  491. package/dist/branching/assertBranchWritable.js.map +0 -1
  492. package/dist/branching/branchIDs.d.ts +0 -38
  493. package/dist/branching/branchIDs.d.ts.map +0 -1
  494. package/dist/branching/branchIDs.js +0 -113
  495. package/dist/branching/branchIDs.js.map +0 -1
  496. package/dist/branching/branchSelect.d.ts +0 -42
  497. package/dist/branching/branchSelect.d.ts.map +0 -1
  498. package/dist/branching/branchSelect.js +0 -97
  499. package/dist/branching/branchSelect.js.map +0 -1
  500. package/dist/branching/checkFieldAccess.d.ts +0 -21
  501. package/dist/branching/checkFieldAccess.d.ts.map +0 -1
  502. package/dist/branching/checkFieldAccess.js +0 -238
  503. package/dist/branching/checkFieldAccess.js.map +0 -1
  504. package/dist/branching/collections.d.ts +0 -14
  505. package/dist/branching/collections.d.ts.map +0 -1
  506. package/dist/branching/collections.js +0 -713
  507. package/dist/branching/collections.js.map +0 -1
  508. package/dist/branching/combineBranchAccess.d.ts +0 -6
  509. package/dist/branching/combineBranchAccess.d.ts.map +0 -1
  510. package/dist/branching/combineBranchAccess.js +0 -22
  511. package/dist/branching/combineBranchAccess.js.map +0 -1
  512. package/dist/branching/copyUploadFilesToBranch.d.ts +0 -9
  513. package/dist/branching/copyUploadFilesToBranch.d.ts.map +0 -1
  514. package/dist/branching/copyUploadFilesToBranch.js +0 -126
  515. package/dist/branching/copyUploadFilesToBranch.js.map +0 -1
  516. package/dist/branching/createShadowRow.d.ts +0 -70
  517. package/dist/branching/createShadowRow.d.ts.map +0 -1
  518. package/dist/branching/createShadowRow.js +0 -296
  519. package/dist/branching/createShadowRow.js.map +0 -1
  520. package/dist/branching/discard.d.ts +0 -52
  521. package/dist/branching/discard.d.ts.map +0 -1
  522. package/dist/branching/discard.js +0 -428
  523. package/dist/branching/discard.js.map +0 -1
  524. package/dist/branching/effectiveOperations.d.ts +0 -55
  525. package/dist/branching/effectiveOperations.d.ts.map +0 -1
  526. package/dist/branching/effectiveOperations.js +0 -472
  527. package/dist/branching/effectiveOperations.js.map +0 -1
  528. package/dist/branching/endpoints/discard.d.ts +0 -15
  529. package/dist/branching/endpoints/discard.d.ts.map +0 -1
  530. package/dist/branching/endpoints/discard.js +0 -55
  531. package/dist/branching/endpoints/discard.js.map +0 -1
  532. package/dist/branching/endpoints/merge.d.ts +0 -34
  533. package/dist/branching/endpoints/merge.d.ts.map +0 -1
  534. package/dist/branching/endpoints/merge.js +0 -119
  535. package/dist/branching/endpoints/merge.js.map +0 -1
  536. package/dist/branching/forkDocument.d.ts +0 -20
  537. package/dist/branching/forkDocument.d.ts.map +0 -1
  538. package/dist/branching/forkDocument.js +0 -169
  539. package/dist/branching/forkDocument.js.map +0 -1
  540. package/dist/branching/globalMergeWrites.d.ts +0 -21
  541. package/dist/branching/globalMergeWrites.d.ts.map +0 -1
  542. package/dist/branching/globalMergeWrites.js +0 -146
  543. package/dist/branching/globalMergeWrites.js.map +0 -1
  544. package/dist/branching/globals.d.ts +0 -49
  545. package/dist/branching/globals.d.ts.map +0 -1
  546. package/dist/branching/globals.js +0 -197
  547. package/dist/branching/globals.js.map +0 -1
  548. package/dist/branching/hooks.d.ts +0 -24
  549. package/dist/branching/hooks.d.ts.map +0 -1
  550. package/dist/branching/hooks.js +0 -92
  551. package/dist/branching/hooks.js.map +0 -1
  552. package/dist/branching/injectBranchFields.d.ts +0 -40
  553. package/dist/branching/injectBranchFields.d.ts.map +0 -1
  554. package/dist/branching/injectBranchFields.js +0 -229
  555. package/dist/branching/injectBranchFields.js.map +0 -1
  556. package/dist/branching/merge/applyMergeChange.d.ts +0 -27
  557. package/dist/branching/merge/applyMergeChange.d.ts.map +0 -1
  558. package/dist/branching/merge/applyMergeChange.js +0 -853
  559. package/dist/branching/merge/applyMergeChange.js.map +0 -1
  560. package/dist/branching/merge/branchMergeStatus.d.ts +0 -12
  561. package/dist/branching/merge/branchMergeStatus.d.ts.map +0 -1
  562. package/dist/branching/merge/branchMergeStatus.js +0 -74
  563. package/dist/branching/merge/branchMergeStatus.js.map +0 -1
  564. package/dist/branching/merge/executeMerge.d.ts +0 -22
  565. package/dist/branching/merge/executeMerge.d.ts.map +0 -1
  566. package/dist/branching/merge/executeMerge.js +0 -600
  567. package/dist/branching/merge/executeMerge.js.map +0 -1
  568. package/dist/branching/merge/finalizeMerge.d.ts +0 -40
  569. package/dist/branching/merge/finalizeMerge.d.ts.map +0 -1
  570. package/dist/branching/merge/finalizeMerge.js +0 -237
  571. package/dist/branching/merge/finalizeMerge.js.map +0 -1
  572. package/dist/branching/merge/mergeLedger.d.ts +0 -40
  573. package/dist/branching/merge/mergeLedger.d.ts.map +0 -1
  574. package/dist/branching/merge/mergeLedger.js +0 -130
  575. package/dist/branching/merge/mergeLedger.js.map +0 -1
  576. package/dist/branching/merge/prepareMerge.d.ts +0 -41
  577. package/dist/branching/merge/prepareMerge.d.ts.map +0 -1
  578. package/dist/branching/merge/prepareMerge.js +0 -234
  579. package/dist/branching/merge/prepareMerge.js.map +0 -1
  580. package/dist/branching/merge/recoverMerge.d.ts +0 -16
  581. package/dist/branching/merge/recoverMerge.d.ts.map +0 -1
  582. package/dist/branching/merge/recoverMerge.js +0 -199
  583. package/dist/branching/merge/recoverMerge.js.map +0 -1
  584. package/dist/branching/merge/retryFailedCleanups.d.ts +0 -36
  585. package/dist/branching/merge/retryFailedCleanups.d.ts.map +0 -1
  586. package/dist/branching/merge/retryFailedCleanups.js +0 -335
  587. package/dist/branching/merge/retryFailedCleanups.js.map +0 -1
  588. package/dist/branching/merge/utilities.d.ts +0 -35
  589. package/dist/branching/merge/utilities.d.ts.map +0 -1
  590. package/dist/branching/merge/utilities.js +0 -54
  591. package/dist/branching/merge/utilities.js.map +0 -1
  592. package/dist/branching/merge.d.ts +0 -88
  593. package/dist/branching/merge.d.ts.map +0 -1
  594. package/dist/branching/merge.js +0 -163
  595. package/dist/branching/merge.js.map +0 -1
  596. package/dist/branching/mergeWriteGuard.d.ts +0 -20
  597. package/dist/branching/mergeWriteGuard.d.ts.map +0 -1
  598. package/dist/branching/mergeWriteGuard.js +0 -27
  599. package/dist/branching/mergeWriteGuard.js.map +0 -1
  600. package/dist/branching/preflight.d.ts +0 -71
  601. package/dist/branching/preflight.d.ts.map +0 -1
  602. package/dist/branching/preflight.js +0 -757
  603. package/dist/branching/preflight.js.map +0 -1
  604. package/dist/branching/readLocalizedBranchWrite.d.ts +0 -14
  605. package/dist/branching/readLocalizedBranchWrite.d.ts.map +0 -1
  606. package/dist/branching/readLocalizedBranchWrite.js +0 -90
  607. package/dist/branching/readLocalizedBranchWrite.js.map +0 -1
  608. package/dist/branching/readMergeSnapshot.d.ts +0 -18
  609. package/dist/branching/readMergeSnapshot.d.ts.map +0 -1
  610. package/dist/branching/readMergeSnapshot.js +0 -99
  611. package/dist/branching/readMergeSnapshot.js.map +0 -1
  612. package/dist/branching/resolveBranch.d.ts +0 -153
  613. package/dist/branching/resolveBranch.d.ts.map +0 -1
  614. package/dist/branching/resolveBranch.js +0 -363
  615. package/dist/branching/resolveBranch.js.map +0 -1
  616. package/dist/branching/resolveBranchActionAccess.d.ts +0 -8
  617. package/dist/branching/resolveBranchActionAccess.d.ts.map +0 -1
  618. package/dist/branching/resolveBranchActionAccess.js +0 -9
  619. package/dist/branching/resolveBranchActionAccess.js.map +0 -1
  620. package/dist/branching/resolveBranchQuery.d.ts +0 -48
  621. package/dist/branching/resolveBranchQuery.d.ts.map +0 -1
  622. package/dist/branching/resolveBranchQuery.js +0 -115
  623. package/dist/branching/resolveBranchQuery.js.map +0 -1
  624. package/dist/branching/resolveBranchRowID.d.ts +0 -22
  625. package/dist/branching/resolveBranchRowID.d.ts.map +0 -1
  626. package/dist/branching/resolveBranchRowID.js +0 -70
  627. package/dist/branching/resolveBranchRowID.js.map +0 -1
  628. package/dist/branching/sanitizeBranchingConfig.d.ts +0 -31
  629. package/dist/branching/sanitizeBranchingConfig.d.ts.map +0 -1
  630. package/dist/branching/sanitizeBranchingConfig.js +0 -110
  631. package/dist/branching/sanitizeBranchingConfig.js.map +0 -1
  632. package/dist/branching/schedule/job.d.ts +0 -51
  633. package/dist/branching/schedule/job.d.ts.map +0 -1
  634. package/dist/branching/schedule/job.js +0 -151
  635. package/dist/branching/schedule/job.js.map +0 -1
  636. package/dist/branching/selectBranchChanges.d.ts +0 -8
  637. package/dist/branching/selectBranchChanges.d.ts.map +0 -1
  638. package/dist/branching/selectBranchChanges.js +0 -9
  639. package/dist/branching/selectBranchChanges.js.map +0 -1
  640. package/dist/branching/stripBranchMergeData.d.ts +0 -11
  641. package/dist/branching/stripBranchMergeData.d.ts.map +0 -1
  642. package/dist/branching/stripBranchMergeData.js +0 -20
  643. package/dist/branching/stripBranchMergeData.js.map +0 -1
  644. package/dist/branching/tombstone.d.ts +0 -91
  645. package/dist/branching/tombstone.d.ts.map +0 -1
  646. package/dist/branching/tombstone.js +0 -546
  647. package/dist/branching/tombstone.js.map +0 -1
  648. package/dist/branching/types.d.ts +0 -158
  649. package/dist/branching/types.d.ts.map +0 -1
  650. package/dist/branching/types.js +0 -54
  651. package/dist/branching/types.js.map +0 -1
  652. package/dist/branching/validation.d.ts +0 -47
  653. package/dist/branching/validation.d.ts.map +0 -1
  654. package/dist/branching/validation.js +0 -272
  655. package/dist/branching/validation.js.map +0 -1
  656. package/dist/branching/versions.d.ts +0 -131
  657. package/dist/branching/versions.d.ts.map +0 -1
  658. package/dist/branching/versions.js +0 -572
  659. package/dist/branching/versions.js.map +0 -1
  660. package/dist/collections/operations/utilities/createOperationRetryRequest.d.ts +0 -23
  661. package/dist/collections/operations/utilities/createOperationRetryRequest.d.ts.map +0 -1
  662. package/dist/collections/operations/utilities/createOperationRetryRequest.js +0 -683
  663. package/dist/collections/operations/utilities/createOperationRetryRequest.js.map +0 -1
  664. package/dist/fields/hooks/beforeValidate/throwOnAccessDenied.d.ts +0 -3
  665. package/dist/fields/hooks/beforeValidate/throwOnAccessDenied.d.ts.map +0 -1
  666. package/dist/fields/hooks/beforeValidate/throwOnAccessDenied.js +0 -3
  667. package/dist/fields/hooks/beforeValidate/throwOnAccessDenied.js.map +0 -1
  668. package/dist/uploads/appendBranchToFileURL.d.ts +0 -6
  669. package/dist/uploads/appendBranchToFileURL.d.ts.map +0 -1
  670. package/dist/uploads/appendBranchToFileURL.js +0 -24
  671. package/dist/uploads/appendBranchToFileURL.js.map +0 -1
  672. package/dist/uploads/deleteUploadFilesExclusiveToDocument.d.ts +0 -15
  673. package/dist/uploads/deleteUploadFilesExclusiveToDocument.d.ts.map +0 -1
  674. package/dist/uploads/deleteUploadFilesExclusiveToDocument.js +0 -62
  675. package/dist/uploads/deleteUploadFilesExclusiveToDocument.js.map +0 -1
  676. package/dist/uploads/fileIdentity.d.ts +0 -24
  677. package/dist/uploads/fileIdentity.d.ts.map +0 -1
  678. package/dist/uploads/fileIdentity.js +0 -36
  679. package/dist/uploads/fileIdentity.js.map +0 -1
  680. package/dist/uploads/fileQuarantine.d.ts +0 -17
  681. package/dist/uploads/fileQuarantine.d.ts.map +0 -1
  682. package/dist/uploads/fileQuarantine.js +0 -52
  683. package/dist/uploads/fileQuarantine.js.map +0 -1
  684. package/dist/uploads/linkFileWithoutOverwrite.d.ts +0 -13
  685. package/dist/uploads/linkFileWithoutOverwrite.d.ts.map +0 -1
  686. package/dist/uploads/linkFileWithoutOverwrite.js +0 -13
  687. package/dist/uploads/linkFileWithoutOverwrite.js.map +0 -1
  688. package/dist/uploads/uploadFileRollback.d.ts +0 -31
  689. package/dist/uploads/uploadFileRollback.d.ts.map +0 -1
  690. package/dist/uploads/uploadFileRollback.js +0 -269
  691. package/dist/uploads/uploadFileRollback.js.map +0 -1
  692. package/dist/utilities/extractRelationshipID.d.ts +0 -4
  693. package/dist/utilities/extractRelationshipID.d.ts.map +0 -1
  694. package/dist/utilities/extractRelationshipID.js +0 -14
  695. package/dist/utilities/extractRelationshipID.js.map +0 -1
  696. package/dist/utilities/transactionCallbacks.d.ts +0 -77
  697. package/dist/utilities/transactionCallbacks.d.ts.map +0 -1
  698. package/dist/utilities/transactionCallbacks.js +0 -299
  699. package/dist/utilities/transactionCallbacks.js.map +0 -1
  700. package/dist/utilities/transactionMutationTracker.d.ts +0 -21
  701. package/dist/utilities/transactionMutationTracker.d.ts.map +0 -1
  702. package/dist/utilities/transactionMutationTracker.js +0 -71
  703. package/dist/utilities/transactionMutationTracker.js.map +0 -1
@@ -1,197 +0,0 @@
1
- import { loadBranchRow, resolveBranch, setBranchRow } from './resolveBranch.js';
2
- import { branchChangesCollectionSlug, branchesCollectionSlug, branchField, MAIN_BRANCH } from './types.js';
3
- const bypassed = (branch, req)=>branch === false || !req?.payload || Boolean(req.context?._branchBypass);
4
- const recordedGlobalsKey = '_branchRecordedGlobals';
5
- const activeBranch = ({ branch, globalSlug, req })=>{
6
- if (bypassed(branch, req)) {
7
- return null;
8
- }
9
- const branching = req.payload.config?.branching;
10
- if (!branching?.enabled || !branching.branchableGlobals.has(globalSlug)) {
11
- return null;
12
- }
13
- return branch === false ? null : branch ?? resolveBranch(req);
14
- };
15
- /**
16
- * Branch predicate for reading a global.
17
- *
18
- * Unlike collections, this does not have to resolve everything inside one
19
- * query: a global is a single document, so there is no result set to paginate
20
- * or count and nothing a post-query step could get wrong. The query fetches the
21
- * branch's row and main's row together and `pickBranchGlobal` prefers the
22
- * branch's — one round trip, at most two rows.
23
- */ export const resolveBranchGlobalQuery = ({ branch, globalSlug, req, where })=>{
24
- const active = activeBranch({
25
- branch,
26
- globalSlug,
27
- req
28
- });
29
- if (!active) {
30
- return where;
31
- }
32
- const base = where && Object.keys(where).length ? [
33
- where
34
- ] : [];
35
- if (active === MAIN_BRANCH) {
36
- return {
37
- and: [
38
- ...base,
39
- {
40
- [branchField]: {
41
- equals: MAIN_BRANCH
42
- }
43
- }
44
- ]
45
- };
46
- }
47
- return {
48
- and: [
49
- ...base,
50
- {
51
- [branchField]: {
52
- in: [
53
- active,
54
- MAIN_BRANCH
55
- ]
56
- }
57
- }
58
- ]
59
- };
60
- };
61
- /** True when the read should fetch two rows so the branch's copy can win. */ export const branchGlobalNeedsBothRows = (args)=>{
62
- const active = activeBranch(args);
63
- return Boolean(active) && active !== MAIN_BRANCH;
64
- };
65
- /** Picks the branch's copy of a global when it has one, else main's. */ export const pickBranchGlobal = (docs, branch)=>docs.find((doc)=>doc?.[branchField] === branch) ?? docs[0];
66
- /**
67
- * The branch a global write should be scoped to, or `null` on main.
68
- *
69
- * Storage differs too much between adapters to upsert the branch's copy here —
70
- * Mongo keeps every global in one discriminated collection and Drizzle gives each
71
- * its own table, so each adapter performs the upsert. The global operation records
72
- * the change after that adapter write succeeds.
73
- */ export const resolveBranchGlobalWrite = (args)=>{
74
- const active = activeBranch(args);
75
- return active && active !== MAIN_BRANCH ? active : null;
76
- };
77
- /** Registers a global as changed on a branch, if it is not already. */ export const recordBranchGlobalChange = async ({ branch, globalSlug, req })=>{
78
- // Every write to a branched global asks whether it is already registered. The answer
79
- // cannot change within a request except by this function, so it is remembered — which
80
- // matters for a request that writes several globals, or one global repeatedly.
81
- const context = req.context;
82
- const recorded = context?.[recordedGlobalsKey] ?? new Set();
83
- const key = `${branch}:${globalSlug}`;
84
- if (context && !context[recordedGlobalsKey]) {
85
- context[recordedGlobalsKey] = recorded;
86
- }
87
- if (recorded.has(key)) {
88
- return;
89
- }
90
- if (req.payload.db.upsertBranchGlobalChange) {
91
- await req.payload.db.upsertBranchGlobalChange({
92
- branch,
93
- globalSlug,
94
- req
95
- });
96
- await reopenBranchForGlobalChange({
97
- branch,
98
- req: req
99
- });
100
- recorded.add(key);
101
- return;
102
- }
103
- const existing = await req.payload.find({
104
- collection: branchChangesCollectionSlug,
105
- limit: 1,
106
- overrideAccess: true,
107
- pagination: false,
108
- req: req,
109
- where: {
110
- and: [
111
- {
112
- branch: {
113
- equals: branch
114
- }
115
- },
116
- {
117
- globalSlug: {
118
- equals: globalSlug
119
- }
120
- }
121
- ]
122
- }
123
- });
124
- if (existing.docs.length) {
125
- recorded.add(key);
126
- return;
127
- }
128
- await req.payload.create({
129
- collection: branchChangesCollectionSlug,
130
- data: {
131
- branch,
132
- entityType: 'global',
133
- globalSlug,
134
- operation: 'update'
135
- },
136
- overrideAccess: true,
137
- req: req
138
- });
139
- recorded.add(key);
140
- };
141
- const reopenBranchForGlobalChange = async ({ branch, req })=>{
142
- const row = await loadBranchRow({
143
- branch,
144
- req
145
- });
146
- if (row?.status !== 'merged') {
147
- return;
148
- }
149
- const reopened = await req.payload.update({
150
- id: row.id,
151
- collection: branchesCollectionSlug,
152
- data: {
153
- mergedAt: null,
154
- status: 'open'
155
- },
156
- overrideAccess: true,
157
- req
158
- });
159
- setBranchRow({
160
- branch,
161
- req,
162
- row: reopened
163
- });
164
- };
165
- /**
166
- * Branch predicate for global version reads.
167
- *
168
- * Strict equality rather than the read-through used for the global itself: a
169
- * version list must not interleave two branches' histories, and ordering by
170
- * timestamp would pick between them nondeterministically. A branch that has
171
- * never touched the global simply has no versions of it, and the global read
172
- * still falls back to main.
173
- */ export const resolveBranchGlobalVersionQuery = ({ branch, globalSlug, req, where })=>{
174
- const active = activeBranch({
175
- branch,
176
- globalSlug,
177
- req
178
- });
179
- if (!active) {
180
- return where;
181
- }
182
- const base = where && Object.keys(where).length ? [
183
- where
184
- ] : [];
185
- return {
186
- and: [
187
- ...base,
188
- {
189
- [branchField]: {
190
- equals: active
191
- }
192
- }
193
- ]
194
- };
195
- };
196
-
197
- //# sourceMappingURL=globals.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/branching/globals.ts"],"sourcesContent":["import type { PayloadRequest, Where } from '../types/index.js'\n\nimport { loadBranchRow, resolveBranch, setBranchRow } from './resolveBranch.js'\nimport {\n branchChangesCollectionSlug,\n branchesCollectionSlug,\n branchField,\n MAIN_BRANCH,\n} from './types.js'\n\ntype BaseArgs = {\n branch?: false | string\n globalSlug: string\n req?: Partial<PayloadRequest>\n}\n\nconst bypassed = (branch: false | string | undefined, req?: Partial<PayloadRequest>): boolean =>\n branch === false ||\n !req?.payload ||\n Boolean((req.context as Record<string, unknown> | undefined)?._branchBypass)\n\nconst recordedGlobalsKey = '_branchRecordedGlobals'\n\nconst activeBranch = ({ branch, globalSlug, req }: BaseArgs): null | string => {\n if (bypassed(branch, req)) {\n return null\n }\n\n const branching = req!.payload!.config?.branching\n\n if (!branching?.enabled || !branching.branchableGlobals.has(globalSlug)) {\n return null\n }\n\n return branch === false ? null : (branch ?? resolveBranch(req as PayloadRequest))\n}\n\n/**\n * Branch predicate for reading a global.\n *\n * Unlike collections, this does not have to resolve everything inside one\n * query: a global is a single document, so there is no result set to paginate\n * or count and nothing a post-query step could get wrong. The query fetches the\n * branch's row and main's row together and `pickBranchGlobal` prefers the\n * branch's — one round trip, at most two rows.\n */\nexport const resolveBranchGlobalQuery = ({\n branch,\n globalSlug,\n req,\n where,\n}: { where: undefined | Where } & BaseArgs): undefined | Where => {\n const active = activeBranch({ branch, globalSlug, req })\n\n if (!active) {\n return where\n }\n\n const base = where && Object.keys(where).length ? [where] : []\n\n if (active === MAIN_BRANCH) {\n return { and: [...base, { [branchField]: { equals: MAIN_BRANCH } }] }\n }\n\n return { and: [...base, { [branchField]: { in: [active, MAIN_BRANCH] } }] }\n}\n\n/** True when the read should fetch two rows so the branch's copy can win. */\nexport const branchGlobalNeedsBothRows = (args: BaseArgs): boolean => {\n const active = activeBranch(args)\n\n return Boolean(active) && active !== MAIN_BRANCH\n}\n\n/** Picks the branch's copy of a global when it has one, else main's. */\nexport const pickBranchGlobal = <T extends Record<string, any>>(\n docs: T[],\n branch: string,\n): T | undefined => docs.find((doc) => doc?.[branchField] === branch) ?? docs[0]\n\n/**\n * The branch a global write should be scoped to, or `null` on main.\n *\n * Storage differs too much between adapters to upsert the branch's copy here —\n * Mongo keeps every global in one discriminated collection and Drizzle gives each\n * its own table, so each adapter performs the upsert. The global operation records\n * the change after that adapter write succeeds.\n */\nexport const resolveBranchGlobalWrite = (args: BaseArgs): null | string => {\n const active = activeBranch(args)\n\n return active && active !== MAIN_BRANCH ? active : null\n}\n\n/** Registers a global as changed on a branch, if it is not already. */\nexport const recordBranchGlobalChange = async ({\n branch,\n globalSlug,\n req,\n}: { branch: string } & BaseArgs): Promise<void> => {\n // Every write to a branched global asks whether it is already registered. The answer\n // cannot change within a request except by this function, so it is remembered — which\n // matters for a request that writes several globals, or one global repeatedly.\n const context = req!.context as Record<string, unknown> | undefined\n const recorded = (context?.[recordedGlobalsKey] as Set<string> | undefined) ?? new Set<string>()\n const key = `${branch}:${globalSlug}`\n\n if (context && !context[recordedGlobalsKey]) {\n context[recordedGlobalsKey] = recorded\n }\n\n if (recorded.has(key)) {\n return\n }\n\n if (req!.payload!.db.upsertBranchGlobalChange) {\n await req!.payload!.db.upsertBranchGlobalChange({ branch, globalSlug, req })\n await reopenBranchForGlobalChange({ branch, req: req as PayloadRequest })\n recorded.add(key)\n\n return\n }\n\n const existing = await req!.payload!.find({\n collection: branchChangesCollectionSlug,\n limit: 1,\n overrideAccess: true,\n pagination: false,\n req: req as PayloadRequest,\n where: {\n and: [{ branch: { equals: branch } }, { globalSlug: { equals: globalSlug } }],\n },\n })\n\n if (existing.docs.length) {\n recorded.add(key)\n\n return\n }\n\n await req!.payload!.create({\n collection: branchChangesCollectionSlug,\n data: {\n branch,\n entityType: 'global',\n globalSlug,\n operation: 'update',\n },\n overrideAccess: true,\n req: req as PayloadRequest,\n })\n\n recorded.add(key)\n}\n\nconst reopenBranchForGlobalChange = async ({\n branch,\n req,\n}: {\n branch: string\n req: PayloadRequest\n}): Promise<void> => {\n const row = await loadBranchRow({ branch, req })\n\n if (row?.status !== 'merged') {\n return\n }\n\n const reopened = await req.payload.update({\n id: row.id as number | string,\n collection: branchesCollectionSlug,\n data: { mergedAt: null, status: 'open' },\n overrideAccess: true,\n req,\n })\n\n setBranchRow({ branch, req, row: reopened as Record<string, unknown> })\n}\n\n/**\n * Branch predicate for global version reads.\n *\n * Strict equality rather than the read-through used for the global itself: a\n * version list must not interleave two branches' histories, and ordering by\n * timestamp would pick between them nondeterministically. A branch that has\n * never touched the global simply has no versions of it, and the global read\n * still falls back to main.\n */\nexport const resolveBranchGlobalVersionQuery = ({\n branch,\n globalSlug,\n req,\n where,\n}: { where: undefined | Where } & BaseArgs): undefined | Where => {\n const active = activeBranch({ branch, globalSlug, req })\n\n if (!active) {\n return where\n }\n\n const base = where && Object.keys(where).length ? [where] : []\n\n return { and: [...base, { [branchField]: { equals: active } }] }\n}\n"],"names":["loadBranchRow","resolveBranch","setBranchRow","branchChangesCollectionSlug","branchesCollectionSlug","branchField","MAIN_BRANCH","bypassed","branch","req","payload","Boolean","context","_branchBypass","recordedGlobalsKey","activeBranch","globalSlug","branching","config","enabled","branchableGlobals","has","resolveBranchGlobalQuery","where","active","base","Object","keys","length","and","equals","in","branchGlobalNeedsBothRows","args","pickBranchGlobal","docs","find","doc","resolveBranchGlobalWrite","recordBranchGlobalChange","recorded","Set","key","db","upsertBranchGlobalChange","reopenBranchForGlobalChange","add","existing","collection","limit","overrideAccess","pagination","create","data","entityType","operation","row","status","reopened","update","id","mergedAt","resolveBranchGlobalVersionQuery"],"mappings":"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"}
@@ -1,24 +0,0 @@
1
- import type { CollectionAfterChangeHook, CollectionBeforeChangeHook, CollectionBeforeOperationHook, GlobalBeforeOperationHook } from '../index.js';
2
- /**
3
- * Stamps documents created on a branch so the read predicate can find them.
4
- *
5
- * `_branchDocID` is deliberately left null. For a document created on a branch
6
- * the canonical ID *is* the row's own ID, and the ID rewrite treats a null
7
- * `_branchDocID` as "self" — so setting it would mean an extra write after
8
- * insert to learn the generated ID, for no gain. Only forked rows, which point
9
- * at a different main row, need it populated.
10
- */
11
- export declare const stampBranchOnCreate: CollectionBeforeChangeHook;
12
- /**
13
- * Records a branch-created document in the changeset registry.
14
- *
15
- * The registry is not consulted to *read* branch-created documents — those are
16
- * found by `_branch` alone. It exists so merge and the changed-documents view
17
- * can enumerate what a branch has done.
18
- */
19
- export declare const recordBranchCreate: CollectionAfterChangeHook;
20
- /** Refuses collection writes before they can make changes on a closed branch. */
21
- export declare const assertBranchWritableBeforeCollectionWrite: CollectionBeforeOperationHook;
22
- /** Refuses global writes before they can make changes on a closed branch. */
23
- export declare const assertBranchWritableBeforeGlobalWrite: GlobalBeforeOperationHook;
24
- //# sourceMappingURL=hooks.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/branching/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yBAAyB,EACzB,0BAA0B,EAC1B,6BAA6B,EAC7B,yBAAyB,EAC1B,MAAM,aAAa,CAAA;AAMpB;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,EAAE,0BAWjC,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,EAAE,yBAqChC,CAAA;AAED,iFAAiF;AACjF,eAAO,MAAM,yCAAyC,EAAE,6BAkBvD,CAAA;AAED,6EAA6E;AAC7E,eAAO,MAAM,qCAAqC,EAAE,yBAwBnD,CAAA"}
@@ -1,92 +0,0 @@
1
- import { assertBranchWritable } from './assertBranchWritable.js';
2
- import { addToBranchManifest, refreshRequestDataLoader, resolveBranch } from './resolveBranch.js';
3
- import { branchChangesCollectionSlug, branchField, MAIN_BRANCH } from './types.js';
4
- /**
5
- * Stamps documents created on a branch so the read predicate can find them.
6
- *
7
- * `_branchDocID` is deliberately left null. For a document created on a branch
8
- * the canonical ID *is* the row's own ID, and the ID rewrite treats a null
9
- * `_branchDocID` as "self" — so setting it would mean an extra write after
10
- * insert to learn the generated ID, for no gain. Only forked rows, which point
11
- * at a different main row, need it populated.
12
- */ export const stampBranchOnCreate = ({ data, operation, req })=>{
13
- const branch = resolveBranch(req);
14
- if (branch === MAIN_BRANCH || operation !== 'create') {
15
- return data;
16
- }
17
- return {
18
- ...data,
19
- [branchField]: branch
20
- };
21
- };
22
- /**
23
- * Records a branch-created document in the changeset registry.
24
- *
25
- * The registry is not consulted to *read* branch-created documents — those are
26
- * found by `_branch` alone. It exists so merge and the changed-documents view
27
- * can enumerate what a branch has done.
28
- */ export const recordBranchCreate = async ({ collection, doc, operation, req })=>{
29
- const branch = resolveBranch(req);
30
- if (branch === MAIN_BRANCH || operation !== 'create') {
31
- return doc;
32
- }
33
- await assertBranchWritable({
34
- branch,
35
- req
36
- });
37
- await req.payload.create({
38
- collection: branchChangesCollectionSlug,
39
- data: {
40
- branch,
41
- collectionSlug: collection.slug,
42
- doc: {
43
- relationTo: collection.slug,
44
- value: doc.id
45
- },
46
- documentID: String(doc.id),
47
- entityType: 'collection',
48
- operation: 'create'
49
- },
50
- overrideAccess: true,
51
- req
52
- });
53
- addToBranchManifest({
54
- collectionSlug: collection.slug,
55
- docID: doc.id,
56
- operation: 'create',
57
- req
58
- });
59
- refreshRequestDataLoader(req);
60
- return doc;
61
- };
62
- /** Refuses collection writes before they can make changes on a closed branch. */ export const assertBranchWritableBeforeCollectionWrite = async ({ args, operation, req })=>{
63
- if (operation !== 'create' && operation !== 'restoreVersion' && operation !== 'update') {
64
- return args;
65
- }
66
- const branch = resolveBranch(req);
67
- if (branch === MAIN_BRANCH) {
68
- return args;
69
- }
70
- await assertBranchWritable({
71
- branch,
72
- req
73
- });
74
- return args;
75
- };
76
- /** Refuses global writes before they can make changes on a closed branch. */ export const assertBranchWritableBeforeGlobalWrite = async ({ args, global, operation, req })=>{
77
- if (operation !== 'restoreVersion' && operation !== 'update') {
78
- return args;
79
- }
80
- const branch = resolveBranch(req);
81
- const branching = req.payload.config.branching;
82
- if (branch === MAIN_BRANCH || !branching?.enabled || !branching.branchableGlobals.has(global.slug)) {
83
- return args;
84
- }
85
- await assertBranchWritable({
86
- branch,
87
- req
88
- });
89
- return args;
90
- };
91
-
92
- //# sourceMappingURL=hooks.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/branching/hooks.ts"],"sourcesContent":["import type {\n CollectionAfterChangeHook,\n CollectionBeforeChangeHook,\n CollectionBeforeOperationHook,\n GlobalBeforeOperationHook,\n} from '../index.js'\n\nimport { assertBranchWritable } from './assertBranchWritable.js'\nimport { addToBranchManifest, refreshRequestDataLoader, resolveBranch } from './resolveBranch.js'\nimport { branchChangesCollectionSlug, branchField, MAIN_BRANCH } from './types.js'\n\n/**\n * Stamps documents created on a branch so the read predicate can find them.\n *\n * `_branchDocID` is deliberately left null. For a document created on a branch\n * the canonical ID *is* the row's own ID, and the ID rewrite treats a null\n * `_branchDocID` as \"self\" — so setting it would mean an extra write after\n * insert to learn the generated ID, for no gain. Only forked rows, which point\n * at a different main row, need it populated.\n */\nexport const stampBranchOnCreate: CollectionBeforeChangeHook = ({ data, operation, req }) => {\n const branch = resolveBranch(req)\n\n if (branch === MAIN_BRANCH || operation !== 'create') {\n return data\n }\n\n return {\n ...data,\n [branchField]: branch,\n }\n}\n\n/**\n * Records a branch-created document in the changeset registry.\n *\n * The registry is not consulted to *read* branch-created documents — those are\n * found by `_branch` alone. It exists so merge and the changed-documents view\n * can enumerate what a branch has done.\n */\nexport const recordBranchCreate: CollectionAfterChangeHook = async ({\n collection,\n doc,\n operation,\n req,\n}) => {\n const branch = resolveBranch(req)\n\n if (branch === MAIN_BRANCH || operation !== 'create') {\n return doc\n }\n\n await assertBranchWritable({ branch, req })\n\n await req.payload.create({\n collection: branchChangesCollectionSlug,\n data: {\n branch,\n collectionSlug: collection.slug,\n doc: { relationTo: collection.slug, value: doc.id },\n documentID: String(doc.id),\n entityType: 'collection',\n operation: 'create',\n },\n overrideAccess: true,\n req,\n })\n\n addToBranchManifest({\n collectionSlug: collection.slug,\n docID: doc.id,\n operation: 'create',\n req,\n })\n refreshRequestDataLoader(req)\n\n return doc\n}\n\n/** Refuses collection writes before they can make changes on a closed branch. */\nexport const assertBranchWritableBeforeCollectionWrite: CollectionBeforeOperationHook = async ({\n args,\n operation,\n req,\n}) => {\n if (operation !== 'create' && operation !== 'restoreVersion' && operation !== 'update') {\n return args\n }\n\n const branch = resolveBranch(req)\n\n if (branch === MAIN_BRANCH) {\n return args\n }\n\n await assertBranchWritable({ branch, req })\n\n return args\n}\n\n/** Refuses global writes before they can make changes on a closed branch. */\nexport const assertBranchWritableBeforeGlobalWrite: GlobalBeforeOperationHook = async ({\n args,\n global,\n operation,\n req,\n}) => {\n if (operation !== 'restoreVersion' && operation !== 'update') {\n return args\n }\n\n const branch = resolveBranch(req)\n const branching = req.payload.config.branching\n\n if (\n branch === MAIN_BRANCH ||\n !branching?.enabled ||\n !branching.branchableGlobals.has(global.slug)\n ) {\n return args\n }\n\n await assertBranchWritable({ branch, req })\n\n return args\n}\n"],"names":["assertBranchWritable","addToBranchManifest","refreshRequestDataLoader","resolveBranch","branchChangesCollectionSlug","branchField","MAIN_BRANCH","stampBranchOnCreate","data","operation","req","branch","recordBranchCreate","collection","doc","payload","create","collectionSlug","slug","relationTo","value","id","documentID","String","entityType","overrideAccess","docID","assertBranchWritableBeforeCollectionWrite","args","assertBranchWritableBeforeGlobalWrite","global","branching","config","enabled","branchableGlobals","has"],"mappings":"AAOA,SAASA,oBAAoB,QAAQ,4BAA2B;AAChE,SAASC,mBAAmB,EAAEC,wBAAwB,EAAEC,aAAa,QAAQ,qBAAoB;AACjG,SAASC,2BAA2B,EAAEC,WAAW,EAAEC,WAAW,QAAQ,aAAY;AAElF;;;;;;;;CAQC,GACD,OAAO,MAAMC,sBAAkD,CAAC,EAAEC,IAAI,EAAEC,SAAS,EAAEC,GAAG,EAAE;IACtF,MAAMC,SAASR,cAAcO;IAE7B,IAAIC,WAAWL,eAAeG,cAAc,UAAU;QACpD,OAAOD;IACT;IAEA,OAAO;QACL,GAAGA,IAAI;QACP,CAACH,YAAY,EAAEM;IACjB;AACF,EAAC;AAED;;;;;;CAMC,GACD,OAAO,MAAMC,qBAAgD,OAAO,EAClEC,UAAU,EACVC,GAAG,EACHL,SAAS,EACTC,GAAG,EACJ;IACC,MAAMC,SAASR,cAAcO;IAE7B,IAAIC,WAAWL,eAAeG,cAAc,UAAU;QACpD,OAAOK;IACT;IAEA,MAAMd,qBAAqB;QAAEW;QAAQD;IAAI;IAEzC,MAAMA,IAAIK,OAAO,CAACC,MAAM,CAAC;QACvBH,YAAYT;QACZI,MAAM;YACJG;YACAM,gBAAgBJ,WAAWK,IAAI;YAC/BJ,KAAK;gBAAEK,YAAYN,WAAWK,IAAI;gBAAEE,OAAON,IAAIO,EAAE;YAAC;YAClDC,YAAYC,OAAOT,IAAIO,EAAE;YACzBG,YAAY;YACZf,WAAW;QACb;QACAgB,gBAAgB;QAChBf;IACF;IAEAT,oBAAoB;QAClBgB,gBAAgBJ,WAAWK,IAAI;QAC/BQ,OAAOZ,IAAIO,EAAE;QACbZ,WAAW;QACXC;IACF;IACAR,yBAAyBQ;IAEzB,OAAOI;AACT,EAAC;AAED,+EAA+E,GAC/E,OAAO,MAAMa,4CAA2E,OAAO,EAC7FC,IAAI,EACJnB,SAAS,EACTC,GAAG,EACJ;IACC,IAAID,cAAc,YAAYA,cAAc,oBAAoBA,cAAc,UAAU;QACtF,OAAOmB;IACT;IAEA,MAAMjB,SAASR,cAAcO;IAE7B,IAAIC,WAAWL,aAAa;QAC1B,OAAOsB;IACT;IAEA,MAAM5B,qBAAqB;QAAEW;QAAQD;IAAI;IAEzC,OAAOkB;AACT,EAAC;AAED,2EAA2E,GAC3E,OAAO,MAAMC,wCAAmE,OAAO,EACrFD,IAAI,EACJE,MAAM,EACNrB,SAAS,EACTC,GAAG,EACJ;IACC,IAAID,cAAc,oBAAoBA,cAAc,UAAU;QAC5D,OAAOmB;IACT;IAEA,MAAMjB,SAASR,cAAcO;IAC7B,MAAMqB,YAAYrB,IAAIK,OAAO,CAACiB,MAAM,CAACD,SAAS;IAE9C,IACEpB,WAAWL,eACX,CAACyB,WAAWE,WACZ,CAACF,UAAUG,iBAAiB,CAACC,GAAG,CAACL,OAAOZ,IAAI,GAC5C;QACA,OAAOU;IACT;IAEA,MAAM5B,qBAAqB;QAAEW;QAAQD;IAAI;IAEzC,OAAOkB;AACT,EAAC"}
@@ -1,40 +0,0 @@
1
- import type { CollectionConfig } from '../collections/config/types.js';
2
- import type { Field, TextField } from '../fields/config/types.js';
3
- import type { GlobalConfig } from '../globals/config/types.js';
4
- /**
5
- * `_branch` — which branch a row belongs to. `'main'` is a non-null sentinel
6
- * rather than NULL so that compound `(field, _branch)` unique indexes keep
7
- * enforcing uniqueness among main rows on Postgres, which treats NULLs as
8
- * distinct.
9
- */
10
- export declare const buildBranchField: () => TextField;
11
- /**
12
- * `_branchDocID` — the canonical document this row represents. Null on main
13
- * rows, meaning "self".
14
- *
15
- * Declared as a self-referential `relationship` rather than `text` for two
16
- * reasons: it inherits the collection's own ID type (which may be text,
17
- * number, or a custom ID), and Payload's Drizzle builder special-cases
18
- * `not_in` for relationship fields to emit `(col NOT IN (...) OR col IS NULL)`,
19
- * without which every main row would be excluded from a branch read.
20
- */
21
- export declare const buildBranchDocIDField: (slug: string) => Field;
22
- /** `_branchParent` — the canonical parent document, for version rows. */
23
- export declare const buildBranchParentField: (slug: string) => Field;
24
- /**
25
- * Injects the branch discriminator fields and rewrites `unique: true` fields
26
- * into branch-scoped compound indexes.
27
- *
28
- * A branch holds a full copy of a document, so an unscoped unique index would
29
- * reject the copy outright. Scoping by `_branch` lets two branches each hold a
30
- * document with the same value while preserving uniqueness within a branch.
31
- */
32
- export declare const injectBranchFields: (collection: CollectionConfig) => CollectionConfig;
33
- /**
34
- * Globals need only the discriminator.
35
- *
36
- * No `_branchDocID`, because a global's identity is its slug and is stable
37
- * across branches — the whole canonical-ID translation problem does not arise.
38
- */
39
- export declare const injectGlobalBranchFields: (global: GlobalConfig) => GlobalConfig;
40
- //# sourceMappingURL=injectBranchFields.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"injectBranchFields.d.ts","sourceRoot":"","sources":["../../src/branching/injectBranchFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAiB,MAAM,gCAAgC,CAAA;AACrF,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAkD9D;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,QAAO,SAQlC,CAAA;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB,SAAU,MAAM,KAAG,KAQnD,CAAA;AAEF,yEAAyE;AACzE,eAAO,MAAM,sBAAsB,SAAU,MAAM,KAAG,KAQpD,CAAA;AAkDF;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,eAAgB,gBAAgB,KAAG,gBAyDjE,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,WAAY,YAAY,KAAG,YAe/D,CAAA"}
@@ -1,229 +0,0 @@
1
- import { fieldAffectsData, tabHasName } from '../fields/config/types.js';
2
- import { assertBranchWritableBeforeCollectionWrite, assertBranchWritableBeforeGlobalWrite, recordBranchCreate, stampBranchOnCreate } from './hooks.js';
3
- import { branchDocIDField, branchField, branchParentField, MAIN_BRANCH } from './types.js';
4
- /**
5
- * These columns are branch bookkeeping, not content. They are `admin.hidden`,
6
- * but hidden is not the same as read-only: the admin form round-trips every
7
- * field it loaded, so an edit made on a branch would submit the `_branch` it
8
- * was read with and stamp it back onto the shadow row — quietly moving that
9
- * row onto `main` and duplicating the document in production.
10
- *
11
- * Denying field-level create/update makes them internally writable only.
12
- * Field access is skipped under `overrideAccess: true`, which is exactly the
13
- * exemption merge needs to flip `_branch` to `'main'` (§16), and the
14
- * copy-on-write paths write through `payload.db` directly, below field access
15
- * entirely.
16
- */ const internalOnly = {
17
- access: {
18
- create: ()=>false,
19
- update: ()=>false
20
- },
21
- admin: {
22
- disabled: {
23
- bulkEdit: true
24
- },
25
- hidden: true
26
- }
27
- };
28
- /**
29
- * `hidden` on top of that, for the columns nothing outside the branching engine
30
- * ever reads back.
31
- *
32
- * `admin.hidden` only keeps a field out of the edit form — it still ships in every
33
- * API response, which muddies the shape of every branched document. `hidden`
34
- * removes it from responses altogether. Reads that legitimately need to inspect
35
- * these columns pass `showHiddenFields: true`; the engine itself is unaffected,
36
- * because copy-on-write, merge and tombstoning all read through `payload.db`
37
- * directly, below the `afterRead` layer that does the stripping.
38
- *
39
- * Writes must never take these from round-tripped data: a read strips them, the
40
- * field default silently refills `_branch` with `main`, and writing that back
41
- * would flip a branch's row onto main. Both adapters set `_branch` explicitly on
42
- * global writes for exactly this reason.
43
- */ const bookkeepingOnly = {
44
- ...internalOnly,
45
- hidden: true
46
- };
47
- /**
48
- * `_branch` — which branch a row belongs to. `'main'` is a non-null sentinel
49
- * rather than NULL so that compound `(field, _branch)` unique indexes keep
50
- * enforcing uniqueness among main rows on Postgres, which treats NULLs as
51
- * distinct.
52
- */ export const buildBranchField = ()=>({
53
- name: branchField,
54
- type: 'text',
55
- ...bookkeepingOnly,
56
- defaultValue: MAIN_BRANCH,
57
- index: true,
58
- label: 'Branch',
59
- required: true
60
- });
61
- /**
62
- * `_branchDocID` — the canonical document this row represents. Null on main
63
- * rows, meaning "self".
64
- *
65
- * Declared as a self-referential `relationship` rather than `text` for two
66
- * reasons: it inherits the collection's own ID type (which may be text,
67
- * number, or a custom ID), and Payload's Drizzle builder special-cases
68
- * `not_in` for relationship fields to emit `(col NOT IN (...) OR col IS NULL)`,
69
- * without which every main row would be excluded from a branch read.
70
- */ export const buildBranchDocIDField = (slug)=>({
71
- name: branchDocIDField,
72
- type: 'relationship',
73
- ...bookkeepingOnly,
74
- index: true,
75
- label: 'Branch Document',
76
- maxDepth: 0,
77
- relationTo: slug
78
- });
79
- /** `_branchParent` — the canonical parent document, for version rows. */ export const buildBranchParentField = (slug)=>({
80
- name: branchParentField,
81
- type: 'relationship',
82
- ...bookkeepingOnly,
83
- index: true,
84
- label: 'Branch Parent Document',
85
- maxDepth: 0,
86
- relationTo: slug
87
- });
88
- const hasField = (fields, name)=>fields.some((field)=>'name' in field && field.name === name);
89
- const joinFieldPath = ({ name, parentPath })=>parentPath ? `${parentPath}.${name}` : name;
90
- const rewriteUniqueFields = ({ fields, indexes, parentPath = '' })=>{
91
- for (const field of fields){
92
- if (fieldAffectsData(field) && 'unique' in field && field.unique) {
93
- const fieldPath = joinFieldPath({
94
- name: field.name,
95
- parentPath
96
- });
97
- field.unique = false;
98
- indexes.push({
99
- fields: [
100
- fieldPath,
101
- branchField
102
- ],
103
- ...field.required === true ? {} : {
104
- requireExists: [
105
- fieldPath
106
- ]
107
- },
108
- unique: true
109
- });
110
- }
111
- if (field.type === 'collapsible' || field.type === 'group' || field.type === 'row') {
112
- rewriteUniqueFields({
113
- fields: field.fields,
114
- indexes,
115
- parentPath: field.type === 'group' && fieldAffectsData(field) ? joinFieldPath({
116
- name: field.name,
117
- parentPath
118
- }) : parentPath
119
- });
120
- } else if (field.type === 'tabs') {
121
- for (const tab of field.tabs){
122
- rewriteUniqueFields({
123
- fields: tab.fields,
124
- indexes,
125
- parentPath: tabHasName(tab) ? joinFieldPath({
126
- name: tab.name,
127
- parentPath
128
- }) : parentPath
129
- });
130
- }
131
- }
132
- }
133
- };
134
- /**
135
- * Injects the branch discriminator fields and rewrites `unique: true` fields
136
- * into branch-scoped compound indexes.
137
- *
138
- * A branch holds a full copy of a document, so an unscoped unique index would
139
- * reject the copy outright. Scoping by `_branch` lets two branches each hold a
140
- * document with the same value while preserving uniqueness within a branch.
141
- */ export const injectBranchFields = (collection)=>{
142
- if (!hasField(collection.fields, branchField)) {
143
- collection.fields.push(buildBranchField());
144
- }
145
- if (!hasField(collection.fields, branchDocIDField)) {
146
- collection.fields.push(buildBranchDocIDField(collection.slug));
147
- }
148
- const indexes = (collection.indexes ?? []).map((index)=>index.unique && !index.fields.includes(branchField) ? {
149
- ...index,
150
- fields: [
151
- ...index.fields,
152
- branchField
153
- ]
154
- } : index);
155
- // Catches two concurrent first-edits of the same document on the same branch:
156
- // whichever write loses the race gets a constraint violation from the
157
- // database instead of a second, silently duplicate shadow row. Scoped to rows
158
- // that have a `_branchDocID` at all — a main row's is null, and a unique
159
- // index would otherwise treat every main row as colliding with every other.
160
- indexes.push({
161
- fields: [
162
- branchDocIDField,
163
- branchField
164
- ],
165
- requireExists: [
166
- branchDocIDField
167
- ],
168
- unique: true
169
- });
170
- rewriteUniqueFields({
171
- fields: collection.fields,
172
- indexes
173
- });
174
- collection.indexes = indexes;
175
- // `filename` is unique on upload collections, but it is added by upload
176
- // sanitization — which runs *after* this — so the loop above cannot reach it and
177
- // it would keep a global unique index. A branch's copy of an upload then
178
- // collides with main's on filename, and forking or tombstoning it fails
179
- // outright. Declaring the compound index up front is the supported way to scope
180
- // it: `getBaseUploadFields` leaves `filename.unique` unset when it is present.
181
- if (collection.upload) {
182
- const upload = collection.upload === true ? {} : collection.upload;
183
- upload.filenameCompoundIndex ??= [
184
- 'filename'
185
- ];
186
- if (!upload.filenameCompoundIndex.includes(branchField)) {
187
- upload.filenameCompoundIndex.push(branchField);
188
- }
189
- collection.upload = upload;
190
- }
191
- collection.hooks = collection.hooks ?? {};
192
- collection.hooks.beforeChange = [
193
- ...collection.hooks.beforeChange ?? [],
194
- stampBranchOnCreate
195
- ];
196
- collection.hooks.afterChange = [
197
- ...collection.hooks.afterChange ?? [],
198
- recordBranchCreate
199
- ];
200
- collection.hooks.beforeOperation = [
201
- assertBranchWritableBeforeCollectionWrite,
202
- ...collection.hooks.beforeOperation ?? []
203
- ];
204
- return collection;
205
- };
206
- /**
207
- * Globals need only the discriminator.
208
- *
209
- * No `_branchDocID`, because a global's identity is its slug and is stable
210
- * across branches — the whole canonical-ID translation problem does not arise.
211
- */ export const injectGlobalBranchFields = (global)=>{
212
- if (!hasField(global.fields, branchField)) {
213
- // Each global has at most one row on a branch. Besides expressing that
214
- // invariant, the unique key is the conflict target used by adapter upserts
215
- // when concurrent requests make the first branch write.
216
- global.fields.push({
217
- ...buildBranchField(),
218
- unique: true
219
- });
220
- }
221
- global.hooks = global.hooks ?? {};
222
- global.hooks.beforeOperation = [
223
- assertBranchWritableBeforeGlobalWrite,
224
- ...global.hooks.beforeOperation ?? []
225
- ];
226
- return global;
227
- };
228
-
229
- //# sourceMappingURL=injectBranchFields.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/branching/injectBranchFields.ts"],"sourcesContent":["import type { CollectionConfig, CompoundIndex } from '../collections/config/types.js'\nimport type { Field, TextField } from '../fields/config/types.js'\nimport type { GlobalConfig } from '../globals/config/types.js'\n\nimport { fieldAffectsData, tabHasName } from '../fields/config/types.js'\nimport {\n assertBranchWritableBeforeCollectionWrite,\n assertBranchWritableBeforeGlobalWrite,\n recordBranchCreate,\n stampBranchOnCreate,\n} from './hooks.js'\nimport { branchDocIDField, branchField, branchParentField, MAIN_BRANCH } from './types.js'\n\n/**\n * These columns are branch bookkeeping, not content. They are `admin.hidden`,\n * but hidden is not the same as read-only: the admin form round-trips every\n * field it loaded, so an edit made on a branch would submit the `_branch` it\n * was read with and stamp it back onto the shadow row — quietly moving that\n * row onto `main` and duplicating the document in production.\n *\n * Denying field-level create/update makes them internally writable only.\n * Field access is skipped under `overrideAccess: true`, which is exactly the\n * exemption merge needs to flip `_branch` to `'main'` (§16), and the\n * copy-on-write paths write through `payload.db` directly, below field access\n * entirely.\n */\nconst internalOnly = {\n access: { create: () => false, update: () => false },\n admin: { disabled: { bulkEdit: true }, hidden: true },\n} as const\n\n/**\n * `hidden` on top of that, for the columns nothing outside the branching engine\n * ever reads back.\n *\n * `admin.hidden` only keeps a field out of the edit form — it still ships in every\n * API response, which muddies the shape of every branched document. `hidden`\n * removes it from responses altogether. Reads that legitimately need to inspect\n * these columns pass `showHiddenFields: true`; the engine itself is unaffected,\n * because copy-on-write, merge and tombstoning all read through `payload.db`\n * directly, below the `afterRead` layer that does the stripping.\n *\n * Writes must never take these from round-tripped data: a read strips them, the\n * field default silently refills `_branch` with `main`, and writing that back\n * would flip a branch's row onto main. Both adapters set `_branch` explicitly on\n * global writes for exactly this reason.\n */\nconst bookkeepingOnly = {\n ...internalOnly,\n hidden: true,\n} as const\n\n/**\n * `_branch` — which branch a row belongs to. `'main'` is a non-null sentinel\n * rather than NULL so that compound `(field, _branch)` unique indexes keep\n * enforcing uniqueness among main rows on Postgres, which treats NULLs as\n * distinct.\n */\nexport const buildBranchField = (): TextField => ({\n name: branchField,\n type: 'text',\n ...bookkeepingOnly,\n defaultValue: MAIN_BRANCH,\n index: true,\n label: 'Branch',\n required: true,\n})\n\n/**\n * `_branchDocID` — the canonical document this row represents. Null on main\n * rows, meaning \"self\".\n *\n * Declared as a self-referential `relationship` rather than `text` for two\n * reasons: it inherits the collection's own ID type (which may be text,\n * number, or a custom ID), and Payload's Drizzle builder special-cases\n * `not_in` for relationship fields to emit `(col NOT IN (...) OR col IS NULL)`,\n * without which every main row would be excluded from a branch read.\n */\nexport const buildBranchDocIDField = (slug: string): Field => ({\n name: branchDocIDField,\n type: 'relationship',\n ...bookkeepingOnly,\n index: true,\n label: 'Branch Document',\n maxDepth: 0,\n relationTo: slug,\n})\n\n/** `_branchParent` — the canonical parent document, for version rows. */\nexport const buildBranchParentField = (slug: string): Field => ({\n name: branchParentField,\n type: 'relationship',\n ...bookkeepingOnly,\n index: true,\n label: 'Branch Parent Document',\n maxDepth: 0,\n relationTo: slug,\n})\n\nconst hasField = (fields: Field[], name: string): boolean =>\n fields.some((field) => 'name' in field && field.name === name)\n\nconst joinFieldPath = ({ name, parentPath }: { name: string; parentPath: string }): string =>\n parentPath ? `${parentPath}.${name}` : name\n\nconst rewriteUniqueFields = ({\n fields,\n indexes,\n parentPath = '',\n}: {\n fields: Field[]\n indexes: CompoundIndex[]\n parentPath?: string\n}): void => {\n for (const field of fields) {\n if (fieldAffectsData(field) && 'unique' in field && field.unique) {\n const fieldPath = joinFieldPath({ name: field.name, parentPath })\n\n field.unique = false\n indexes.push({\n fields: [fieldPath, branchField],\n ...(field.required === true ? {} : { requireExists: [fieldPath] }),\n unique: true,\n })\n }\n\n if (field.type === 'collapsible' || field.type === 'group' || field.type === 'row') {\n rewriteUniqueFields({\n fields: field.fields,\n indexes,\n parentPath:\n field.type === 'group' && fieldAffectsData(field)\n ? joinFieldPath({ name: field.name, parentPath })\n : parentPath,\n })\n } else if (field.type === 'tabs') {\n for (const tab of field.tabs) {\n rewriteUniqueFields({\n fields: tab.fields,\n indexes,\n parentPath: tabHasName(tab) ? joinFieldPath({ name: tab.name, parentPath }) : parentPath,\n })\n }\n }\n }\n}\n\n/**\n * Injects the branch discriminator fields and rewrites `unique: true` fields\n * into branch-scoped compound indexes.\n *\n * A branch holds a full copy of a document, so an unscoped unique index would\n * reject the copy outright. Scoping by `_branch` lets two branches each hold a\n * document with the same value while preserving uniqueness within a branch.\n */\nexport const injectBranchFields = (collection: CollectionConfig): CollectionConfig => {\n if (!hasField(collection.fields, branchField)) {\n collection.fields.push(buildBranchField())\n }\n\n if (!hasField(collection.fields, branchDocIDField)) {\n collection.fields.push(buildBranchDocIDField(collection.slug))\n }\n\n const indexes = (collection.indexes ?? []).map((index) =>\n index.unique && !index.fields.includes(branchField)\n ? { ...index, fields: [...index.fields, branchField] }\n : index,\n )\n\n // Catches two concurrent first-edits of the same document on the same branch:\n // whichever write loses the race gets a constraint violation from the\n // database instead of a second, silently duplicate shadow row. Scoped to rows\n // that have a `_branchDocID` at all — a main row's is null, and a unique\n // index would otherwise treat every main row as colliding with every other.\n indexes.push({\n fields: [branchDocIDField, branchField],\n requireExists: [branchDocIDField],\n unique: true,\n })\n\n rewriteUniqueFields({ fields: collection.fields, indexes })\n\n collection.indexes = indexes\n\n // `filename` is unique on upload collections, but it is added by upload\n // sanitization — which runs *after* this — so the loop above cannot reach it and\n // it would keep a global unique index. A branch's copy of an upload then\n // collides with main's on filename, and forking or tombstoning it fails\n // outright. Declaring the compound index up front is the supported way to scope\n // it: `getBaseUploadFields` leaves `filename.unique` unset when it is present.\n if (collection.upload) {\n const upload = collection.upload === true ? {} : collection.upload\n\n upload.filenameCompoundIndex ??= ['filename']\n\n if (!upload.filenameCompoundIndex.includes(branchField)) {\n upload.filenameCompoundIndex.push(branchField)\n }\n\n collection.upload = upload\n }\n\n collection.hooks = collection.hooks ?? {}\n collection.hooks.beforeChange = [...(collection.hooks.beforeChange ?? []), stampBranchOnCreate]\n collection.hooks.afterChange = [...(collection.hooks.afterChange ?? []), recordBranchCreate]\n collection.hooks.beforeOperation = [\n assertBranchWritableBeforeCollectionWrite,\n ...(collection.hooks.beforeOperation ?? []),\n ]\n\n return collection\n}\n\n/**\n * Globals need only the discriminator.\n *\n * No `_branchDocID`, because a global's identity is its slug and is stable\n * across branches — the whole canonical-ID translation problem does not arise.\n */\nexport const injectGlobalBranchFields = (global: GlobalConfig): GlobalConfig => {\n if (!hasField(global.fields, branchField)) {\n // Each global has at most one row on a branch. Besides expressing that\n // invariant, the unique key is the conflict target used by adapter upserts\n // when concurrent requests make the first branch write.\n global.fields.push({ ...buildBranchField(), unique: true })\n }\n\n global.hooks = global.hooks ?? {}\n global.hooks.beforeOperation = [\n assertBranchWritableBeforeGlobalWrite,\n ...(global.hooks.beforeOperation ?? []),\n ]\n\n return global\n}\n"],"names":["fieldAffectsData","tabHasName","assertBranchWritableBeforeCollectionWrite","assertBranchWritableBeforeGlobalWrite","recordBranchCreate","stampBranchOnCreate","branchDocIDField","branchField","branchParentField","MAIN_BRANCH","internalOnly","access","create","update","admin","disabled","bulkEdit","hidden","bookkeepingOnly","buildBranchField","name","type","defaultValue","index","label","required","buildBranchDocIDField","slug","maxDepth","relationTo","buildBranchParentField","hasField","fields","some","field","joinFieldPath","parentPath","rewriteUniqueFields","indexes","unique","fieldPath","push","requireExists","tab","tabs","injectBranchFields","collection","map","includes","upload","filenameCompoundIndex","hooks","beforeChange","afterChange","beforeOperation","injectGlobalBranchFields","global"],"mappings":"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"}