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,363 +0,0 @@
1
- import { getDataLoader } from '../collections/dataloader.js';
2
- import { branchesCollectionSlug, MAIN_BRANCH } from './types.js';
3
- const stateKey = '_branchState';
4
- const getBranchingConfig = (req)=>req?.payload?.config?.branching;
5
- /**
6
- * Resolves the active branch for a request.
7
- *
8
- * The branch is an argument, exactly like `locale` and `depth`: it is whatever
9
- * the caller passed, and `main` when they passed nothing. Nothing is read from
10
- * storage here — no preference lookup, no cookie — so an unbranched request
11
- * costs nothing beyond this function.
12
- *
13
- * Where the admin UI's persisted selection turns into that argument is the
14
- * admin UI's business (`initAdminContext`), the same division `locale` already uses.
15
- *
16
- * Precedence, highest first:
17
- * 1. explicit Local API argument (`req.branch`, set by the caller)
18
- * 2. `branch` query param
19
- * 3. `main`
20
- */ export const resolveBranch = (req)=>{
21
- const branching = getBranchingConfig(req);
22
- if (!branching?.enabled) {
23
- return MAIN_BRANCH;
24
- }
25
- const context = req.context;
26
- const existing = context?.[stateKey];
27
- if (existing) {
28
- return existing.branch;
29
- }
30
- // The bypass sentinel `createPayloadRequest` sets for `branch: false`. Honoured here and not
31
- // only at the database layer, because a request told to ignore branching must not
32
- // report a branch to anything that asks — a `branch: false` request built from an HTTP
33
- // request still carries `?branch=` in its query, and falling through to it made the
34
- // merge engine resolve against the very branch it was merging.
35
- if (context?._branchBypass) {
36
- req.branch = MAIN_BRANCH;
37
- return MAIN_BRANCH;
38
- }
39
- const branch = resolveBranchFromRequest(req) ?? MAIN_BRANCH;
40
- if (context) {
41
- context[stateKey] = {
42
- branch,
43
- deleted: new Map(),
44
- manifest: new Map(),
45
- manifestLoaded: false,
46
- operations: new Map(),
47
- rowIDs: new Map()
48
- };
49
- }
50
- req.branch = branch;
51
- return branch;
52
- };
53
- /**
54
- * The branch the caller asked for, whether through the Local API option or the
55
- * `branch` query param — the same two ways `locale` is supplied.
56
- */ const resolveBranchFromRequest = (req)=>{
57
- if (typeof req.branch === 'string' && req.branch) {
58
- return req.branch;
59
- }
60
- if (typeof req.query?.branch === 'string' && req.query.branch) {
61
- return req.query.branch;
62
- }
63
- return undefined;
64
- };
65
- /**
66
- * Loads every change the active branch has made, in one query, and groups it
67
- * by collection in memory.
68
- *
69
- * One query per request rather than per collection: a request touching a dozen
70
- * collections still issues a single manifest read. Bounded by branch size, not
71
- * table size.
72
- */ export const loadBranchManifest = async (req)=>{
73
- const branch = resolveBranch(req);
74
- const context = req.context;
75
- const state = context?.[stateKey];
76
- if (!state || branch === MAIN_BRANCH) {
77
- return new Map();
78
- }
79
- if (state.manifestLoaded) {
80
- return state.manifest;
81
- }
82
- // Marked loaded up front so the manifest read below — which itself goes
83
- // through the adapter — cannot recurse back into loading the manifest.
84
- state.manifestLoaded = true;
85
- const { docs } = await req.payload.db.find({
86
- collection: 'payload-branch-changes',
87
- limit: 0,
88
- pagination: false,
89
- req,
90
- where: {
91
- and: [
92
- {
93
- branch: {
94
- equals: branch
95
- }
96
- },
97
- {
98
- entityType: {
99
- equals: 'collection'
100
- }
101
- }
102
- ]
103
- }
104
- });
105
- for (const change of docs){
106
- const slug = change.collectionSlug;
107
- const docID = change.doc?.value ?? change.doc;
108
- if (!slug || docID === undefined || docID === null) {
109
- continue;
110
- }
111
- const existing = state.manifest.get(slug);
112
- if (existing) {
113
- existing.push(docID);
114
- } else {
115
- state.manifest.set(slug, [
116
- docID
117
- ]);
118
- }
119
- if (change.operation === 'delete') {
120
- const deleted = state.deleted.get(slug);
121
- if (deleted) {
122
- deleted.push(docID);
123
- } else {
124
- state.deleted.set(slug, [
125
- docID
126
- ]);
127
- }
128
- }
129
- if (change.operation === 'create' || change.operation === 'delete' || change.operation === 'update') {
130
- state.operations.set(`${slug}:${String(docID)}`, change.operation);
131
- }
132
- }
133
- return state.manifest;
134
- };
135
- /**
136
- * Canonical IDs the active branch has tombstoned, keyed by collection slug.
137
- *
138
- * Version and collection queries both exclude these documents by canonical
139
- * identity from the authoritative change manifest.
140
- *
141
- * Loaded from the same manifest query, so asking for this costs nothing beyond
142
- * the read the request already made.
143
- */ export const loadBranchDeletions = async (req)=>{
144
- await loadBranchManifest(req);
145
- const state = req?.context?.[stateKey];
146
- return state?.deleted ?? new Map();
147
- };
148
- export const loadBranchOperation = async ({ collectionSlug, docID, req })=>{
149
- const branch = resolveBranch(req);
150
- const state = req.context?.[stateKey];
151
- const operationKey = `${collectionSlug}:${String(docID)}`;
152
- const cachedOperation = state?.operations.get(operationKey);
153
- if (cachedOperation || branch === MAIN_BRANCH) {
154
- return cachedOperation;
155
- }
156
- const change = await req.payload.db.findOne({
157
- branch: false,
158
- collection: 'payload-branch-changes',
159
- req,
160
- where: {
161
- and: [
162
- {
163
- branch: {
164
- equals: branch
165
- }
166
- },
167
- {
168
- collectionSlug: {
169
- equals: collectionSlug
170
- }
171
- },
172
- {
173
- documentID: {
174
- equals: String(docID)
175
- }
176
- }
177
- ]
178
- }
179
- });
180
- const operation = change?.operation;
181
- if (operation === 'create' || operation === 'delete' || operation === 'update') {
182
- state?.operations.set(operationKey, operation);
183
- return operation;
184
- }
185
- return undefined;
186
- };
187
- /**
188
- * A copy of the request that can resolve a branch of its own.
189
- *
190
- * The resolved branch and its manifest are memoized on `req.context`, so one
191
- * request reads one branch — an explicit `branch` argument passed alongside a
192
- * request that has already resolved a different one is otherwise accepted and
193
- * ignored. Reading the same document on two branches, as a diff does, therefore
194
- * needs a request per branch.
195
- *
196
- * The copy carries the transaction, the user and the locale, so it is the same
197
- * request in every respect but the branch. Its dataloader is its own, because
198
- * the dataloader's cache key does not include the branch and would otherwise
199
- * serve one branch's document to the other.
200
- */ export const isolateBranchState = (req)=>{
201
- const isolated = {
202
- ...req,
203
- context: {
204
- ...req.context
205
- },
206
- headers: req.headers
207
- };
208
- resetBranchState(isolated);
209
- isolated.payloadDataLoader = getDataLoader(isolated);
210
- return isolated;
211
- };
212
- /**
213
- * The branch's own row, read once per request.
214
- *
215
- * Three separate checks want it — whether the branch is closed, whether a merged branch
216
- * should reopen, and whether the caller may see it at all — and each used to read it
217
- * again. This is the trusted read (`overrideAccess: true`), so it deliberately does *not*
218
- * serve the access-checked visibility gate: a row fetched without access control must
219
- * never stand in for one fetched with it.
220
- */ export const loadBranchRow = async ({ branch, req })=>{
221
- const context = req.context;
222
- const state = context?.[stateKey];
223
- if (state && state.branch === branch && state.branchRow !== undefined) {
224
- return state.branchRow;
225
- }
226
- const { docs } = await req.payload.find({
227
- collection: branchesCollectionSlug,
228
- depth: 0,
229
- limit: 1,
230
- overrideAccess: true,
231
- pagination: false,
232
- req,
233
- select: {
234
- slug: true,
235
- status: true
236
- },
237
- where: {
238
- slug: {
239
- equals: branch
240
- }
241
- }
242
- });
243
- const row = docs[0] ?? null;
244
- if (state && state.branch === branch) {
245
- state.branchRow = row;
246
- }
247
- return row;
248
- };
249
- /** Replaces the memoized branch row after something changed it. */ export const setBranchRow = ({ branch, req, row })=>{
250
- const context = req.context;
251
- const state = context?.[stateKey];
252
- if (state && state.branch === branch) {
253
- state.branchRow = row;
254
- }
255
- };
256
- /**
257
- * Records a newly forked document in the memoized manifest.
258
- *
259
- * Cheaper than dropping the manifest and reloading it, which is what a fork used to do:
260
- * the manifest needs to know the branch now shadows this document, and that is one ID —
261
- * not a reason to re-read every change row on the branch. Reads later in the same request
262
- * then exclude main's copy without a second query.
263
- */ export const addToBranchManifest = ({ collectionSlug, docID, operation, req })=>{
264
- const context = req.context;
265
- const state = context?.[stateKey];
266
- // Not loaded yet is the common case on a write-only request: the next read loads it
267
- // fresh, and it will include this document.
268
- if (!state?.manifestLoaded) {
269
- return;
270
- }
271
- const existing = state.manifest.get(collectionSlug);
272
- if (existing) {
273
- if (!existing.some((id)=>String(id) === String(docID))) {
274
- existing.push(docID);
275
- }
276
- } else {
277
- state.manifest.set(collectionSlug, [
278
- docID
279
- ]);
280
- }
281
- state.operations.set(`${collectionSlug}:${String(docID)}`, operation);
282
- };
283
- /** The shadow row ID this request has already resolved for a canonical ID, if any. */ export const peekBranchRowID = ({ collectionSlug, docID, req })=>{
284
- const context = req?.context;
285
- const state = context?.[stateKey];
286
- return state?.rowIDs.get(`${collectionSlug}:${docID}`);
287
- };
288
- /** Remembers a canonical ID's shadow row, so the next write does not look it up again. */ export const rememberBranchRowID = ({ collectionSlug, docID, req, rowID })=>{
289
- const context = req?.context;
290
- const state = context?.[stateKey];
291
- state?.rowIDs.set(`${collectionSlug}:${docID}`, rowID);
292
- };
293
- /**
294
- * The same request with branch resolution switched off.
295
- *
296
- * For the engines that write to `main` on a branch's behalf — merge and discard. They
297
- * address shadow rows by their real primary keys and write production, so every write
298
- * they make must bypass branch resolution. Passing `branch: false` per call is one
299
- * omission away from a silent no-op: the merge-create promotion goes through
300
- * `updateByIDOperation`, which takes no `branch` argument at all and reads the request,
301
- * so a merge triggered over HTTP with `?branch=` resolved that write against the branch
302
- * it was merging.
303
- *
304
- * Isolated rather than mutated, because the caller's request keeps its own branch — the
305
- * HTTP handler still has a response to render on it.
306
- */ export const withoutBranch = (req)=>{
307
- const isolated = isolateBranchState(req);
308
- // The same sentinel `createPayloadRequest({ branch: false })` sets, rather than a `branch`
309
- // of our own: `req.branch` alone is not enough, because resolution falls back to the
310
- // query string behind it.
311
- isolated.branch = undefined;
312
- isolated.context._branchBypass = true;
313
- return isolated;
314
- };
315
- /**
316
- * The branch this request has already resolved, or `undefined` if it has not.
317
- *
318
- * Deliberately does not resolve: callers use this to find out whether they are about to
319
- * *change* the branch, and resolving here would create the state they are checking for.
320
- */ export const peekResolvedBranch = (req)=>{
321
- const context = req?.context;
322
- return context?.[stateKey]?.branch;
323
- };
324
- /** Clears memoized branch state, for tests and for cross-branch reads. */ export const resetBranchState = (req)=>{
325
- const context = req.context;
326
- if (context) {
327
- delete context[stateKey];
328
- }
329
- };
330
- /** Clears memoized branch and document state after a write changes what this request can read. */ export const refreshBranchState = (req)=>{
331
- resetBranchState(req);
332
- refreshRequestDataLoader(req);
333
- };
334
- /** Clears documents cached while populating relationships on this request. */ export const refreshRequestDataLoader = (req)=>{
335
- req.payloadDataLoader = getDataLoader(req);
336
- };
337
- /**
338
- * The manifest already loaded for this request, without loading it.
339
- *
340
- * For synchronous callers such as join query builders, which run after the
341
- * top-level read has resolved the branch and populated the manifest.
342
- */ export const peekBranchManifest = (req)=>{
343
- const context = req?.context;
344
- const state = context?.[stateKey];
345
- return state?.manifest ?? new Map();
346
- };
347
- /**
348
- * The branch deletions already loaded for this request, without loading them.
349
- *
350
- * Version join builders are synchronous. They run after the top-level branch query has loaded the
351
- * manifest, which also records deletions, so they can reuse that state without another query.
352
- */ export const peekBranchDeletions = (req)=>{
353
- const context = req?.context;
354
- const state = context?.[stateKey];
355
- return state?.deleted ?? new Map();
356
- };
357
- /** The authoritative operation for one collection document in the loaded change manifest. */ export const peekBranchOperation = ({ collectionSlug, docID, req })=>{
358
- const context = req?.context;
359
- const state = context?.[stateKey];
360
- return state?.operations.get(`${collectionSlug}:${String(docID)}`);
361
- };
362
-
363
- //# sourceMappingURL=resolveBranch.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/branching/resolveBranch.ts"],"sourcesContent":["import type { PayloadRequest } from '../types/index.js'\nimport type { BranchOperation, SanitizedBranchingConfig } from './types.js'\n\nimport { getDataLoader } from '../collections/dataloader.js'\nimport { branchesCollectionSlug, MAIN_BRANCH } from './types.js'\n\n/**\n * Per-request branch state, memoized on `req` so a page rendering many\n * collections resolves the branch once and loads the change manifest once.\n */\ntype BranchState = {\n branch: string\n /** The branch's own row, read once per request rather than per check. */\n branchRow?: null | Record<string, unknown>\n /** Canonical IDs tombstoned on this branch, keyed by collection slug. */\n deleted: Map<string, (number | string)[]>\n /** Canonical shadowed document IDs, keyed by collection slug. */\n manifest: Map<string, (number | string)[]>\n manifestLoaded: boolean\n /** Change-record operation keyed by collection and canonical document ID. */\n operations: Map<string, BranchOperation>\n /** Canonical ID → shadow row primary key, for the writes that resolved it. */\n rowIDs: Map<string, number | string>\n}\n\nconst stateKey = '_branchState'\n\nconst getBranchingConfig = (req: PayloadRequest): SanitizedBranchingConfig | undefined =>\n req?.payload?.config?.branching\n\n/**\n * Resolves the active branch for a request.\n *\n * The branch is an argument, exactly like `locale` and `depth`: it is whatever\n * the caller passed, and `main` when they passed nothing. Nothing is read from\n * storage here — no preference lookup, no cookie — so an unbranched request\n * costs nothing beyond this function.\n *\n * Where the admin UI's persisted selection turns into that argument is the\n * admin UI's business (`initAdminContext`), the same division `locale` already uses.\n *\n * Precedence, highest first:\n * 1. explicit Local API argument (`req.branch`, set by the caller)\n * 2. `branch` query param\n * 3. `main`\n */\nexport const resolveBranch = (req: PayloadRequest): string => {\n const branching = getBranchingConfig(req)\n\n if (!branching?.enabled) {\n return MAIN_BRANCH\n }\n\n const context = req.context as Record<string, unknown> | undefined\n const existing = context?.[stateKey] as BranchState | undefined\n\n if (existing) {\n return existing.branch\n }\n\n // The bypass sentinel `createPayloadRequest` sets for `branch: false`. Honoured here and not\n // only at the database layer, because a request told to ignore branching must not\n // report a branch to anything that asks — a `branch: false` request built from an HTTP\n // request still carries `?branch=` in its query, and falling through to it made the\n // merge engine resolve against the very branch it was merging.\n if (context?._branchBypass) {\n req.branch = MAIN_BRANCH\n\n return MAIN_BRANCH\n }\n\n const branch = resolveBranchFromRequest(req) ?? MAIN_BRANCH\n\n if (context) {\n context[stateKey] = {\n branch,\n deleted: new Map(),\n manifest: new Map(),\n manifestLoaded: false,\n operations: new Map(),\n rowIDs: new Map(),\n } satisfies BranchState\n }\n\n req.branch = branch\n\n return branch\n}\n\n/**\n * The branch the caller asked for, whether through the Local API option or the\n * `branch` query param — the same two ways `locale` is supplied.\n */\nconst resolveBranchFromRequest = (req: PayloadRequest): string | undefined => {\n if (typeof req.branch === 'string' && req.branch) {\n return req.branch\n }\n\n if (typeof req.query?.branch === 'string' && req.query.branch) {\n return req.query.branch\n }\n\n return undefined\n}\n\n/**\n * Loads every change the active branch has made, in one query, and groups it\n * by collection in memory.\n *\n * One query per request rather than per collection: a request touching a dozen\n * collections still issues a single manifest read. Bounded by branch size, not\n * table size.\n */\nexport const loadBranchManifest = async (\n req: PayloadRequest,\n): Promise<Map<string, (number | string)[]>> => {\n const branch = resolveBranch(req)\n const context = req.context as Record<string, unknown> | undefined\n const state = context?.[stateKey] as BranchState | undefined\n\n if (!state || branch === MAIN_BRANCH) {\n return new Map()\n }\n\n if (state.manifestLoaded) {\n return state.manifest\n }\n\n // Marked loaded up front so the manifest read below — which itself goes\n // through the adapter — cannot recurse back into loading the manifest.\n state.manifestLoaded = true\n\n const { docs } = await req.payload.db.find({\n collection: 'payload-branch-changes',\n limit: 0,\n pagination: false,\n req,\n where: {\n and: [{ branch: { equals: branch } }, { entityType: { equals: 'collection' } }],\n },\n })\n\n for (const change of docs as Record<string, any>[]) {\n const slug = change.collectionSlug as string\n const docID = change.doc?.value ?? change.doc\n\n if (!slug || docID === undefined || docID === null) {\n continue\n }\n\n const existing = state.manifest.get(slug)\n\n if (existing) {\n existing.push(docID)\n } else {\n state.manifest.set(slug, [docID])\n }\n\n if (change.operation === 'delete') {\n const deleted = state.deleted.get(slug)\n\n if (deleted) {\n deleted.push(docID)\n } else {\n state.deleted.set(slug, [docID])\n }\n }\n\n if (\n change.operation === 'create' ||\n change.operation === 'delete' ||\n change.operation === 'update'\n ) {\n state.operations.set(`${slug}:${String(docID)}`, change.operation)\n }\n }\n\n return state.manifest\n}\n\n/**\n * Canonical IDs the active branch has tombstoned, keyed by collection slug.\n *\n * Version and collection queries both exclude these documents by canonical\n * identity from the authoritative change manifest.\n *\n * Loaded from the same manifest query, so asking for this costs nothing beyond\n * the read the request already made.\n */\nexport const loadBranchDeletions = async (\n req: PayloadRequest,\n): Promise<Map<string, (number | string)[]>> => {\n await loadBranchManifest(req)\n\n const state = (req?.context as Record<string, unknown> | undefined)?.[stateKey] as\n | BranchState\n | undefined\n\n return state?.deleted ?? new Map()\n}\n\nexport const loadBranchOperation = async ({\n collectionSlug,\n docID,\n req,\n}: {\n collectionSlug: string\n docID: number | string\n req: PayloadRequest\n}): Promise<BranchOperation | undefined> => {\n const branch = resolveBranch(req)\n const state = (req.context as Record<string, unknown> | undefined)?.[stateKey] as\n | BranchState\n | undefined\n const operationKey = `${collectionSlug}:${String(docID)}`\n const cachedOperation = state?.operations.get(operationKey)\n\n if (cachedOperation || branch === MAIN_BRANCH) {\n return cachedOperation\n }\n\n const change = await req.payload.db.findOne({\n branch: false,\n collection: 'payload-branch-changes',\n req,\n where: {\n and: [\n { branch: { equals: branch } },\n { collectionSlug: { equals: collectionSlug } },\n { documentID: { equals: String(docID) } },\n ],\n },\n })\n const operation = (change as { operation?: unknown } | null)?.operation\n\n if (operation === 'create' || operation === 'delete' || operation === 'update') {\n state?.operations.set(operationKey, operation)\n\n return operation\n }\n\n return undefined\n}\n\n/**\n * A copy of the request that can resolve a branch of its own.\n *\n * The resolved branch and its manifest are memoized on `req.context`, so one\n * request reads one branch — an explicit `branch` argument passed alongside a\n * request that has already resolved a different one is otherwise accepted and\n * ignored. Reading the same document on two branches, as a diff does, therefore\n * needs a request per branch.\n *\n * The copy carries the transaction, the user and the locale, so it is the same\n * request in every respect but the branch. Its dataloader is its own, because\n * the dataloader's cache key does not include the branch and would otherwise\n * serve one branch's document to the other.\n */\nexport const isolateBranchState = (req: PayloadRequest): PayloadRequest => {\n const isolated = { ...req, context: { ...req.context }, headers: req.headers } as PayloadRequest\n\n resetBranchState(isolated)\n isolated.payloadDataLoader = getDataLoader(isolated)\n\n return isolated\n}\n\n/**\n * The branch's own row, read once per request.\n *\n * Three separate checks want it — whether the branch is closed, whether a merged branch\n * should reopen, and whether the caller may see it at all — and each used to read it\n * again. This is the trusted read (`overrideAccess: true`), so it deliberately does *not*\n * serve the access-checked visibility gate: a row fetched without access control must\n * never stand in for one fetched with it.\n */\nexport const loadBranchRow = async ({\n branch,\n req,\n}: {\n branch: string\n req: PayloadRequest\n}): Promise<null | Record<string, unknown>> => {\n const context = req.context as Record<string, unknown> | undefined\n const state = context?.[stateKey] as BranchState | undefined\n\n if (state && state.branch === branch && state.branchRow !== undefined) {\n return state.branchRow\n }\n\n const { docs } = await req.payload.find({\n collection: branchesCollectionSlug,\n depth: 0,\n limit: 1,\n overrideAccess: true,\n pagination: false,\n req,\n select: { slug: true, status: true },\n where: { slug: { equals: branch } },\n })\n\n const row = (docs[0] as Record<string, unknown> | undefined) ?? null\n\n if (state && state.branch === branch) {\n state.branchRow = row\n }\n\n return row\n}\n\n/** Replaces the memoized branch row after something changed it. */\nexport const setBranchRow = ({\n branch,\n req,\n row,\n}: {\n branch: string\n req: PayloadRequest\n row: null | Record<string, unknown>\n}): void => {\n const context = req.context as Record<string, unknown> | undefined\n const state = context?.[stateKey] as BranchState | undefined\n\n if (state && state.branch === branch) {\n state.branchRow = row\n }\n}\n\n/**\n * Records a newly forked document in the memoized manifest.\n *\n * Cheaper than dropping the manifest and reloading it, which is what a fork used to do:\n * the manifest needs to know the branch now shadows this document, and that is one ID —\n * not a reason to re-read every change row on the branch. Reads later in the same request\n * then exclude main's copy without a second query.\n */\nexport const addToBranchManifest = ({\n collectionSlug,\n docID,\n operation,\n req,\n}: {\n collectionSlug: string\n docID: number | string\n operation: BranchOperation\n req: PayloadRequest\n}): void => {\n const context = req.context as Record<string, unknown> | undefined\n const state = context?.[stateKey] as BranchState | undefined\n\n // Not loaded yet is the common case on a write-only request: the next read loads it\n // fresh, and it will include this document.\n if (!state?.manifestLoaded) {\n return\n }\n\n const existing = state.manifest.get(collectionSlug)\n\n if (existing) {\n if (!existing.some((id) => String(id) === String(docID))) {\n existing.push(docID)\n }\n } else {\n state.manifest.set(collectionSlug, [docID])\n }\n\n state.operations.set(`${collectionSlug}:${String(docID)}`, operation)\n}\n\n/** The shadow row ID this request has already resolved for a canonical ID, if any. */\nexport const peekBranchRowID = ({\n collectionSlug,\n docID,\n req,\n}: {\n collectionSlug: string\n docID: number | string\n req?: Partial<PayloadRequest>\n}): number | string | undefined => {\n const context = req?.context as Record<string, unknown> | undefined\n const state = context?.[stateKey] as BranchState | undefined\n\n return state?.rowIDs.get(`${collectionSlug}:${docID}`)\n}\n\n/** Remembers a canonical ID's shadow row, so the next write does not look it up again. */\nexport const rememberBranchRowID = ({\n collectionSlug,\n docID,\n req,\n rowID,\n}: {\n collectionSlug: string\n docID: number | string\n req?: Partial<PayloadRequest>\n rowID: number | string\n}): void => {\n const context = req?.context as Record<string, unknown> | undefined\n const state = context?.[stateKey] as BranchState | undefined\n\n state?.rowIDs.set(`${collectionSlug}:${docID}`, rowID)\n}\n\n/**\n * The same request with branch resolution switched off.\n *\n * For the engines that write to `main` on a branch's behalf — merge and discard. They\n * address shadow rows by their real primary keys and write production, so every write\n * they make must bypass branch resolution. Passing `branch: false` per call is one\n * omission away from a silent no-op: the merge-create promotion goes through\n * `updateByIDOperation`, which takes no `branch` argument at all and reads the request,\n * so a merge triggered over HTTP with `?branch=` resolved that write against the branch\n * it was merging.\n *\n * Isolated rather than mutated, because the caller's request keeps its own branch — the\n * HTTP handler still has a response to render on it.\n */\nexport const withoutBranch = (req: PayloadRequest): PayloadRequest => {\n const isolated = isolateBranchState(req)\n\n // The same sentinel `createPayloadRequest({ branch: false })` sets, rather than a `branch`\n // of our own: `req.branch` alone is not enough, because resolution falls back to the\n // query string behind it.\n isolated.branch = undefined\n ;(isolated.context as Record<string, unknown>)._branchBypass = true\n\n return isolated\n}\n\n/**\n * The branch this request has already resolved, or `undefined` if it has not.\n *\n * Deliberately does not resolve: callers use this to find out whether they are about to\n * *change* the branch, and resolving here would create the state they are checking for.\n */\nexport const peekResolvedBranch = (req?: Partial<PayloadRequest>): string | undefined => {\n const context = req?.context as Record<string, unknown> | undefined\n\n return (context?.[stateKey] as BranchState | undefined)?.branch\n}\n\n/** Clears memoized branch state, for tests and for cross-branch reads. */\nexport const resetBranchState = (req: PayloadRequest): void => {\n const context = req.context as Record<string, unknown> | undefined\n\n if (context) {\n delete context[stateKey]\n }\n}\n\n/** Clears memoized branch and document state after a write changes what this request can read. */\nexport const refreshBranchState = (req: PayloadRequest): void => {\n resetBranchState(req)\n refreshRequestDataLoader(req)\n}\n\n/** Clears documents cached while populating relationships on this request. */\nexport const refreshRequestDataLoader = (req: PayloadRequest): void => {\n req.payloadDataLoader = getDataLoader(req)\n}\n\n/**\n * The manifest already loaded for this request, without loading it.\n *\n * For synchronous callers such as join query builders, which run after the\n * top-level read has resolved the branch and populated the manifest.\n */\nexport const peekBranchManifest = (req: PayloadRequest): Map<string, (number | string)[]> => {\n const context = req?.context as Record<string, unknown> | undefined\n const state = context?.[stateKey] as BranchState | undefined\n\n return state?.manifest ?? new Map()\n}\n\n/**\n * The branch deletions already loaded for this request, without loading them.\n *\n * Version join builders are synchronous. They run after the top-level branch query has loaded the\n * manifest, which also records deletions, so they can reuse that state without another query.\n */\nexport const peekBranchDeletions = (req: PayloadRequest): Map<string, (number | string)[]> => {\n const context = req?.context as Record<string, unknown> | undefined\n const state = context?.[stateKey] as BranchState | undefined\n\n return state?.deleted ?? new Map()\n}\n\n/** The authoritative operation for one collection document in the loaded change manifest. */\nexport const peekBranchOperation = ({\n collectionSlug,\n docID,\n req,\n}: {\n collectionSlug: string\n docID: number | string\n req?: Partial<PayloadRequest>\n}): BranchOperation | undefined => {\n const context = req?.context as Record<string, unknown> | undefined\n const state = context?.[stateKey] as BranchState | undefined\n\n return state?.operations.get(`${collectionSlug}:${String(docID)}`)\n}\n"],"names":["getDataLoader","branchesCollectionSlug","MAIN_BRANCH","stateKey","getBranchingConfig","req","payload","config","branching","resolveBranch","enabled","context","existing","branch","_branchBypass","resolveBranchFromRequest","deleted","Map","manifest","manifestLoaded","operations","rowIDs","query","undefined","loadBranchManifest","state","docs","db","find","collection","limit","pagination","where","and","equals","entityType","change","slug","collectionSlug","docID","doc","value","get","push","set","operation","String","loadBranchDeletions","loadBranchOperation","operationKey","cachedOperation","findOne","documentID","isolateBranchState","isolated","headers","resetBranchState","payloadDataLoader","loadBranchRow","branchRow","depth","overrideAccess","select","status","row","setBranchRow","addToBranchManifest","some","id","peekBranchRowID","rememberBranchRowID","rowID","withoutBranch","peekResolvedBranch","refreshBranchState","refreshRequestDataLoader","peekBranchManifest","peekBranchDeletions","peekBranchOperation"],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- import type { Access } from '../config/types.js';
2
- import type { SanitizedBranchingConfig } from './types.js';
3
- export type BranchAction = 'discardBranch' | 'mergeBranch';
4
- export declare const resolveBranchActionAccess: ({ action, branching, }: {
5
- action: BranchAction;
6
- branching: SanitizedBranchingConfig;
7
- }) => Access;
8
- //# sourceMappingURL=resolveBranchActionAccess.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolveBranchActionAccess.d.ts","sourceRoot":"","sources":["../../src/branching/resolveBranchActionAccess.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAA;AAI1D,MAAM,MAAM,YAAY,GAAG,eAAe,GAAG,aAAa,CAAA;AAE1D,eAAO,MAAM,yBAAyB,2BAGnC;IACD,MAAM,EAAE,YAAY,CAAA;IACpB,SAAS,EAAE,wBAAwB,CAAA;CACpC,KAAG,MAMH,CAAA"}
@@ -1,9 +0,0 @@
1
- import { defaultAccess } from '../auth/defaultAccess.js';
2
- export const resolveBranchActionAccess = ({ action, branching })=>{
3
- if (action === 'mergeBranch') {
4
- return branching.access?.mergeBranch ?? branching.access?.readBranch ?? defaultAccess;
5
- }
6
- return branching.access?.discardBranch ?? branching.access?.deleteBranch ?? defaultAccess;
7
- };
8
-
9
- //# sourceMappingURL=resolveBranchActionAccess.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/branching/resolveBranchActionAccess.ts"],"sourcesContent":["import type { Access } from '../config/types.js'\nimport type { SanitizedBranchingConfig } from './types.js'\n\nimport { defaultAccess } from '../auth/defaultAccess.js'\n\nexport type BranchAction = 'discardBranch' | 'mergeBranch'\n\nexport const resolveBranchActionAccess = ({\n action,\n branching,\n}: {\n action: BranchAction\n branching: SanitizedBranchingConfig\n}): Access => {\n if (action === 'mergeBranch') {\n return branching.access?.mergeBranch ?? branching.access?.readBranch ?? defaultAccess\n }\n\n return branching.access?.discardBranch ?? branching.access?.deleteBranch ?? defaultAccess\n}\n"],"names":["defaultAccess","resolveBranchActionAccess","action","branching","access","mergeBranch","readBranch","discardBranch","deleteBranch"],"mappings":"AAGA,SAASA,aAAa,QAAQ,2BAA0B;AAIxD,OAAO,MAAMC,4BAA4B,CAAC,EACxCC,MAAM,EACNC,SAAS,EAIV;IACC,IAAID,WAAW,eAAe;QAC5B,OAAOC,UAAUC,MAAM,EAAEC,eAAeF,UAAUC,MAAM,EAAEE,cAAcN;IAC1E;IAEA,OAAOG,UAAUC,MAAM,EAAEG,iBAAiBJ,UAAUC,MAAM,EAAEI,gBAAgBR;AAC9E,EAAC"}
@@ -1,48 +0,0 @@
1
- import type { PayloadRequest, Where } from '../types/index.js';
2
- type Args = {
3
- /**
4
- * Explicit override. `false` bypasses branching entirely — used by the merge
5
- * engine, which must reach shadow rows by their real primary key, and by
6
- * cross-branch reads such as diff views.
7
- */
8
- branch?: false | string;
9
- collectionSlug?: string;
10
- globalSlug?: string;
11
- req?: Partial<PayloadRequest>;
12
- where: undefined | Where;
13
- };
14
- export type BranchReadState = {
15
- branch: string;
16
- useBranching: boolean;
17
- };
18
- export declare const resolveBranchReadState: ({ branch: branchOverride, collectionSlug, globalSlug, req, }: Omit<Args, 'where'>) => BranchReadState;
19
- /**
20
- * The single entry point adapters call to make a read branch-aware.
21
- *
22
- * Lives in `payload` rather than in each adapter so that Mongo and Drizzle
23
- * cannot drift apart on branch semantics — adapters supply only the query
24
- * translation they already do.
25
- *
26
- * Returns `where` untouched when branching is off, when the entity is not
27
- * branch-enabled, or when the caller opted out, so a branching-disabled config
28
- * takes the same code path it does today.
29
- */
30
- export declare const resolveBranchQuery: ({ branch: branchOverride, collectionSlug, globalSlug, req, where, }: Args) => Promise<undefined | Where>;
31
- /**
32
- * Synchronous branch predicate, for query builders that are not async.
33
- *
34
- * Reads the change manifest that `resolveBranchQuery` has already loaded and
35
- * memoized on the request earlier in the same read. Returns `null` when
36
- * branching is inactive for the entity, so callers can skip cleanly.
37
- *
38
- * Join subqueries need this: they are assembled inside synchronous query
39
- * builders, but must carry the same branch predicate as the top-level read or
40
- * a branch would see main's related documents.
41
- */
42
- export declare const getBranchPredicateSync: ({ branch: branchOverride, collectionSlug, req, }: {
43
- branch?: false | string;
44
- collectionSlug: string;
45
- req?: Partial<PayloadRequest>;
46
- }) => null | Where;
47
- export {};
48
- //# sourceMappingURL=resolveBranchQuery.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolveBranchQuery.d.ts","sourceRoot":"","sources":["../../src/branching/resolveBranchQuery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAa9D,KAAK,IAAI,GAAG;IACV;;;;OAIG;IACH,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;IACvB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,GAAG,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;IAC7B,KAAK,EAAE,SAAS,GAAG,KAAK,CAAA;CACzB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,OAAO,CAAA;CACtB,CAAA;AAED,eAAO,MAAM,sBAAsB,iEAKhC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,KAAG,eAkCxB,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kBAAkB,wEAM5B,IAAI,KAAG,OAAO,CAAC,SAAS,GAAG,KAAK,CA+DlC,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,sBAAsB,qDAIhC;IACD,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;IACvB,cAAc,EAAE,MAAM,CAAA;IACtB,GAAG,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;CAC9B,KAAG,IAAI,GAAG,KA2BV,CAAA"}
@@ -1,115 +0,0 @@
1
- import { appendBranchFilter } from './appendBranchFilter.js';
2
- import { rewriteBranchIDs } from './branchIDs.js';
3
- import { loadBranchDeletions, loadBranchManifest, peekBranchDeletions, peekBranchManifest, resolveBranch } from './resolveBranch.js';
4
- import { MAIN_BRANCH } from './types.js';
5
- export const resolveBranchReadState = ({ branch: branchOverride, collectionSlug, globalSlug, req })=>{
6
- const branching = req?.payload?.config?.branching;
7
- const isBranchable = collectionSlug ? Boolean(branching?.branchableCollections.has(collectionSlug)) : globalSlug ? Boolean(branching?.branchableGlobals.has(globalSlug)) : false;
8
- const isRequestBypassed = Boolean(req?.context?._branchBypass);
9
- const isBypassed = branchOverride === false || isRequestBypassed;
10
- if (isRequestBypassed && req?.payload) {
11
- resolveBranch(req);
12
- }
13
- if (!branching?.enabled || !isBranchable || isBypassed) {
14
- return {
15
- branch: typeof branchOverride === 'string' ? branchOverride : MAIN_BRANCH,
16
- useBranching: false
17
- };
18
- }
19
- const branch = typeof branchOverride === 'string' ? branchOverride : req?.payload ? resolveBranch(req) : MAIN_BRANCH;
20
- return {
21
- branch,
22
- useBranching: branch !== MAIN_BRANCH
23
- };
24
- };
25
- /**
26
- * The single entry point adapters call to make a read branch-aware.
27
- *
28
- * Lives in `payload` rather than in each adapter so that Mongo and Drizzle
29
- * cannot drift apart on branch semantics — adapters supply only the query
30
- * translation they already do.
31
- *
32
- * Returns `where` untouched when branching is off, when the entity is not
33
- * branch-enabled, or when the caller opted out, so a branching-disabled config
34
- * takes the same code path it does today.
35
- */ export const resolveBranchQuery = async ({ branch: branchOverride, collectionSlug, globalSlug, req, where })=>{
36
- if (branchOverride === false || !req?.payload) {
37
- return where;
38
- }
39
- // Local API `branch: false` bypass, carried on context so it survives the
40
- // hop from operation options into the adapter.
41
- if (req.context?._branchBypass) {
42
- return where;
43
- }
44
- const branching = req.payload.config?.branching;
45
- if (!branching?.enabled) {
46
- return where;
47
- }
48
- const isBranchable = collectionSlug ? branching.branchableCollections.has(collectionSlug) : globalSlug ? branching.branchableGlobals.has(globalSlug) : false;
49
- if (!isBranchable) {
50
- return where;
51
- }
52
- const branch = branchOverride ?? resolveBranch(req);
53
- if (branch === MAIN_BRANCH) {
54
- return appendBranchFilter({
55
- branch,
56
- deletedIDs: [],
57
- enabled: true,
58
- shadowedIDs: [],
59
- where: where ?? {}
60
- });
61
- }
62
- const [manifest, deletions] = await Promise.all([
63
- loadBranchManifest(req),
64
- loadBranchDeletions(req)
65
- ]);
66
- const shadowedIDs = collectionSlug ? manifest.get(collectionSlug) ?? [] : [];
67
- const deletedIDs = collectionSlug ? deletions.get(collectionSlug) ?? [] : [];
68
- // A shadow row's primary key is not the document's canonical ID, so any `id`
69
- // constraint has to be redirected before the branch predicate is applied.
70
- const rewritten = rewriteBranchIDs(where ?? {});
71
- if (shadowedIDs.length > branching.maxShadowedIDs) {
72
- req.payload.logger.warn(`Branch "${branch}" has shadowed ${shadowedIDs.length} documents in "${collectionSlug}", above maxShadowedIDs (${branching.maxShadowedIDs}). Read performance will degrade.`);
73
- }
74
- return appendBranchFilter({
75
- branch,
76
- deletedIDs,
77
- enabled: true,
78
- shadowedIDs,
79
- where: rewritten ?? {}
80
- });
81
- };
82
- /**
83
- * Synchronous branch predicate, for query builders that are not async.
84
- *
85
- * Reads the change manifest that `resolveBranchQuery` has already loaded and
86
- * memoized on the request earlier in the same read. Returns `null` when
87
- * branching is inactive for the entity, so callers can skip cleanly.
88
- *
89
- * Join subqueries need this: they are assembled inside synchronous query
90
- * builders, but must carry the same branch predicate as the top-level read or
91
- * a branch would see main's related documents.
92
- */ export const getBranchPredicateSync = ({ branch: branchOverride, collectionSlug, req })=>{
93
- if (branchOverride === false || !req?.payload) {
94
- return null;
95
- }
96
- if (req.context?._branchBypass) {
97
- return null;
98
- }
99
- const branching = req.payload.config?.branching;
100
- if (!branching?.enabled || !branching.branchableCollections.has(collectionSlug)) {
101
- return null;
102
- }
103
- const branch = branchOverride ?? resolveBranch(req);
104
- const shadowedIDs = branch === MAIN_BRANCH ? [] : peekBranchManifest(req).get(collectionSlug) ?? [];
105
- const deletedIDs = branch === MAIN_BRANCH ? [] : peekBranchDeletions(req).get(collectionSlug) ?? [];
106
- return appendBranchFilter({
107
- branch,
108
- deletedIDs,
109
- enabled: true,
110
- shadowedIDs,
111
- where: {}
112
- });
113
- };
114
-
115
- //# sourceMappingURL=resolveBranchQuery.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/branching/resolveBranchQuery.ts"],"sourcesContent":["import type { PayloadRequest, Where } from '../types/index.js'\n\nimport { appendBranchFilter } from './appendBranchFilter.js'\nimport { rewriteBranchIDs } from './branchIDs.js'\nimport {\n loadBranchDeletions,\n loadBranchManifest,\n peekBranchDeletions,\n peekBranchManifest,\n resolveBranch,\n} from './resolveBranch.js'\nimport { MAIN_BRANCH } from './types.js'\n\ntype Args = {\n /**\n * Explicit override. `false` bypasses branching entirely — used by the merge\n * engine, which must reach shadow rows by their real primary key, and by\n * cross-branch reads such as diff views.\n */\n branch?: false | string\n collectionSlug?: string\n globalSlug?: string\n req?: Partial<PayloadRequest>\n where: undefined | Where\n}\n\nexport type BranchReadState = {\n branch: string\n useBranching: boolean\n}\n\nexport const resolveBranchReadState = ({\n branch: branchOverride,\n collectionSlug,\n globalSlug,\n req,\n}: Omit<Args, 'where'>): BranchReadState => {\n const branching = req?.payload?.config?.branching\n const isBranchable = collectionSlug\n ? Boolean(branching?.branchableCollections.has(collectionSlug))\n : globalSlug\n ? Boolean(branching?.branchableGlobals.has(globalSlug))\n : false\n const isRequestBypassed = Boolean(\n (req?.context as Record<string, unknown> | undefined)?._branchBypass,\n )\n const isBypassed = branchOverride === false || isRequestBypassed\n\n if (isRequestBypassed && req?.payload) {\n resolveBranch(req as PayloadRequest)\n }\n\n if (!branching?.enabled || !isBranchable || isBypassed) {\n return {\n branch: typeof branchOverride === 'string' ? branchOverride : MAIN_BRANCH,\n useBranching: false,\n }\n }\n\n const branch =\n typeof branchOverride === 'string'\n ? branchOverride\n : req?.payload\n ? resolveBranch(req as PayloadRequest)\n : MAIN_BRANCH\n\n return {\n branch,\n useBranching: branch !== MAIN_BRANCH,\n }\n}\n\n/**\n * The single entry point adapters call to make a read branch-aware.\n *\n * Lives in `payload` rather than in each adapter so that Mongo and Drizzle\n * cannot drift apart on branch semantics — adapters supply only the query\n * translation they already do.\n *\n * Returns `where` untouched when branching is off, when the entity is not\n * branch-enabled, or when the caller opted out, so a branching-disabled config\n * takes the same code path it does today.\n */\nexport const resolveBranchQuery = async ({\n branch: branchOverride,\n collectionSlug,\n globalSlug,\n req,\n where,\n}: Args): Promise<undefined | Where> => {\n if (branchOverride === false || !req?.payload) {\n return where\n }\n\n // Local API `branch: false` bypass, carried on context so it survives the\n // hop from operation options into the adapter.\n if ((req.context as Record<string, unknown> | undefined)?._branchBypass) {\n return where\n }\n\n const branching = req.payload.config?.branching\n\n if (!branching?.enabled) {\n return where\n }\n\n const isBranchable = collectionSlug\n ? branching.branchableCollections.has(collectionSlug)\n : globalSlug\n ? branching.branchableGlobals.has(globalSlug)\n : false\n\n if (!isBranchable) {\n return where\n }\n\n const branch = branchOverride ?? resolveBranch(req as PayloadRequest)\n\n if (branch === MAIN_BRANCH) {\n return appendBranchFilter({\n branch,\n deletedIDs: [],\n enabled: true,\n shadowedIDs: [],\n where: where ?? {},\n })\n }\n\n const [manifest, deletions] = await Promise.all([\n loadBranchManifest(req as PayloadRequest),\n loadBranchDeletions(req as PayloadRequest),\n ])\n const shadowedIDs = collectionSlug ? (manifest.get(collectionSlug) ?? []) : []\n const deletedIDs = collectionSlug ? (deletions.get(collectionSlug) ?? []) : []\n\n // A shadow row's primary key is not the document's canonical ID, so any `id`\n // constraint has to be redirected before the branch predicate is applied.\n const rewritten = rewriteBranchIDs(where ?? {})\n\n if (shadowedIDs.length > branching.maxShadowedIDs) {\n req.payload.logger.warn(\n `Branch \"${branch}\" has shadowed ${shadowedIDs.length} documents in \"${collectionSlug}\", above maxShadowedIDs (${branching.maxShadowedIDs}). Read performance will degrade.`,\n )\n }\n\n return appendBranchFilter({\n branch,\n deletedIDs,\n enabled: true,\n shadowedIDs,\n where: rewritten ?? {},\n })\n}\n\n/**\n * Synchronous branch predicate, for query builders that are not async.\n *\n * Reads the change manifest that `resolveBranchQuery` has already loaded and\n * memoized on the request earlier in the same read. Returns `null` when\n * branching is inactive for the entity, so callers can skip cleanly.\n *\n * Join subqueries need this: they are assembled inside synchronous query\n * builders, but must carry the same branch predicate as the top-level read or\n * a branch would see main's related documents.\n */\nexport const getBranchPredicateSync = ({\n branch: branchOverride,\n collectionSlug,\n req,\n}: {\n branch?: false | string\n collectionSlug: string\n req?: Partial<PayloadRequest>\n}): null | Where => {\n if (branchOverride === false || !req?.payload) {\n return null\n }\n\n if ((req.context as Record<string, unknown> | undefined)?._branchBypass) {\n return null\n }\n\n const branching = req.payload.config?.branching\n\n if (!branching?.enabled || !branching.branchableCollections.has(collectionSlug)) {\n return null\n }\n\n const branch = branchOverride ?? resolveBranch(req as PayloadRequest)\n\n const shadowedIDs =\n branch === MAIN_BRANCH\n ? []\n : (peekBranchManifest(req as PayloadRequest).get(collectionSlug) ?? [])\n const deletedIDs =\n branch === MAIN_BRANCH\n ? []\n : (peekBranchDeletions(req as PayloadRequest).get(collectionSlug) ?? [])\n\n return appendBranchFilter({ branch, deletedIDs, enabled: true, shadowedIDs, where: {} })\n}\n"],"names":["appendBranchFilter","rewriteBranchIDs","loadBranchDeletions","loadBranchManifest","peekBranchDeletions","peekBranchManifest","resolveBranch","MAIN_BRANCH","resolveBranchReadState","branch","branchOverride","collectionSlug","globalSlug","req","branching","payload","config","isBranchable","Boolean","branchableCollections","has","branchableGlobals","isRequestBypassed","context","_branchBypass","isBypassed","enabled","useBranching","resolveBranchQuery","where","deletedIDs","shadowedIDs","manifest","deletions","Promise","all","get","rewritten","length","maxShadowedIDs","logger","warn","getBranchPredicateSync"],"mappings":"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"}
@@ -1,22 +0,0 @@
1
- import type { PayloadRequest } from '../types/index.js';
2
- type Args = {
3
- branch?: false | string;
4
- collectionSlug: string;
5
- id: number | string;
6
- req?: Partial<PayloadRequest>;
7
- };
8
- /**
9
- * Translates a canonical document ID into the primary key of the row that the
10
- * active branch should actually write to.
11
- *
12
- * A canonical ID is the only identity the API exposes: on a branch it addresses
13
- * the branch's own copy, on main it addresses the main row. Reads resolve this
14
- * through the `where`-tree rewrite; writes cannot, because they address a row
15
- * by primary key directly — so they resolve it here instead.
16
- *
17
- * Returns the ID unchanged on main, when branching is off, or when the branch
18
- * has no copy of the document.
19
- */
20
- export declare const resolveBranchRowID: ({ id, branch: branchOverride, collectionSlug, req, }: Args) => Promise<number | string>;
21
- export {};
22
- //# sourceMappingURL=resolveBranchRowID.d.ts.map