payload 3.0.0-beta.120 → 3.0.0-beta.121

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 (287) hide show
  1. package/dist/auth/operations/registerFirstUser.d.ts.map +1 -1
  2. package/dist/auth/operations/registerFirstUser.js.map +1 -1
  3. package/dist/auth/strategies/local/register.d.ts +3 -2
  4. package/dist/auth/strategies/local/register.d.ts.map +1 -1
  5. package/dist/auth/strategies/local/register.js +3 -2
  6. package/dist/auth/strategies/local/register.js.map +1 -1
  7. package/dist/bin/generateTypes.d.ts.map +1 -1
  8. package/dist/bin/generateTypes.js +4 -0
  9. package/dist/bin/generateTypes.js.map +1 -1
  10. package/dist/bin/index.d.ts +1 -1
  11. package/dist/bin/index.d.ts.map +1 -1
  12. package/dist/bin/index.js +25 -0
  13. package/dist/bin/index.js.map +1 -1
  14. package/dist/collections/config/types.d.ts +7 -5
  15. package/dist/collections/config/types.d.ts.map +1 -1
  16. package/dist/collections/config/types.js.map +1 -1
  17. package/dist/collections/dataloader.d.ts +3 -2
  18. package/dist/collections/dataloader.d.ts.map +1 -1
  19. package/dist/collections/dataloader.js +9 -5
  20. package/dist/collections/dataloader.js.map +1 -1
  21. package/dist/collections/operations/create.d.ts +4 -3
  22. package/dist/collections/operations/create.d.ts.map +1 -1
  23. package/dist/collections/operations/create.js +6 -3
  24. package/dist/collections/operations/create.js.map +1 -1
  25. package/dist/collections/operations/delete.d.ts +4 -9
  26. package/dist/collections/operations/delete.d.ts.map +1 -1
  27. package/dist/collections/operations/delete.js +3 -1
  28. package/dist/collections/operations/delete.js.map +1 -1
  29. package/dist/collections/operations/deleteByID.d.ts +4 -3
  30. package/dist/collections/operations/deleteByID.d.ts.map +1 -1
  31. package/dist/collections/operations/deleteByID.js +3 -1
  32. package/dist/collections/operations/deleteByID.js.map +1 -1
  33. package/dist/collections/operations/duplicate.d.ts +4 -3
  34. package/dist/collections/operations/duplicate.d.ts.map +1 -1
  35. package/dist/collections/operations/duplicate.js +7 -3
  36. package/dist/collections/operations/duplicate.js.map +1 -1
  37. package/dist/collections/operations/find.d.ts +4 -3
  38. package/dist/collections/operations/find.d.ts.map +1 -1
  39. package/dist/collections/operations/find.js +7 -1
  40. package/dist/collections/operations/find.js.map +1 -1
  41. package/dist/collections/operations/findByID.d.ts +4 -3
  42. package/dist/collections/operations/findByID.d.ts.map +1 -1
  43. package/dist/collections/operations/findByID.js +5 -2
  44. package/dist/collections/operations/findByID.js.map +1 -1
  45. package/dist/collections/operations/findVersionByID.d.ts +2 -1
  46. package/dist/collections/operations/findVersionByID.d.ts.map +1 -1
  47. package/dist/collections/operations/findVersionByID.js +3 -1
  48. package/dist/collections/operations/findVersionByID.js.map +1 -1
  49. package/dist/collections/operations/findVersions.d.ts +2 -1
  50. package/dist/collections/operations/findVersions.d.ts.map +1 -1
  51. package/dist/collections/operations/findVersions.js +3 -1
  52. package/dist/collections/operations/findVersions.js.map +1 -1
  53. package/dist/collections/operations/local/create.d.ts +5 -4
  54. package/dist/collections/operations/local/create.d.ts.map +1 -1
  55. package/dist/collections/operations/local/create.js +2 -1
  56. package/dist/collections/operations/local/create.js.map +1 -1
  57. package/dist/collections/operations/local/delete.d.ts +12 -11
  58. package/dist/collections/operations/local/delete.d.ts.map +1 -1
  59. package/dist/collections/operations/local/delete.js +2 -1
  60. package/dist/collections/operations/local/delete.js.map +1 -1
  61. package/dist/collections/operations/local/duplicate.d.ts +5 -4
  62. package/dist/collections/operations/local/duplicate.d.ts.map +1 -1
  63. package/dist/collections/operations/local/duplicate.js +2 -1
  64. package/dist/collections/operations/local/duplicate.js.map +1 -1
  65. package/dist/collections/operations/local/find.d.ts +5 -4
  66. package/dist/collections/operations/local/find.d.ts.map +1 -1
  67. package/dist/collections/operations/local/find.js +3 -1
  68. package/dist/collections/operations/local/find.js.map +1 -1
  69. package/dist/collections/operations/local/findByID.d.ts +7 -6
  70. package/dist/collections/operations/local/findByID.d.ts.map +1 -1
  71. package/dist/collections/operations/local/findByID.js +3 -2
  72. package/dist/collections/operations/local/findByID.js.map +1 -1
  73. package/dist/collections/operations/local/findVersionByID.d.ts +2 -1
  74. package/dist/collections/operations/local/findVersionByID.d.ts.map +1 -1
  75. package/dist/collections/operations/local/findVersionByID.js +2 -1
  76. package/dist/collections/operations/local/findVersionByID.js.map +1 -1
  77. package/dist/collections/operations/local/findVersions.d.ts +2 -1
  78. package/dist/collections/operations/local/findVersions.d.ts.map +1 -1
  79. package/dist/collections/operations/local/findVersions.js +2 -1
  80. package/dist/collections/operations/local/findVersions.js.map +1 -1
  81. package/dist/collections/operations/local/index.d.ts.map +1 -1
  82. package/dist/collections/operations/local/index.js +1 -1
  83. package/dist/collections/operations/local/index.js.map +1 -1
  84. package/dist/collections/operations/local/restoreVersion.d.ts +2 -1
  85. package/dist/collections/operations/local/restoreVersion.d.ts.map +1 -1
  86. package/dist/collections/operations/local/restoreVersion.js +2 -1
  87. package/dist/collections/operations/local/restoreVersion.js.map +1 -1
  88. package/dist/collections/operations/local/update.d.ts +12 -11
  89. package/dist/collections/operations/local/update.d.ts.map +1 -1
  90. package/dist/collections/operations/local/update.js +2 -1
  91. package/dist/collections/operations/local/update.js.map +1 -1
  92. package/dist/collections/operations/restoreVersion.d.ts +2 -1
  93. package/dist/collections/operations/restoreVersion.d.ts.map +1 -1
  94. package/dist/collections/operations/restoreVersion.js +4 -2
  95. package/dist/collections/operations/restoreVersion.js.map +1 -1
  96. package/dist/collections/operations/update.d.ts +4 -3
  97. package/dist/collections/operations/update.d.ts.map +1 -1
  98. package/dist/collections/operations/update.js +6 -3
  99. package/dist/collections/operations/update.js.map +1 -1
  100. package/dist/collections/operations/updateByID.d.ts +4 -3
  101. package/dist/collections/operations/updateByID.d.ts.map +1 -1
  102. package/dist/collections/operations/updateByID.js +5 -2
  103. package/dist/collections/operations/updateByID.js.map +1 -1
  104. package/dist/collections/operations/utils.d.ts +8 -8
  105. package/dist/collections/operations/utils.d.ts.map +1 -1
  106. package/dist/collections/operations/utils.js.map +1 -1
  107. package/dist/config/client.d.ts +2 -2
  108. package/dist/config/client.d.ts.map +1 -1
  109. package/dist/config/client.js +1 -0
  110. package/dist/config/client.js.map +1 -1
  111. package/dist/config/defaults.d.ts.map +1 -1
  112. package/dist/config/defaults.js +8 -0
  113. package/dist/config/defaults.js.map +1 -1
  114. package/dist/config/sanitize.d.ts.map +1 -1
  115. package/dist/config/sanitize.js +21 -0
  116. package/dist/config/sanitize.js.map +1 -1
  117. package/dist/config/types.d.ts +6 -1
  118. package/dist/config/types.d.ts.map +1 -1
  119. package/dist/config/types.js.map +1 -1
  120. package/dist/database/types.d.ts +15 -1
  121. package/dist/database/types.d.ts.map +1 -1
  122. package/dist/database/types.js.map +1 -1
  123. package/dist/exports/shared.d.ts +1 -0
  124. package/dist/exports/shared.d.ts.map +1 -1
  125. package/dist/exports/shared.js +1 -0
  126. package/dist/exports/shared.js.map +1 -1
  127. package/dist/fields/config/types.d.ts +2 -0
  128. package/dist/fields/config/types.d.ts.map +1 -1
  129. package/dist/fields/config/types.js.map +1 -1
  130. package/dist/fields/hooks/afterRead/index.d.ts +2 -1
  131. package/dist/fields/hooks/afterRead/index.d.ts.map +1 -1
  132. package/dist/fields/hooks/afterRead/index.js +4 -1
  133. package/dist/fields/hooks/afterRead/index.js.map +1 -1
  134. package/dist/fields/hooks/afterRead/promise.d.ts +4 -2
  135. package/dist/fields/hooks/afterRead/promise.d.ts.map +1 -1
  136. package/dist/fields/hooks/afterRead/promise.js +59 -1
  137. package/dist/fields/hooks/afterRead/promise.js.map +1 -1
  138. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.d.ts.map +1 -1
  139. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.js +1 -0
  140. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.js.map +1 -1
  141. package/dist/fields/hooks/afterRead/traverseFields.d.ts +4 -2
  142. package/dist/fields/hooks/afterRead/traverseFields.d.ts.map +1 -1
  143. package/dist/fields/hooks/afterRead/traverseFields.js +3 -1
  144. package/dist/fields/hooks/afterRead/traverseFields.js.map +1 -1
  145. package/dist/globals/config/types.d.ts +2 -1
  146. package/dist/globals/config/types.d.ts.map +1 -1
  147. package/dist/globals/config/types.js.map +1 -1
  148. package/dist/globals/operations/findOne.d.ts +2 -1
  149. package/dist/globals/operations/findOne.d.ts.map +1 -1
  150. package/dist/globals/operations/findOne.js +15 -2
  151. package/dist/globals/operations/findOne.js.map +1 -1
  152. package/dist/globals/operations/findVersionByID.d.ts +2 -1
  153. package/dist/globals/operations/findVersionByID.d.ts.map +1 -1
  154. package/dist/globals/operations/findVersionByID.js +3 -1
  155. package/dist/globals/operations/findVersionByID.js.map +1 -1
  156. package/dist/globals/operations/findVersions.d.ts +2 -1
  157. package/dist/globals/operations/findVersions.d.ts.map +1 -1
  158. package/dist/globals/operations/findVersions.js +7 -3
  159. package/dist/globals/operations/findVersions.js.map +1 -1
  160. package/dist/globals/operations/local/findOne.d.ts +5 -4
  161. package/dist/globals/operations/local/findOne.d.ts.map +1 -1
  162. package/dist/globals/operations/local/findOne.js +2 -1
  163. package/dist/globals/operations/local/findOne.js.map +1 -1
  164. package/dist/globals/operations/local/findVersionByID.d.ts +2 -1
  165. package/dist/globals/operations/local/findVersionByID.d.ts.map +1 -1
  166. package/dist/globals/operations/local/findVersionByID.js +2 -1
  167. package/dist/globals/operations/local/findVersionByID.js.map +1 -1
  168. package/dist/globals/operations/local/findVersions.d.ts +2 -1
  169. package/dist/globals/operations/local/findVersions.d.ts.map +1 -1
  170. package/dist/globals/operations/local/findVersions.js +3 -2
  171. package/dist/globals/operations/local/findVersions.js.map +1 -1
  172. package/dist/globals/operations/local/restoreVersion.d.ts.map +1 -1
  173. package/dist/globals/operations/local/restoreVersion.js +1 -1
  174. package/dist/globals/operations/local/restoreVersion.js.map +1 -1
  175. package/dist/globals/operations/local/update.d.ts +5 -4
  176. package/dist/globals/operations/local/update.d.ts.map +1 -1
  177. package/dist/globals/operations/local/update.js +2 -1
  178. package/dist/globals/operations/local/update.js.map +1 -1
  179. package/dist/globals/operations/update.d.ts +4 -3
  180. package/dist/globals/operations/update.d.ts.map +1 -1
  181. package/dist/globals/operations/update.js +15 -2
  182. package/dist/globals/operations/update.js.map +1 -1
  183. package/dist/index.d.ts +61 -14
  184. package/dist/index.d.ts.map +1 -1
  185. package/dist/index.js +2 -0
  186. package/dist/index.js.map +1 -1
  187. package/dist/queues/config/generateJobsJSONSchemas.d.ts +18 -0
  188. package/dist/queues/config/generateJobsJSONSchemas.d.ts.map +1 -0
  189. package/dist/queues/config/generateJobsJSONSchemas.js +125 -0
  190. package/dist/queues/config/generateJobsJSONSchemas.js.map +1 -0
  191. package/dist/queues/config/jobsCollection.d.ts +4 -0
  192. package/dist/queues/config/jobsCollection.d.ts.map +1 -0
  193. package/dist/queues/config/jobsCollection.js +211 -0
  194. package/dist/queues/config/jobsCollection.js.map +1 -0
  195. package/dist/queues/config/types/index.d.ts +45 -0
  196. package/dist/queues/config/types/index.d.ts.map +1 -0
  197. package/dist/queues/config/types/index.js +3 -0
  198. package/dist/queues/config/types/index.js.map +1 -0
  199. package/dist/queues/config/types/taskTypes.d.ts +134 -0
  200. package/dist/queues/config/types/taskTypes.d.ts.map +1 -0
  201. package/dist/queues/config/types/taskTypes.js +3 -0
  202. package/dist/queues/config/types/taskTypes.js.map +1 -0
  203. package/dist/queues/config/types/workflowJSONTypes.d.ts +29 -0
  204. package/dist/queues/config/types/workflowJSONTypes.d.ts.map +1 -0
  205. package/dist/queues/config/types/workflowJSONTypes.js +3 -0
  206. package/dist/queues/config/types/workflowJSONTypes.js.map +1 -0
  207. package/dist/queues/config/types/workflowTypes.d.ts +98 -0
  208. package/dist/queues/config/types/workflowTypes.d.ts.map +1 -0
  209. package/dist/queues/config/types/workflowTypes.js +3 -0
  210. package/dist/queues/config/types/workflowTypes.js.map +1 -0
  211. package/dist/queues/localAPI.d.ts +23 -0
  212. package/dist/queues/localAPI.d.ts.map +1 -0
  213. package/dist/queues/localAPI.js +28 -0
  214. package/dist/queues/localAPI.js.map +1 -0
  215. package/dist/queues/operations/runJobs/index.d.ts +21 -0
  216. package/dist/queues/operations/runJobs/index.d.ts.map +1 -0
  217. package/dist/queues/operations/runJobs/index.js +180 -0
  218. package/dist/queues/operations/runJobs/index.js.map +1 -0
  219. package/dist/queues/operations/runJobs/runJSONJob/index.d.ts +18 -0
  220. package/dist/queues/operations/runJobs/runJSONJob/index.d.ts.map +1 -0
  221. package/dist/queues/operations/runJobs/runJSONJob/index.js +125 -0
  222. package/dist/queues/operations/runJobs/runJSONJob/index.js.map +1 -0
  223. package/dist/queues/operations/runJobs/runJob/calculateBackoffWaitUntil.d.ts +6 -0
  224. package/dist/queues/operations/runJobs/runJob/calculateBackoffWaitUntil.d.ts.map +1 -0
  225. package/dist/queues/operations/runJobs/runJob/calculateBackoffWaitUntil.js +26 -0
  226. package/dist/queues/operations/runJobs/runJob/calculateBackoffWaitUntil.js.map +1 -0
  227. package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.d.ts +26 -0
  228. package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.d.ts.map +1 -0
  229. package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.js +204 -0
  230. package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.js.map +1 -0
  231. package/dist/queues/operations/runJobs/runJob/getUpdateJobFunction.d.ts +5 -0
  232. package/dist/queues/operations/runJobs/runJob/getUpdateJobFunction.d.ts.map +1 -0
  233. package/dist/queues/operations/runJobs/runJob/getUpdateJobFunction.js +18 -0
  234. package/dist/queues/operations/runJobs/runJob/getUpdateJobFunction.js.map +1 -0
  235. package/dist/queues/operations/runJobs/runJob/handleWorkflowError.d.ts +17 -0
  236. package/dist/queues/operations/runJobs/runJob/handleWorkflowError.d.ts.map +1 -0
  237. package/dist/queues/operations/runJobs/runJob/handleWorkflowError.js +43 -0
  238. package/dist/queues/operations/runJobs/runJob/handleWorkflowError.js.map +1 -0
  239. package/dist/queues/operations/runJobs/runJob/importHandlerPath.d.ts +2 -0
  240. package/dist/queues/operations/runJobs/runJob/importHandlerPath.d.ts.map +1 -0
  241. package/dist/queues/operations/runJobs/runJob/importHandlerPath.js +21 -0
  242. package/dist/queues/operations/runJobs/runJob/importHandlerPath.js.map +1 -0
  243. package/dist/queues/operations/runJobs/runJob/index.d.ts +17 -0
  244. package/dist/queues/operations/runJobs/runJob/index.d.ts.map +1 -0
  245. package/dist/queues/operations/runJobs/runJob/index.js +48 -0
  246. package/dist/queues/operations/runJobs/runJob/index.js.map +1 -0
  247. package/dist/queues/restEndpointRun.d.ts +3 -0
  248. package/dist/queues/restEndpointRun.d.ts.map +1 -0
  249. package/dist/queues/restEndpointRun.js +66 -0
  250. package/dist/queues/restEndpointRun.js.map +1 -0
  251. package/dist/queues/utilities/getJobTaskStatus.d.ts +9 -0
  252. package/dist/queues/utilities/getJobTaskStatus.d.ts.map +1 -0
  253. package/dist/queues/utilities/getJobTaskStatus.js +29 -0
  254. package/dist/queues/utilities/getJobTaskStatus.js.map +1 -0
  255. package/dist/types/index.d.ts +20 -2
  256. package/dist/types/index.d.ts.map +1 -1
  257. package/dist/types/index.js.map +1 -1
  258. package/dist/utilities/addSelectGenericsToGeneratedTyoes.spec.js +562 -0
  259. package/dist/utilities/addSelectGenericsToGeneratedTyoes.spec.js.map +1 -0
  260. package/dist/utilities/addSelectGenericsToGeneretedTypes.d.ts +4 -0
  261. package/dist/utilities/addSelectGenericsToGeneretedTypes.d.ts.map +1 -0
  262. package/dist/utilities/addSelectGenericsToGeneretedTypes.js +41 -0
  263. package/dist/utilities/addSelectGenericsToGeneretedTypes.js.map +1 -0
  264. package/dist/utilities/configToJSONSchema.d.ts +6 -1
  265. package/dist/utilities/configToJSONSchema.d.ts.map +1 -1
  266. package/dist/utilities/configToJSONSchema.js +171 -15
  267. package/dist/utilities/configToJSONSchema.js.map +1 -1
  268. package/dist/utilities/getSelectMode.d.ts +3 -0
  269. package/dist/utilities/getSelectMode.d.ts.map +1 -0
  270. package/dist/utilities/getSelectMode.js +14 -0
  271. package/dist/utilities/getSelectMode.js.map +1 -0
  272. package/dist/utilities/traverseFields.d.ts.map +1 -1
  273. package/dist/utilities/traverseFields.js +51 -8
  274. package/dist/utilities/traverseFields.js.map +1 -1
  275. package/dist/versions/drafts/getQueryDraftsSelect.d.ts +5 -0
  276. package/dist/versions/drafts/getQueryDraftsSelect.d.ts.map +1 -0
  277. package/dist/versions/drafts/getQueryDraftsSelect.js +18 -0
  278. package/dist/versions/drafts/getQueryDraftsSelect.js.map +1 -0
  279. package/dist/versions/drafts/replaceWithDraftIfAvailable.d.ts +3 -2
  280. package/dist/versions/drafts/replaceWithDraftIfAvailable.d.ts.map +1 -1
  281. package/dist/versions/drafts/replaceWithDraftIfAvailable.js +11 -7
  282. package/dist/versions/drafts/replaceWithDraftIfAvailable.js.map +1 -1
  283. package/dist/versions/saveVersion.d.ts +3 -2
  284. package/dist/versions/saveVersion.d.ts.map +1 -1
  285. package/dist/versions/saveVersion.js +5 -1
  286. package/dist/versions/saveVersion.js.map +1 -1
  287. package/package.json +3 -2
@@ -1,4 +1,23 @@
1
1
  import { fieldHasSubFields } from '../fields/config/types.js';
2
+ const traverseArrayOrBlocksField = ({ callback, data, field, parentRef })=>{
3
+ for (const ref of data){
4
+ let fields;
5
+ if (field.type === 'blocks' && typeof ref?.blockType === 'string') {
6
+ const block = field.blocks.find((block)=>block.slug === ref.blockType);
7
+ fields = block?.fields;
8
+ } else if (field.type === 'array') {
9
+ fields = field.fields;
10
+ }
11
+ if (fields) {
12
+ traverseFields({
13
+ callback,
14
+ fields,
15
+ parentRef,
16
+ ref
17
+ });
18
+ }
19
+ }
20
+ };
2
21
  /**
3
22
  * Iterate a recurse an array of fields, calling a callback for each field
4
23
  *
@@ -51,11 +70,11 @@ import { fieldHasSubFields } from '../fields/config/types.js';
51
70
  });
52
71
  return;
53
72
  }
54
- if (field.type !== 'tab' && fieldHasSubFields(field)) {
73
+ if (field.type !== 'tab' && (fieldHasSubFields(field) || field.type === 'blocks')) {
55
74
  const parentRef = ref;
56
75
  if ('name' in field && field.name) {
57
76
  if (typeof ref[field.name] === 'undefined') {
58
- if (field.type === 'array') {
77
+ if (field.type === 'array' || field.type === 'blocks') {
59
78
  if (field.localized) {
60
79
  ref[field.name] = {};
61
80
  } else {
@@ -68,12 +87,36 @@ import { fieldHasSubFields } from '../fields/config/types.js';
68
87
  }
69
88
  ref = ref[field.name];
70
89
  }
71
- traverseFields({
72
- callback,
73
- fields: field.fields,
74
- parentRef,
75
- ref
76
- });
90
+ if (field.type === 'blocks' || field.type === 'array') {
91
+ if (field.localized) {
92
+ for(const key in ref ?? {}){
93
+ const localeData = ref[key];
94
+ if (!Array.isArray(localeData)) {
95
+ continue;
96
+ }
97
+ traverseArrayOrBlocksField({
98
+ callback,
99
+ data: localeData,
100
+ field,
101
+ parentRef
102
+ });
103
+ }
104
+ } else if (Array.isArray(ref)) {
105
+ traverseArrayOrBlocksField({
106
+ callback,
107
+ data: ref,
108
+ field,
109
+ parentRef
110
+ });
111
+ }
112
+ } else {
113
+ traverseFields({
114
+ callback,
115
+ fields: field.fields,
116
+ parentRef,
117
+ ref
118
+ });
119
+ }
77
120
  }
78
121
  });
79
122
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utilities/traverseFields.ts"],"sourcesContent":["import type { Field, TabAsField } from '../fields/config/types.js'\n\nimport { fieldHasSubFields } from '../fields/config/types.js'\n\nexport type TraverseFieldsCallback = (args: {\n /**\n * The current field\n */\n field: Field | TabAsField\n /**\n * Function that when called will skip the current field and continue to the next\n */\n next?: () => void\n /**\n * The parent reference object\n */\n parentRef?: Record<string, unknown> | unknown\n /**\n * The current reference object\n */\n ref?: Record<string, unknown> | unknown\n}) => boolean | void\n\ntype TraverseFieldsArgs = {\n callback: TraverseFieldsCallback\n fields: (Field | TabAsField)[]\n parentRef?: Record<string, unknown> | unknown\n ref?: Record<string, unknown> | unknown\n}\n\n/**\n * Iterate a recurse an array of fields, calling a callback for each field\n *\n * @param fields\n * @param callback callback called for each field, discontinue looping if callback returns truthy\n * @param ref\n * @param parentRef\n */\nexport const traverseFields = ({\n callback,\n fields,\n parentRef = {},\n ref = {},\n}: TraverseFieldsArgs): void => {\n fields.some((field) => {\n let skip = false\n const next = () => {\n skip = true\n }\n if (callback && callback({ field, next, parentRef, ref })) {\n return true\n }\n if (skip) {\n return false\n }\n if (field.type === 'tabs' && 'tabs' in field) {\n field.tabs.forEach((tab) => {\n if ('name' in tab && tab.name) {\n if (typeof ref[tab.name] === 'undefined') {\n ref[tab.name] = {}\n }\n ref = ref[tab.name]\n }\n if (callback && callback({ field: { ...tab, type: 'tab' }, next, parentRef, ref })) {\n return true\n }\n traverseFields({ callback, fields: tab.fields, parentRef, ref })\n })\n return\n }\n if (field.type !== 'tab' && fieldHasSubFields(field)) {\n const parentRef = ref\n if ('name' in field && field.name) {\n if (typeof ref[field.name] === 'undefined') {\n if (field.type === 'array') {\n if (field.localized) {\n ref[field.name] = {}\n } else {\n ref[field.name] = []\n }\n }\n if (field.type === 'group') {\n ref[field.name] = {}\n }\n }\n ref = ref[field.name]\n }\n traverseFields({ callback, fields: field.fields, parentRef, ref })\n }\n })\n}\n"],"names":["fieldHasSubFields","traverseFields","callback","fields","parentRef","ref","some","field","skip","next","type","tabs","forEach","tab","name","localized"],"mappings":"AAEA,SAASA,iBAAiB,QAAQ,4BAA2B;AA4B7D;;;;;;;CAOC,GACD,OAAO,MAAMC,iBAAiB,CAAC,EAC7BC,QAAQ,EACRC,MAAM,EACNC,YAAY,CAAC,CAAC,EACdC,MAAM,CAAC,CAAC,EACW;IACnBF,OAAOG,IAAI,CAAC,CAACC;QACX,IAAIC,OAAO;QACX,MAAMC,OAAO;YACXD,OAAO;QACT;QACA,IAAIN,YAAYA,SAAS;YAAEK;YAAOE;YAAML;YAAWC;QAAI,IAAI;YACzD,OAAO;QACT;QACA,IAAIG,MAAM;YACR,OAAO;QACT;QACA,IAAID,MAAMG,IAAI,KAAK,UAAU,UAAUH,OAAO;YAC5CA,MAAMI,IAAI,CAACC,OAAO,CAAC,CAACC;gBAClB,IAAI,UAAUA,OAAOA,IAAIC,IAAI,EAAE;oBAC7B,IAAI,OAAOT,GAAG,CAACQ,IAAIC,IAAI,CAAC,KAAK,aAAa;wBACxCT,GAAG,CAACQ,IAAIC,IAAI,CAAC,GAAG,CAAC;oBACnB;oBACAT,MAAMA,GAAG,CAACQ,IAAIC,IAAI,CAAC;gBACrB;gBACA,IAAIZ,YAAYA,SAAS;oBAAEK,OAAO;wBAAE,GAAGM,GAAG;wBAAEH,MAAM;oBAAM;oBAAGD;oBAAML;oBAAWC;gBAAI,IAAI;oBAClF,OAAO;gBACT;gBACAJ,eAAe;oBAAEC;oBAAUC,QAAQU,IAAIV,MAAM;oBAAEC;oBAAWC;gBAAI;YAChE;YACA;QACF;QACA,IAAIE,MAAMG,IAAI,KAAK,SAASV,kBAAkBO,QAAQ;YACpD,MAAMH,YAAYC;YAClB,IAAI,UAAUE,SAASA,MAAMO,IAAI,EAAE;gBACjC,IAAI,OAAOT,GAAG,CAACE,MAAMO,IAAI,CAAC,KAAK,aAAa;oBAC1C,IAAIP,MAAMG,IAAI,KAAK,SAAS;wBAC1B,IAAIH,MAAMQ,SAAS,EAAE;4BACnBV,GAAG,CAACE,MAAMO,IAAI,CAAC,GAAG,CAAC;wBACrB,OAAO;4BACLT,GAAG,CAACE,MAAMO,IAAI,CAAC,GAAG,EAAE;wBACtB;oBACF;oBACA,IAAIP,MAAMG,IAAI,KAAK,SAAS;wBAC1BL,GAAG,CAACE,MAAMO,IAAI,CAAC,GAAG,CAAC;oBACrB;gBACF;gBACAT,MAAMA,GAAG,CAACE,MAAMO,IAAI,CAAC;YACvB;YACAb,eAAe;gBAAEC;gBAAUC,QAAQI,MAAMJ,MAAM;gBAAEC;gBAAWC;YAAI;QAClE;IACF;AACF,EAAC"}
1
+ {"version":3,"sources":["../../src/utilities/traverseFields.ts"],"sourcesContent":["import type { ArrayField, BlocksField, Field, TabAsField } from '../fields/config/types.js'\n\nimport { fieldHasSubFields } from '../fields/config/types.js'\n\nconst traverseArrayOrBlocksField = ({\n callback,\n data,\n field,\n parentRef,\n}: {\n callback: TraverseFieldsCallback\n data: Record<string, unknown>[]\n field: ArrayField | BlocksField\n parentRef?: unknown\n}) => {\n for (const ref of data) {\n let fields: Field[]\n if (field.type === 'blocks' && typeof ref?.blockType === 'string') {\n const block = field.blocks.find((block) => block.slug === ref.blockType)\n fields = block?.fields\n } else if (field.type === 'array') {\n fields = field.fields\n }\n\n if (fields) {\n traverseFields({ callback, fields, parentRef, ref })\n }\n }\n}\n\nexport type TraverseFieldsCallback = (args: {\n /**\n * The current field\n */\n field: Field | TabAsField\n /**\n * Function that when called will skip the current field and continue to the next\n */\n next?: () => void\n /**\n * The parent reference object\n */\n parentRef?: Record<string, unknown> | unknown\n /**\n * The current reference object\n */\n ref?: Record<string, unknown> | unknown\n}) => boolean | void\n\ntype TraverseFieldsArgs = {\n callback: TraverseFieldsCallback\n fields: (Field | TabAsField)[]\n parentRef?: Record<string, unknown> | unknown\n ref?: Record<string, unknown> | unknown\n}\n\n/**\n * Iterate a recurse an array of fields, calling a callback for each field\n *\n * @param fields\n * @param callback callback called for each field, discontinue looping if callback returns truthy\n * @param ref\n * @param parentRef\n */\nexport const traverseFields = ({\n callback,\n fields,\n parentRef = {},\n ref = {},\n}: TraverseFieldsArgs): void => {\n fields.some((field) => {\n let skip = false\n const next = () => {\n skip = true\n }\n if (callback && callback({ field, next, parentRef, ref })) {\n return true\n }\n if (skip) {\n return false\n }\n if (field.type === 'tabs' && 'tabs' in field) {\n field.tabs.forEach((tab) => {\n if ('name' in tab && tab.name) {\n if (typeof ref[tab.name] === 'undefined') {\n ref[tab.name] = {}\n }\n ref = ref[tab.name]\n }\n if (callback && callback({ field: { ...tab, type: 'tab' }, next, parentRef, ref })) {\n return true\n }\n traverseFields({ callback, fields: tab.fields, parentRef, ref })\n })\n return\n }\n if (field.type !== 'tab' && (fieldHasSubFields(field) || field.type === 'blocks')) {\n const parentRef = ref\n if ('name' in field && field.name) {\n if (typeof ref[field.name] === 'undefined') {\n if (field.type === 'array' || field.type === 'blocks') {\n if (field.localized) {\n ref[field.name] = {}\n } else {\n ref[field.name] = []\n }\n }\n if (field.type === 'group') {\n ref[field.name] = {}\n }\n }\n ref = ref[field.name]\n }\n\n if (field.type === 'blocks' || field.type === 'array') {\n if (field.localized) {\n for (const key in (ref ?? {}) as Record<string, unknown>) {\n const localeData = ref[key]\n if (!Array.isArray(localeData)) {\n continue\n }\n\n traverseArrayOrBlocksField({\n callback,\n data: localeData,\n field,\n parentRef,\n })\n }\n } else if (Array.isArray(ref)) {\n traverseArrayOrBlocksField({\n callback,\n data: ref,\n field,\n parentRef,\n })\n }\n } else {\n traverseFields({ callback, fields: field.fields, parentRef, ref })\n }\n }\n })\n}\n"],"names":["fieldHasSubFields","traverseArrayOrBlocksField","callback","data","field","parentRef","ref","fields","type","blockType","block","blocks","find","slug","traverseFields","some","skip","next","tabs","forEach","tab","name","localized","key","localeData","Array","isArray"],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { SelectType } from '../../types/index.js';
2
+ export declare const getQueryDraftsSelect: ({ select, }: {
3
+ select?: SelectType;
4
+ }) => SelectType | undefined;
5
+ //# sourceMappingURL=getQueryDraftsSelect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getQueryDraftsSelect.d.ts","sourceRoot":"","sources":["../../../src/versions/drafts/getQueryDraftsSelect.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAItD,eAAO,MAAM,oBAAoB,gBAE9B;IACD,MAAM,CAAC,EAAE,UAAU,CAAA;CACpB,KAAG,UAAU,GAAG,SAiBhB,CAAA"}
@@ -0,0 +1,18 @@
1
+ import { getSelectMode } from '../../utilities/getSelectMode.js';
2
+ export const getQueryDraftsSelect = ({ select })=>{
3
+ if (!select) {
4
+ return;
5
+ }
6
+ const mode = getSelectMode(select);
7
+ if (mode === 'include') {
8
+ return {
9
+ parent: true,
10
+ version: select
11
+ };
12
+ }
13
+ return {
14
+ version: select
15
+ };
16
+ };
17
+
18
+ //# sourceMappingURL=getQueryDraftsSelect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/versions/drafts/getQueryDraftsSelect.ts"],"sourcesContent":["import type { SelectType } from '../../types/index.js'\n\nimport { getSelectMode } from '../../utilities/getSelectMode.js'\n\nexport const getQueryDraftsSelect = ({\n select,\n}: {\n select?: SelectType\n}): SelectType | undefined => {\n if (!select) {\n return\n }\n\n const mode = getSelectMode(select)\n\n if (mode === 'include') {\n return {\n parent: true,\n version: select,\n } as SelectType\n }\n\n return {\n version: select,\n } as SelectType\n}\n"],"names":["getSelectMode","getQueryDraftsSelect","select","mode","parent","version"],"mappings":"AAEA,SAASA,aAAa,QAAQ,mCAAkC;AAEhE,OAAO,MAAMC,uBAAuB,CAAC,EACnCC,MAAM,EAGP;IACC,IAAI,CAACA,QAAQ;QACX;IACF;IAEA,MAAMC,OAAOH,cAAcE;IAE3B,IAAIC,SAAS,WAAW;QACtB,OAAO;YACLC,QAAQ;YACRC,SAASH;QACX;IACF;IAEA,OAAO;QACLG,SAASH;IACX;AACF,EAAC"}
@@ -1,7 +1,7 @@
1
1
  import type { SanitizedCollectionConfig, TypeWithID } from '../../collections/config/types.js';
2
2
  import type { AccessResult } from '../../config/types.js';
3
3
  import type { SanitizedGlobalConfig } from '../../globals/config/types.js';
4
- import type { PayloadRequest } from '../../types/index.js';
4
+ import type { PayloadRequest, SelectType } from '../../types/index.js';
5
5
  type Arguments<T> = {
6
6
  accessResult: AccessResult;
7
7
  doc: T;
@@ -9,7 +9,8 @@ type Arguments<T> = {
9
9
  entityType: 'collection' | 'global';
10
10
  overrideAccess: boolean;
11
11
  req: PayloadRequest;
12
+ select?: SelectType;
12
13
  };
13
- declare const replaceWithDraftIfAvailable: <T extends TypeWithID>({ accessResult, doc, entity, entityType, req, }: Arguments<T>) => Promise<T>;
14
+ declare const replaceWithDraftIfAvailable: <T extends TypeWithID>({ accessResult, doc, entity, entityType, req, select, }: Arguments<T>) => Promise<T>;
14
15
  export default replaceWithDraftIfAvailable;
15
16
  //# sourceMappingURL=replaceWithDraftIfAvailable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"replaceWithDraftIfAvailable.d.ts","sourceRoot":"","sources":["../../../src/versions/drafts/replaceWithDraftIfAvailable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAA;AAC9F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAEzD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAS,MAAM,sBAAsB,CAAA;AASjE,KAAK,SAAS,CAAC,CAAC,IAAI;IAClB,YAAY,EAAE,YAAY,CAAA;IAC1B,GAAG,EAAE,CAAC,CAAA;IACN,MAAM,EAAE,yBAAyB,GAAG,qBAAqB,CAAA;IACzD,UAAU,EAAE,YAAY,GAAG,QAAQ,CAAA;IACnC,cAAc,EAAE,OAAO,CAAA;IACvB,GAAG,EAAE,cAAc,CAAA;CACpB,CAAA;AAED,QAAA,MAAM,2BAA2B,GAAU,CAAC,SAAS,UAAU,mDAM5D,SAAS,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,CAqF1B,CAAA;AAED,eAAe,2BAA2B,CAAA"}
1
+ {"version":3,"file":"replaceWithDraftIfAvailable.d.ts","sourceRoot":"","sources":["../../../src/versions/drafts/replaceWithDraftIfAvailable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAA;AAC9F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAEzD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAS,MAAM,sBAAsB,CAAA;AAU7E,KAAK,SAAS,CAAC,CAAC,IAAI;IAClB,YAAY,EAAE,YAAY,CAAA;IAC1B,GAAG,EAAE,CAAC,CAAA;IACN,MAAM,EAAE,yBAAyB,GAAG,qBAAqB,CAAA;IACzD,UAAU,EAAE,YAAY,GAAG,QAAQ,CAAA;IACnC,cAAc,EAAE,OAAO,CAAA;IACvB,GAAG,EAAE,cAAc,CAAA;IACnB,MAAM,CAAC,EAAE,UAAU,CAAA;CACpB,CAAA;AAED,QAAA,MAAM,2BAA2B,GAAU,CAAC,SAAS,UAAU,2DAO5D,SAAS,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,CAyF1B,CAAA;AAED,eAAe,2BAA2B,CAAA"}
@@ -4,7 +4,8 @@ import { docHasTimestamps } from '../../types/index.js';
4
4
  import { deepCopyObjectSimple } from '../../utilities/deepCopyObject.js';
5
5
  import sanitizeInternalFields from '../../utilities/sanitizeInternalFields.js';
6
6
  import { appendVersionToQueryKey } from './appendVersionToQueryKey.js';
7
- const replaceWithDraftIfAvailable = async ({ accessResult, doc, entity, entityType, req })=>{
7
+ import { getQueryDraftsSelect } from './getQueryDraftsSelect.js';
8
+ const replaceWithDraftIfAvailable = async ({ accessResult, doc, entity, entityType, req, select })=>{
8
9
  const { locale } = req;
9
10
  const queryToBuild = {
10
11
  and: [
@@ -49,6 +50,9 @@ const replaceWithDraftIfAvailable = async ({ accessResult, doc, entity, entityTy
49
50
  locale,
50
51
  pagination: false,
51
52
  req,
53
+ select: getQueryDraftsSelect({
54
+ select
55
+ }),
52
56
  sort: '-updatedAt',
53
57
  where: combineQueries(queryToBuild, versionAccessResult)
54
58
  };
@@ -68,15 +72,15 @@ const replaceWithDraftIfAvailable = async ({ accessResult, doc, entity, entityTy
68
72
  if (entityType === 'global' && 'globalType' in doc) {
69
73
  draft.version.globalType = doc.globalType;
70
74
  }
75
+ // handle when .version wasn't selected due to projection
76
+ if (!draft.version) {
77
+ draft.version = {};
78
+ }
71
79
  // Disregard all other draft content at this point,
72
80
  // Only interested in the version itself.
73
81
  // Operations will handle firing hooks, etc.
74
- return {
75
- id: doc.id,
76
- ...draft.version,
77
- createdAt: draft.createdAt,
78
- updatedAt: draft.updatedAt
79
- };
82
+ draft.version.id = doc.id;
83
+ return draft.version;
80
84
  };
81
85
  export default replaceWithDraftIfAvailable;
82
86
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/versions/drafts/replaceWithDraftIfAvailable.ts"],"sourcesContent":["import type { SanitizedCollectionConfig, TypeWithID } from '../../collections/config/types.js'\nimport type { AccessResult } from '../../config/types.js'\nimport type { FindGlobalVersionsArgs, FindVersionsArgs } from '../../database/types.js'\nimport type { SanitizedGlobalConfig } from '../../globals/config/types.js'\nimport type { PayloadRequest, Where } from '../../types/index.js'\n\nimport { hasWhereAccessResult } from '../../auth/index.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { docHasTimestamps } from '../../types/index.js'\nimport { deepCopyObjectSimple } from '../../utilities/deepCopyObject.js'\nimport sanitizeInternalFields from '../../utilities/sanitizeInternalFields.js'\nimport { appendVersionToQueryKey } from './appendVersionToQueryKey.js'\n\ntype Arguments<T> = {\n accessResult: AccessResult\n doc: T\n entity: SanitizedCollectionConfig | SanitizedGlobalConfig\n entityType: 'collection' | 'global'\n overrideAccess: boolean\n req: PayloadRequest\n}\n\nconst replaceWithDraftIfAvailable = async <T extends TypeWithID>({\n accessResult,\n doc,\n entity,\n entityType,\n req,\n}: Arguments<T>): Promise<T> => {\n const { locale } = req\n\n const queryToBuild: Where = {\n and: [\n {\n 'version._status': {\n equals: 'draft',\n },\n },\n ],\n }\n\n if (entityType === 'collection') {\n queryToBuild.and.push({\n parent: {\n equals: doc.id,\n },\n })\n }\n\n if (docHasTimestamps(doc)) {\n queryToBuild.and.push({\n or: [\n {\n updatedAt: {\n greater_than: doc.updatedAt,\n },\n },\n {\n latest: {\n equals: true,\n },\n },\n ],\n })\n }\n\n let versionAccessResult\n\n if (hasWhereAccessResult(accessResult)) {\n versionAccessResult = appendVersionToQueryKey(accessResult)\n }\n\n const findVersionsArgs: FindGlobalVersionsArgs & FindVersionsArgs = {\n collection: entity.slug,\n global: entity.slug,\n limit: 1,\n locale,\n pagination: false,\n req,\n sort: '-updatedAt',\n where: combineQueries(queryToBuild, versionAccessResult),\n }\n\n let versionDocs\n if (entityType === 'global') {\n versionDocs = (await req.payload.db.findGlobalVersions<T>(findVersionsArgs)).docs\n } else {\n versionDocs = (await req.payload.db.findVersions<T>(findVersionsArgs)).docs\n }\n\n let draft = versionDocs[0]\n\n if (!draft) {\n return doc\n }\n\n draft = deepCopyObjectSimple(draft)\n draft = sanitizeInternalFields(draft)\n\n // Patch globalType onto version doc\n if (entityType === 'global' && 'globalType' in doc) {\n draft.version.globalType = doc.globalType\n }\n\n // Disregard all other draft content at this point,\n // Only interested in the version itself.\n // Operations will handle firing hooks, etc.\n return {\n id: doc.id,\n ...draft.version,\n createdAt: draft.createdAt,\n updatedAt: draft.updatedAt,\n }\n}\n\nexport default replaceWithDraftIfAvailable\n"],"names":["hasWhereAccessResult","combineQueries","docHasTimestamps","deepCopyObjectSimple","sanitizeInternalFields","appendVersionToQueryKey","replaceWithDraftIfAvailable","accessResult","doc","entity","entityType","req","locale","queryToBuild","and","equals","push","parent","id","or","updatedAt","greater_than","latest","versionAccessResult","findVersionsArgs","collection","slug","global","limit","pagination","sort","where","versionDocs","payload","db","findGlobalVersions","docs","findVersions","draft","version","globalType","createdAt"],"mappings":"AAMA,SAASA,oBAAoB,QAAQ,sBAAqB;AAC1D,SAASC,cAAc,QAAQ,mCAAkC;AACjE,SAASC,gBAAgB,QAAQ,uBAAsB;AACvD,SAASC,oBAAoB,QAAQ,oCAAmC;AACxE,OAAOC,4BAA4B,4CAA2C;AAC9E,SAASC,uBAAuB,QAAQ,+BAA8B;AAWtE,MAAMC,8BAA8B,OAA6B,EAC/DC,YAAY,EACZC,GAAG,EACHC,MAAM,EACNC,UAAU,EACVC,GAAG,EACU;IACb,MAAM,EAAEC,MAAM,EAAE,GAAGD;IAEnB,MAAME,eAAsB;QAC1BC,KAAK;YACH;gBACE,mBAAmB;oBACjBC,QAAQ;gBACV;YACF;SACD;IACH;IAEA,IAAIL,eAAe,cAAc;QAC/BG,aAAaC,GAAG,CAACE,IAAI,CAAC;YACpBC,QAAQ;gBACNF,QAAQP,IAAIU,EAAE;YAChB;QACF;IACF;IAEA,IAAIhB,iBAAiBM,MAAM;QACzBK,aAAaC,GAAG,CAACE,IAAI,CAAC;YACpBG,IAAI;gBACF;oBACEC,WAAW;wBACTC,cAAcb,IAAIY,SAAS;oBAC7B;gBACF;gBACA;oBACEE,QAAQ;wBACNP,QAAQ;oBACV;gBACF;aACD;QACH;IACF;IAEA,IAAIQ;IAEJ,IAAIvB,qBAAqBO,eAAe;QACtCgB,sBAAsBlB,wBAAwBE;IAChD;IAEA,MAAMiB,mBAA8D;QAClEC,YAAYhB,OAAOiB,IAAI;QACvBC,QAAQlB,OAAOiB,IAAI;QACnBE,OAAO;QACPhB;QACAiB,YAAY;QACZlB;QACAmB,MAAM;QACNC,OAAO9B,eAAeY,cAAcU;IACtC;IAEA,IAAIS;IACJ,IAAItB,eAAe,UAAU;QAC3BsB,cAAc,AAAC,CAAA,MAAMrB,IAAIsB,OAAO,CAACC,EAAE,CAACC,kBAAkB,CAAIX,iBAAgB,EAAGY,IAAI;IACnF,OAAO;QACLJ,cAAc,AAAC,CAAA,MAAMrB,IAAIsB,OAAO,CAACC,EAAE,CAACG,YAAY,CAAIb,iBAAgB,EAAGY,IAAI;IAC7E;IAEA,IAAIE,QAAQN,WAAW,CAAC,EAAE;IAE1B,IAAI,CAACM,OAAO;QACV,OAAO9B;IACT;IAEA8B,QAAQnC,qBAAqBmC;IAC7BA,QAAQlC,uBAAuBkC;IAE/B,oCAAoC;IACpC,IAAI5B,eAAe,YAAY,gBAAgBF,KAAK;QAClD8B,MAAMC,OAAO,CAACC,UAAU,GAAGhC,IAAIgC,UAAU;IAC3C;IAEA,mDAAmD;IACnD,yCAAyC;IACzC,4CAA4C;IAC5C,OAAO;QACLtB,IAAIV,IAAIU,EAAE;QACV,GAAGoB,MAAMC,OAAO;QAChBE,WAAWH,MAAMG,SAAS;QAC1BrB,WAAWkB,MAAMlB,SAAS;IAC5B;AACF;AAEA,eAAed,4BAA2B"}
1
+ {"version":3,"sources":["../../../src/versions/drafts/replaceWithDraftIfAvailable.ts"],"sourcesContent":["import type { SanitizedCollectionConfig, TypeWithID } from '../../collections/config/types.js'\nimport type { AccessResult } from '../../config/types.js'\nimport type { FindGlobalVersionsArgs, FindVersionsArgs } from '../../database/types.js'\nimport type { SanitizedGlobalConfig } from '../../globals/config/types.js'\nimport type { PayloadRequest, SelectType, Where } from '../../types/index.js'\n\nimport { hasWhereAccessResult } from '../../auth/index.js'\nimport { combineQueries } from '../../database/combineQueries.js'\nimport { docHasTimestamps } from '../../types/index.js'\nimport { deepCopyObjectSimple } from '../../utilities/deepCopyObject.js'\nimport sanitizeInternalFields from '../../utilities/sanitizeInternalFields.js'\nimport { appendVersionToQueryKey } from './appendVersionToQueryKey.js'\nimport { getQueryDraftsSelect } from './getQueryDraftsSelect.js'\n\ntype Arguments<T> = {\n accessResult: AccessResult\n doc: T\n entity: SanitizedCollectionConfig | SanitizedGlobalConfig\n entityType: 'collection' | 'global'\n overrideAccess: boolean\n req: PayloadRequest\n select?: SelectType\n}\n\nconst replaceWithDraftIfAvailable = async <T extends TypeWithID>({\n accessResult,\n doc,\n entity,\n entityType,\n req,\n select,\n}: Arguments<T>): Promise<T> => {\n const { locale } = req\n\n const queryToBuild: Where = {\n and: [\n {\n 'version._status': {\n equals: 'draft',\n },\n },\n ],\n }\n\n if (entityType === 'collection') {\n queryToBuild.and.push({\n parent: {\n equals: doc.id,\n },\n })\n }\n\n if (docHasTimestamps(doc)) {\n queryToBuild.and.push({\n or: [\n {\n updatedAt: {\n greater_than: doc.updatedAt,\n },\n },\n {\n latest: {\n equals: true,\n },\n },\n ],\n })\n }\n\n let versionAccessResult\n\n if (hasWhereAccessResult(accessResult)) {\n versionAccessResult = appendVersionToQueryKey(accessResult)\n }\n\n const findVersionsArgs: FindGlobalVersionsArgs & FindVersionsArgs = {\n collection: entity.slug,\n global: entity.slug,\n limit: 1,\n locale,\n pagination: false,\n req,\n select: getQueryDraftsSelect({ select }),\n sort: '-updatedAt',\n where: combineQueries(queryToBuild, versionAccessResult),\n }\n\n let versionDocs\n if (entityType === 'global') {\n versionDocs = (await req.payload.db.findGlobalVersions<T>(findVersionsArgs)).docs\n } else {\n versionDocs = (await req.payload.db.findVersions<T>(findVersionsArgs)).docs\n }\n\n let draft = versionDocs[0]\n\n if (!draft) {\n return doc\n }\n\n draft = deepCopyObjectSimple(draft)\n draft = sanitizeInternalFields(draft)\n\n // Patch globalType onto version doc\n if (entityType === 'global' && 'globalType' in doc) {\n draft.version.globalType = doc.globalType\n }\n\n // handle when .version wasn't selected due to projection\n if (!draft.version) {\n draft.version = {}\n }\n\n // Disregard all other draft content at this point,\n // Only interested in the version itself.\n // Operations will handle firing hooks, etc.\n\n draft.version.id = doc.id\n\n return draft.version\n}\n\nexport default replaceWithDraftIfAvailable\n"],"names":["hasWhereAccessResult","combineQueries","docHasTimestamps","deepCopyObjectSimple","sanitizeInternalFields","appendVersionToQueryKey","getQueryDraftsSelect","replaceWithDraftIfAvailable","accessResult","doc","entity","entityType","req","select","locale","queryToBuild","and","equals","push","parent","id","or","updatedAt","greater_than","latest","versionAccessResult","findVersionsArgs","collection","slug","global","limit","pagination","sort","where","versionDocs","payload","db","findGlobalVersions","docs","findVersions","draft","version","globalType"],"mappings":"AAMA,SAASA,oBAAoB,QAAQ,sBAAqB;AAC1D,SAASC,cAAc,QAAQ,mCAAkC;AACjE,SAASC,gBAAgB,QAAQ,uBAAsB;AACvD,SAASC,oBAAoB,QAAQ,oCAAmC;AACxE,OAAOC,4BAA4B,4CAA2C;AAC9E,SAASC,uBAAuB,QAAQ,+BAA8B;AACtE,SAASC,oBAAoB,QAAQ,4BAA2B;AAYhE,MAAMC,8BAA8B,OAA6B,EAC/DC,YAAY,EACZC,GAAG,EACHC,MAAM,EACNC,UAAU,EACVC,GAAG,EACHC,MAAM,EACO;IACb,MAAM,EAAEC,MAAM,EAAE,GAAGF;IAEnB,MAAMG,eAAsB;QAC1BC,KAAK;YACH;gBACE,mBAAmB;oBACjBC,QAAQ;gBACV;YACF;SACD;IACH;IAEA,IAAIN,eAAe,cAAc;QAC/BI,aAAaC,GAAG,CAACE,IAAI,CAAC;YACpBC,QAAQ;gBACNF,QAAQR,IAAIW,EAAE;YAChB;QACF;IACF;IAEA,IAAIlB,iBAAiBO,MAAM;QACzBM,aAAaC,GAAG,CAACE,IAAI,CAAC;YACpBG,IAAI;gBACF;oBACEC,WAAW;wBACTC,cAAcd,IAAIa,SAAS;oBAC7B;gBACF;gBACA;oBACEE,QAAQ;wBACNP,QAAQ;oBACV;gBACF;aACD;QACH;IACF;IAEA,IAAIQ;IAEJ,IAAIzB,qBAAqBQ,eAAe;QACtCiB,sBAAsBpB,wBAAwBG;IAChD;IAEA,MAAMkB,mBAA8D;QAClEC,YAAYjB,OAAOkB,IAAI;QACvBC,QAAQnB,OAAOkB,IAAI;QACnBE,OAAO;QACPhB;QACAiB,YAAY;QACZnB;QACAC,QAAQP,qBAAqB;YAAEO;QAAO;QACtCmB,MAAM;QACNC,OAAOhC,eAAec,cAAcU;IACtC;IAEA,IAAIS;IACJ,IAAIvB,eAAe,UAAU;QAC3BuB,cAAc,AAAC,CAAA,MAAMtB,IAAIuB,OAAO,CAACC,EAAE,CAACC,kBAAkB,CAAIX,iBAAgB,EAAGY,IAAI;IACnF,OAAO;QACLJ,cAAc,AAAC,CAAA,MAAMtB,IAAIuB,OAAO,CAACC,EAAE,CAACG,YAAY,CAAIb,iBAAgB,EAAGY,IAAI;IAC7E;IAEA,IAAIE,QAAQN,WAAW,CAAC,EAAE;IAE1B,IAAI,CAACM,OAAO;QACV,OAAO/B;IACT;IAEA+B,QAAQrC,qBAAqBqC;IAC7BA,QAAQpC,uBAAuBoC;IAE/B,oCAAoC;IACpC,IAAI7B,eAAe,YAAY,gBAAgBF,KAAK;QAClD+B,MAAMC,OAAO,CAACC,UAAU,GAAGjC,IAAIiC,UAAU;IAC3C;IAEA,yDAAyD;IACzD,IAAI,CAACF,MAAMC,OAAO,EAAE;QAClBD,MAAMC,OAAO,GAAG,CAAC;IACnB;IAEA,mDAAmD;IACnD,yCAAyC;IACzC,4CAA4C;IAE5CD,MAAMC,OAAO,CAACrB,EAAE,GAAGX,IAAIW,EAAE;IAEzB,OAAOoB,MAAMC,OAAO;AACtB;AAEA,eAAelC,4BAA2B"}
@@ -1,7 +1,7 @@
1
1
  import type { SanitizedCollectionConfig, TypeWithID } from '../collections/config/types.js';
2
2
  import type { SanitizedGlobalConfig } from '../globals/config/types.js';
3
3
  import type { Payload } from '../index.js';
4
- import type { PayloadRequest } from '../types/index.js';
4
+ import type { PayloadRequest, SelectType } from '../types/index.js';
5
5
  type Args = {
6
6
  autosave?: boolean;
7
7
  collection?: SanitizedCollectionConfig;
@@ -12,8 +12,9 @@ type Args = {
12
12
  payload: Payload;
13
13
  publishSpecificLocale?: string;
14
14
  req?: PayloadRequest;
15
+ select?: SelectType;
15
16
  snapshot?: any;
16
17
  };
17
- export declare const saveVersion: ({ id, autosave, collection, docWithLocales: doc, draft, global, payload, publishSpecificLocale, req, snapshot, }: Args) => Promise<TypeWithID>;
18
+ export declare const saveVersion: ({ id, autosave, collection, docWithLocales: doc, draft, global, payload, publishSpecificLocale, req, select, snapshot, }: Args) => Promise<TypeWithID>;
18
19
  export {};
19
20
  //# sourceMappingURL=saveVersion.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"saveVersion.d.ts","sourceRoot":"","sources":["../../src/versions/saveVersion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAC3F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AACvE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAMvD,KAAK,IAAI,GAAG;IACV,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,UAAU,CAAC,EAAE,yBAAyB,CAAA;IACtC,cAAc,EAAE,GAAG,CAAA;IACnB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,MAAM,CAAC,EAAE,qBAAqB,CAAA;IAC9B,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,OAAO,EAAE,OAAO,CAAA;IAChB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,GAAG,CAAC,EAAE,cAAc,CAAA;IACpB,QAAQ,CAAC,EAAE,GAAG,CAAA;CACf,CAAA;AAED,eAAO,MAAM,WAAW,qHAWrB,IAAI,KAAG,OAAO,CAAC,UAAU,CA0K3B,CAAA"}
1
+ {"version":3,"file":"saveVersion.d.ts","sourceRoot":"","sources":["../../src/versions/saveVersion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAC3F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AACvE,OAAO,KAAK,EAAoB,OAAO,EAAE,MAAM,aAAa,CAAA;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAOnE,KAAK,IAAI,GAAG;IACV,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,UAAU,CAAC,EAAE,yBAAyB,CAAA;IACtC,cAAc,EAAE,GAAG,CAAA;IACnB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,MAAM,CAAC,EAAE,qBAAqB,CAAA;IAC9B,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,OAAO,EAAE,OAAO,CAAA;IAChB,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,GAAG,CAAC,EAAE,cAAc,CAAA;IACpB,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,QAAQ,CAAC,EAAE,GAAG,CAAA;CACf,CAAA;AAED,eAAO,MAAM,WAAW,6HAYrB,IAAI,KAAG,OAAO,CAAC,UAAU,CA4K3B,CAAA"}
@@ -1,7 +1,8 @@
1
1
  import { deepCopyObjectSimple } from '../index.js';
2
2
  import sanitizeInternalFields from '../utilities/sanitizeInternalFields.js';
3
+ import { getQueryDraftsSelect } from './drafts/getQueryDraftsSelect.js';
3
4
  import { enforceMaxVersions } from './enforceMaxVersions.js';
4
- export const saveVersion = async ({ id, autosave, collection, docWithLocales: doc, draft, global, payload, publishSpecificLocale, req, snapshot })=>{
5
+ export const saveVersion = async ({ id, autosave, collection, docWithLocales: doc, draft, global, payload, publishSpecificLocale, req, select, snapshot })=>{
5
6
  let result;
6
7
  let createNewVersion = true;
7
8
  const now = new Date().toISOString();
@@ -85,6 +86,9 @@ export const saveVersion = async ({ id, autosave, collection, docWithLocales: do
85
86
  parent: collection ? id : undefined,
86
87
  publishedLocale: publishSpecificLocale || undefined,
87
88
  req,
89
+ select: getQueryDraftsSelect({
90
+ select
91
+ }),
88
92
  updatedAt: now,
89
93
  versionData
90
94
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/versions/saveVersion.ts"],"sourcesContent":["import type { SanitizedCollectionConfig, TypeWithID } from '../collections/config/types.js'\nimport type { SanitizedGlobalConfig } from '../globals/config/types.js'\nimport type { Payload } from '../index.js'\nimport type { PayloadRequest } from '../types/index.js'\n\nimport { deepCopyObjectSimple } from '../index.js'\nimport sanitizeInternalFields from '../utilities/sanitizeInternalFields.js'\nimport { enforceMaxVersions } from './enforceMaxVersions.js'\n\ntype Args = {\n autosave?: boolean\n collection?: SanitizedCollectionConfig\n docWithLocales: any\n draft?: boolean\n global?: SanitizedGlobalConfig\n id?: number | string\n payload: Payload\n publishSpecificLocale?: string\n req?: PayloadRequest\n snapshot?: any\n}\n\nexport const saveVersion = async ({\n id,\n autosave,\n collection,\n docWithLocales: doc,\n draft,\n global,\n payload,\n publishSpecificLocale,\n req,\n snapshot,\n}: Args): Promise<TypeWithID> => {\n let result\n let createNewVersion = true\n const now = new Date().toISOString()\n const versionData = deepCopyObjectSimple(doc)\n if (draft) {\n versionData._status = 'draft'\n }\n if (versionData._id) {\n delete versionData._id\n }\n\n try {\n if (autosave) {\n let docs\n const findVersionArgs = {\n limit: 1,\n pagination: false,\n req,\n sort: '-updatedAt',\n }\n if (collection) {\n ;({ docs } = await payload.db.findVersions({\n ...findVersionArgs,\n collection: collection.slug,\n limit: 1,\n pagination: false,\n req,\n where: {\n parent: {\n equals: id,\n },\n },\n }))\n } else {\n ;({ docs } = await payload.db.findGlobalVersions({\n ...findVersionArgs,\n global: global.slug,\n limit: 1,\n pagination: false,\n req,\n }))\n }\n const [latestVersion] = docs\n\n // overwrite the latest version if it's set to autosave\n if (latestVersion?.autosave === true) {\n createNewVersion = false\n\n const data: Record<string, unknown> = {\n createdAt: new Date(latestVersion.createdAt).toISOString(),\n latest: true,\n parent: id,\n updatedAt: now,\n version: {\n ...versionData,\n },\n }\n\n const updateVersionArgs = {\n id: latestVersion.id,\n req,\n versionData: data as TypeWithID,\n }\n\n if (collection) {\n result = await payload.db.updateVersion({\n ...updateVersionArgs,\n collection: collection.slug,\n req,\n })\n } else {\n result = await payload.db.updateGlobalVersion({\n ...updateVersionArgs,\n global: global.slug,\n req,\n })\n }\n }\n }\n\n if (createNewVersion) {\n const createVersionArgs = {\n autosave: Boolean(autosave),\n collectionSlug: undefined,\n createdAt: now,\n globalSlug: undefined,\n parent: collection ? id : undefined,\n publishedLocale: publishSpecificLocale || undefined,\n req,\n updatedAt: now,\n versionData,\n }\n\n if (collection) {\n createVersionArgs.collectionSlug = collection.slug\n result = await payload.db.createVersion(createVersionArgs)\n }\n\n if (global) {\n createVersionArgs.globalSlug = global.slug\n result = await payload.db.createGlobalVersion(createVersionArgs)\n }\n\n if (publishSpecificLocale && snapshot) {\n const snapshotData = deepCopyObjectSimple(snapshot)\n if (snapshotData._id) {\n delete snapshotData._id\n }\n\n snapshotData._status = 'draft'\n\n const snapshotDate = new Date().toISOString()\n\n const updatedArgs = {\n ...createVersionArgs,\n createdAt: snapshotDate,\n snapshot: true,\n updatedAt: snapshotDate,\n versionData: snapshotData,\n } as any\n\n if (collection) {\n await payload.db.createVersion(updatedArgs)\n }\n if (global) {\n await payload.db.createGlobalVersion(updatedArgs)\n }\n }\n }\n } catch (err) {\n let errorMessage: string\n\n if (collection) {\n errorMessage = `There was an error while saving a version for the ${collection.labels.singular} with ID ${id}.`\n }\n if (global) {\n errorMessage = `There was an error while saving a version for the global ${global.label}.`\n }\n payload.logger.error(errorMessage)\n payload.logger.error(err)\n return\n }\n\n let max = 100\n\n if (collection && typeof collection.versions.maxPerDoc === 'number') {\n max = collection.versions.maxPerDoc\n }\n if (global && typeof global.versions.max === 'number') {\n max = global.versions.max\n }\n\n if (createNewVersion && max > 0) {\n await enforceMaxVersions({\n id,\n collection,\n global,\n max,\n payload,\n req,\n })\n }\n\n let createdVersion = result.version\n\n createdVersion = sanitizeInternalFields(createdVersion)\n createdVersion.id = result.parent\n\n return createdVersion\n}\n"],"names":["deepCopyObjectSimple","sanitizeInternalFields","enforceMaxVersions","saveVersion","id","autosave","collection","docWithLocales","doc","draft","global","payload","publishSpecificLocale","req","snapshot","result","createNewVersion","now","Date","toISOString","versionData","_status","_id","docs","findVersionArgs","limit","pagination","sort","db","findVersions","slug","where","parent","equals","findGlobalVersions","latestVersion","data","createdAt","latest","updatedAt","version","updateVersionArgs","updateVersion","updateGlobalVersion","createVersionArgs","Boolean","collectionSlug","undefined","globalSlug","publishedLocale","createVersion","createGlobalVersion","snapshotData","snapshotDate","updatedArgs","err","errorMessage","labels","singular","label","logger","error","max","versions","maxPerDoc","createdVersion"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/versions/saveVersion.ts"],"sourcesContent":["import type { SanitizedCollectionConfig, TypeWithID } from '../collections/config/types.js'\nimport type { SanitizedGlobalConfig } from '../globals/config/types.js'\nimport type { FindVersionsArgs, Payload } from '../index.js'\nimport type { PayloadRequest, SelectType } from '../types/index.js'\n\nimport { deepCopyObjectSimple } from '../index.js'\nimport sanitizeInternalFields from '../utilities/sanitizeInternalFields.js'\nimport { getQueryDraftsSelect } from './drafts/getQueryDraftsSelect.js'\nimport { enforceMaxVersions } from './enforceMaxVersions.js'\n\ntype Args = {\n autosave?: boolean\n collection?: SanitizedCollectionConfig\n docWithLocales: any\n draft?: boolean\n global?: SanitizedGlobalConfig\n id?: number | string\n payload: Payload\n publishSpecificLocale?: string\n req?: PayloadRequest\n select?: SelectType\n snapshot?: any\n}\n\nexport const saveVersion = async ({\n id,\n autosave,\n collection,\n docWithLocales: doc,\n draft,\n global,\n payload,\n publishSpecificLocale,\n req,\n select,\n snapshot,\n}: Args): Promise<TypeWithID> => {\n let result\n let createNewVersion = true\n const now = new Date().toISOString()\n const versionData = deepCopyObjectSimple(doc)\n if (draft) {\n versionData._status = 'draft'\n }\n if (versionData._id) {\n delete versionData._id\n }\n\n try {\n if (autosave) {\n let docs\n const findVersionArgs = {\n limit: 1,\n pagination: false,\n req,\n sort: '-updatedAt',\n }\n\n if (collection) {\n ;({ docs } = await payload.db.findVersions({\n ...findVersionArgs,\n collection: collection.slug,\n limit: 1,\n pagination: false,\n req,\n where: {\n parent: {\n equals: id,\n },\n },\n }))\n } else {\n ;({ docs } = await payload.db.findGlobalVersions({\n ...findVersionArgs,\n global: global.slug,\n limit: 1,\n pagination: false,\n req,\n }))\n }\n const [latestVersion] = docs\n\n // overwrite the latest version if it's set to autosave\n if (latestVersion?.autosave === true) {\n createNewVersion = false\n\n const data: Record<string, unknown> = {\n createdAt: new Date(latestVersion.createdAt).toISOString(),\n latest: true,\n parent: id,\n updatedAt: now,\n version: {\n ...versionData,\n },\n }\n\n const updateVersionArgs = {\n id: latestVersion.id,\n req,\n versionData: data as TypeWithID,\n }\n\n if (collection) {\n result = await payload.db.updateVersion({\n ...updateVersionArgs,\n collection: collection.slug,\n req,\n })\n } else {\n result = await payload.db.updateGlobalVersion({\n ...updateVersionArgs,\n global: global.slug,\n req,\n })\n }\n }\n }\n\n if (createNewVersion) {\n const createVersionArgs = {\n autosave: Boolean(autosave),\n collectionSlug: undefined,\n createdAt: now,\n globalSlug: undefined,\n parent: collection ? id : undefined,\n publishedLocale: publishSpecificLocale || undefined,\n req,\n select: getQueryDraftsSelect({ select }),\n updatedAt: now,\n versionData,\n }\n\n if (collection) {\n createVersionArgs.collectionSlug = collection.slug\n result = await payload.db.createVersion(createVersionArgs)\n }\n\n if (global) {\n createVersionArgs.globalSlug = global.slug\n result = await payload.db.createGlobalVersion(createVersionArgs)\n }\n\n if (publishSpecificLocale && snapshot) {\n const snapshotData = deepCopyObjectSimple(snapshot)\n if (snapshotData._id) {\n delete snapshotData._id\n }\n\n snapshotData._status = 'draft'\n\n const snapshotDate = new Date().toISOString()\n\n const updatedArgs = {\n ...createVersionArgs,\n createdAt: snapshotDate,\n snapshot: true,\n updatedAt: snapshotDate,\n versionData: snapshotData,\n } as any\n\n if (collection) {\n await payload.db.createVersion(updatedArgs)\n }\n if (global) {\n await payload.db.createGlobalVersion(updatedArgs)\n }\n }\n }\n } catch (err) {\n let errorMessage: string\n\n if (collection) {\n errorMessage = `There was an error while saving a version for the ${collection.labels.singular} with ID ${id}.`\n }\n if (global) {\n errorMessage = `There was an error while saving a version for the global ${global.label}.`\n }\n payload.logger.error(errorMessage)\n payload.logger.error(err)\n return\n }\n\n let max = 100\n\n if (collection && typeof collection.versions.maxPerDoc === 'number') {\n max = collection.versions.maxPerDoc\n }\n if (global && typeof global.versions.max === 'number') {\n max = global.versions.max\n }\n\n if (createNewVersion && max > 0) {\n await enforceMaxVersions({\n id,\n collection,\n global,\n max,\n payload,\n req,\n })\n }\n\n let createdVersion = result.version\n\n createdVersion = sanitizeInternalFields(createdVersion)\n createdVersion.id = result.parent\n\n return createdVersion\n}\n"],"names":["deepCopyObjectSimple","sanitizeInternalFields","getQueryDraftsSelect","enforceMaxVersions","saveVersion","id","autosave","collection","docWithLocales","doc","draft","global","payload","publishSpecificLocale","req","select","snapshot","result","createNewVersion","now","Date","toISOString","versionData","_status","_id","docs","findVersionArgs","limit","pagination","sort","db","findVersions","slug","where","parent","equals","findGlobalVersions","latestVersion","data","createdAt","latest","updatedAt","version","updateVersionArgs","updateVersion","updateGlobalVersion","createVersionArgs","Boolean","collectionSlug","undefined","globalSlug","publishedLocale","createVersion","createGlobalVersion","snapshotData","snapshotDate","updatedArgs","err","errorMessage","labels","singular","label","logger","error","max","versions","maxPerDoc","createdVersion"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "payload",
3
- "version": "3.0.0-beta.120",
3
+ "version": "3.0.0-beta.121",
4
4
  "description": "Node, React, Headless CMS and Application Framework built on Next.js",
5
5
  "keywords": [
6
6
  "admin panel",
@@ -78,6 +78,7 @@
78
78
  "bson-objectid": "2.0.4",
79
79
  "ci-info": "^4.0.0",
80
80
  "console-table-printer": "2.11.2",
81
+ "croner": "8.1.2",
81
82
  "dataloader": "2.2.2",
82
83
  "deepmerge": "4.3.1",
83
84
  "file-type": "19.3.0",
@@ -95,7 +96,7 @@
95
96
  "ts-essentials": "10.0.2",
96
97
  "tsx": "4.19.1",
97
98
  "uuid": "10.0.0",
98
- "@payloadcms/translations": "3.0.0-beta.120"
99
+ "@payloadcms/translations": "3.0.0-beta.121"
99
100
  },
100
101
  "devDependencies": {
101
102
  "@hyrious/esbuild-plugin-commonjs": "^0.2.4",