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
@@ -11,7 +11,7 @@ import { traverseFields } from './traverseFields.js';
11
11
  // - Execute field hooks
12
12
  // - Execute read access control
13
13
  // - Populate relationships
14
- export const promise = async ({ collection, context, currentDepth, depth, doc, draft, fallbackLocale, field, fieldPromises, findMany, flattenLocales, global, locale, overrideAccess, parentPath, parentSchemaPath, populationPromises, req, showHiddenFields, siblingDoc, triggerAccessControl = true, triggerHooks = true })=>{
14
+ export const promise = async ({ collection, context, currentDepth, depth, doc, draft, fallbackLocale, field, fieldPromises, findMany, flattenLocales, global, locale, overrideAccess, parentPath, parentSchemaPath, populationPromises, req, select, selectMode, showHiddenFields, siblingDoc, triggerAccessControl = true, triggerHooks = true })=>{
15
15
  const { path: fieldPath, schemaPath: fieldSchemaPath } = getFieldPaths({
16
16
  field,
17
17
  parentPath,
@@ -20,6 +20,20 @@ export const promise = async ({ collection, context, currentDepth, depth, doc, d
20
20
  if (fieldAffectsData(field) && field.hidden && typeof siblingDoc[field.name] !== 'undefined' && !showHiddenFields) {
21
21
  delete siblingDoc[field.name];
22
22
  }
23
+ if (fieldAffectsData(field) && select && selectMode) {
24
+ if (selectMode === 'include') {
25
+ if (!select[field.name]) {
26
+ delete siblingDoc[field.name];
27
+ return;
28
+ }
29
+ }
30
+ if (selectMode === 'exclude') {
31
+ if (select[field.name] === false) {
32
+ delete siblingDoc[field.name];
33
+ return;
34
+ }
35
+ }
36
+ }
23
37
  const shouldHoistLocalizedValue = flattenLocales && fieldAffectsData(field) && typeof siblingDoc[field.name] === 'object' && siblingDoc[field.name] !== null && field.localized && locale !== 'all' && req.payload.config.localization;
24
38
  if (shouldHoistLocalizedValue) {
25
39
  // replace actual value with localized value before sanitizing
@@ -204,6 +218,7 @@ export const promise = async ({ collection, context, currentDepth, depth, doc, d
204
218
  if (typeof siblingDoc[field.name] !== 'object') {
205
219
  groupDoc = {};
206
220
  }
221
+ const groupSelect = select?.[field.name];
207
222
  traverseFields({
208
223
  collection,
209
224
  context,
@@ -223,6 +238,8 @@ export const promise = async ({ collection, context, currentDepth, depth, doc, d
223
238
  populationPromises,
224
239
  req,
225
240
  schemaPath: fieldSchemaPath,
241
+ select: typeof groupSelect === 'object' ? groupSelect : undefined,
242
+ selectMode,
226
243
  showHiddenFields,
227
244
  siblingDoc: groupDoc,
228
245
  triggerAccessControl,
@@ -233,6 +250,10 @@ export const promise = async ({ collection, context, currentDepth, depth, doc, d
233
250
  case 'array':
234
251
  {
235
252
  const rows = siblingDoc[field.name];
253
+ const arraySelect = select?.[field.name];
254
+ if (selectMode === 'include' && typeof arraySelect === 'object') {
255
+ arraySelect.id = true;
256
+ }
236
257
  if (Array.isArray(rows)) {
237
258
  rows.forEach((row, i)=>{
238
259
  traverseFields({
@@ -257,6 +278,8 @@ export const promise = async ({ collection, context, currentDepth, depth, doc, d
257
278
  populationPromises,
258
279
  req,
259
280
  schemaPath: fieldSchemaPath,
281
+ select: typeof arraySelect === 'object' ? arraySelect : undefined,
282
+ selectMode,
260
283
  showHiddenFields,
261
284
  siblingDoc: row || {},
262
285
  triggerAccessControl,
@@ -305,9 +328,30 @@ export const promise = async ({ collection, context, currentDepth, depth, doc, d
305
328
  case 'blocks':
306
329
  {
307
330
  const rows = siblingDoc[field.name];
331
+ const blocksSelect = select?.[field.name];
308
332
  if (Array.isArray(rows)) {
309
333
  rows.forEach((row, i)=>{
310
334
  const block = field.blocks.find((blockType)=>blockType.slug === row.blockType);
335
+ let blockSelectMode = selectMode;
336
+ if (typeof blocksSelect === 'object') {
337
+ // sanitize blocks: {cta: false} to blocks: {cta: {id: true, blockType: true}}
338
+ if (selectMode === 'exclude' && blocksSelect[block.slug] === false) {
339
+ blockSelectMode = 'include';
340
+ blocksSelect[block.slug] = {
341
+ id: true,
342
+ blockType: true
343
+ };
344
+ } else if (selectMode === 'include') {
345
+ if (!blocksSelect[block.slug]) {
346
+ blocksSelect[block.slug] = {};
347
+ }
348
+ if (typeof blocksSelect[block.slug] === 'object') {
349
+ blocksSelect[block.slug]['id'] = true;
350
+ blocksSelect[block.slug]['blockType'] = true;
351
+ }
352
+ }
353
+ }
354
+ const blockSelect = blocksSelect?.[block.slug];
311
355
  if (block) {
312
356
  traverseFields({
313
357
  collection,
@@ -331,6 +375,8 @@ export const promise = async ({ collection, context, currentDepth, depth, doc, d
331
375
  populationPromises,
332
376
  req,
333
377
  schemaPath: fieldSchemaPath,
378
+ select: typeof blockSelect === 'object' ? blockSelect : undefined,
379
+ selectMode: blockSelectMode,
334
380
  showHiddenFields,
335
381
  siblingDoc: row || {},
336
382
  triggerAccessControl,
@@ -402,6 +448,8 @@ export const promise = async ({ collection, context, currentDepth, depth, doc, d
402
448
  populationPromises,
403
449
  req,
404
450
  schemaPath: fieldSchemaPath,
451
+ select,
452
+ selectMode,
405
453
  showHiddenFields,
406
454
  siblingDoc,
407
455
  triggerAccessControl,
@@ -412,11 +460,17 @@ export const promise = async ({ collection, context, currentDepth, depth, doc, d
412
460
  case 'tab':
413
461
  {
414
462
  let tabDoc = siblingDoc;
463
+ let tabSelect;
415
464
  if (tabHasName(field)) {
416
465
  tabDoc = siblingDoc[field.name];
417
466
  if (typeof siblingDoc[field.name] !== 'object') {
418
467
  tabDoc = {};
419
468
  }
469
+ if (typeof select?.[field.name] === 'object') {
470
+ tabSelect = select?.[field.name];
471
+ }
472
+ } else {
473
+ tabSelect = select;
420
474
  }
421
475
  traverseFields({
422
476
  collection,
@@ -437,6 +491,8 @@ export const promise = async ({ collection, context, currentDepth, depth, doc, d
437
491
  populationPromises,
438
492
  req,
439
493
  schemaPath: fieldSchemaPath,
494
+ select: tabSelect,
495
+ selectMode,
440
496
  showHiddenFields,
441
497
  siblingDoc: tabDoc,
442
498
  triggerAccessControl,
@@ -468,6 +524,8 @@ export const promise = async ({ collection, context, currentDepth, depth, doc, d
468
524
  populationPromises,
469
525
  req,
470
526
  schemaPath: fieldSchemaPath,
527
+ select,
528
+ selectMode,
471
529
  showHiddenFields,
472
530
  siblingDoc,
473
531
  triggerAccessControl,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/fields/hooks/afterRead/promise.ts"],"sourcesContent":["import type { RichTextAdapter } from '../../../admin/RichText.js'\nimport type { SanitizedCollectionConfig } from '../../../collections/config/types.js'\nimport type { SanitizedGlobalConfig } from '../../../globals/config/types.js'\nimport type { JsonObject, PayloadRequest, RequestContext } from '../../../types/index.js'\nimport type { Field, TabAsField } from '../../config/types.js'\n\nimport { MissingEditorProp } from '../../../errors/index.js'\nimport { fieldAffectsData, tabHasName } from '../../config/types.js'\nimport { getDefaultValue } from '../../getDefaultValue.js'\nimport { getFieldPaths } from '../../getFieldPaths.js'\nimport { relationshipPopulationPromise } from './relationshipPopulationPromise.js'\nimport { traverseFields } from './traverseFields.js'\n\ntype Args = {\n collection: null | SanitizedCollectionConfig\n context: RequestContext\n currentDepth: number\n depth: number\n doc: JsonObject\n draft: boolean\n fallbackLocale: null | string\n field: Field | TabAsField\n /**\n * fieldPromises are used for things like field hooks. They should be awaited before awaiting populationPromises\n */\n fieldPromises: Promise<void>[]\n findMany: boolean\n flattenLocales: boolean\n global: null | SanitizedGlobalConfig\n locale: null | string\n overrideAccess: boolean\n /**\n * The parent's path.\n */\n parentPath: (number | string)[]\n /**\n * The parent's schemaPath (path without indexes).\n */\n parentSchemaPath: string[]\n populationPromises: Promise<void>[]\n req: PayloadRequest\n showHiddenFields: boolean\n siblingDoc: JsonObject\n triggerAccessControl?: boolean\n triggerHooks?: boolean\n}\n\n// This function is responsible for the following actions, in order:\n// - Remove hidden fields from response\n// - Flatten locales into requested locale\n// - Sanitize outgoing data (point field, etc.)\n// - Execute field hooks\n// - Execute read access control\n// - Populate relationships\n\nexport const promise = async ({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n field,\n fieldPromises,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n parentPath,\n parentSchemaPath,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc,\n triggerAccessControl = true,\n triggerHooks = true,\n}: Args): Promise<void> => {\n const { path: fieldPath, schemaPath: fieldSchemaPath } = getFieldPaths({\n field,\n parentPath,\n parentSchemaPath,\n })\n\n if (\n fieldAffectsData(field) &&\n field.hidden &&\n typeof siblingDoc[field.name] !== 'undefined' &&\n !showHiddenFields\n ) {\n delete siblingDoc[field.name]\n }\n\n const shouldHoistLocalizedValue =\n flattenLocales &&\n fieldAffectsData(field) &&\n typeof siblingDoc[field.name] === 'object' &&\n siblingDoc[field.name] !== null &&\n field.localized &&\n locale !== 'all' &&\n req.payload.config.localization\n\n if (shouldHoistLocalizedValue) {\n // replace actual value with localized value before sanitizing\n // { [locale]: fields } -> fields\n const value = siblingDoc[field.name][locale]\n\n let hoistedValue = value\n\n if (fallbackLocale && fallbackLocale !== locale) {\n const fallbackValue = siblingDoc[field.name][fallbackLocale]\n const isNullOrUndefined = typeof value === 'undefined' || value === null\n\n if (fallbackValue) {\n switch (field.type) {\n case 'text':\n case 'textarea': {\n if (value === '' || isNullOrUndefined) {\n hoistedValue = fallbackValue\n }\n break\n }\n\n default: {\n if (isNullOrUndefined) {\n hoistedValue = fallbackValue\n }\n break\n }\n }\n }\n }\n\n siblingDoc[field.name] = hoistedValue\n }\n\n // Sanitize outgoing field value\n switch (field.type) {\n case 'group': {\n // Fill groups with empty objects so fields with hooks within groups can populate\n // themselves virtually as necessary\n if (typeof siblingDoc[field.name] === 'undefined') {\n siblingDoc[field.name] = {}\n }\n\n break\n }\n case 'tabs': {\n field.tabs.forEach((tab) => {\n if (\n tabHasName(tab) &&\n (typeof siblingDoc[tab.name] === 'undefined' || siblingDoc[tab.name] === null)\n ) {\n siblingDoc[tab.name] = {}\n }\n })\n\n break\n }\n\n case 'richText': {\n if (!field?.editor) {\n throw new MissingEditorProp(field) // while we allow disabling editor functionality, you should not have any richText fields defined if you do not have an editor\n }\n if (typeof field?.editor === 'function') {\n throw new Error('Attempted to access unsanitized rich text editor.')\n }\n\n // Rich Text fields should use afterRead hooks to do population. The previous editor.populationPromises have been renamed to editor.graphQLPopulationPromises\n break\n }\n\n case 'point': {\n const pointDoc = siblingDoc[field.name] as Record<string, unknown>\n if (Array.isArray(pointDoc?.coordinates) && pointDoc.coordinates.length === 2) {\n siblingDoc[field.name] = pointDoc.coordinates\n } else {\n siblingDoc[field.name] = undefined\n }\n\n break\n }\n\n default: {\n break\n }\n }\n\n if (fieldAffectsData(field)) {\n // Execute hooks\n if (triggerHooks && field.hooks?.afterRead) {\n await field.hooks.afterRead.reduce(async (priorHook, currentHook) => {\n await priorHook\n\n const shouldRunHookOnAllLocales =\n field.localized &&\n (locale === 'all' || !flattenLocales) &&\n typeof siblingDoc[field.name] === 'object'\n\n if (shouldRunHookOnAllLocales) {\n const hookPromises = Object.entries(siblingDoc[field.name]).map(([locale, value]) =>\n (async () => {\n const hookedValue = await currentHook({\n collection,\n context,\n currentDepth,\n data: doc,\n depth,\n draft,\n field,\n findMany,\n global,\n operation: 'read',\n originalDoc: doc,\n overrideAccess,\n path: fieldPath,\n req,\n schemaPath: fieldSchemaPath,\n showHiddenFields,\n siblingData: siblingDoc,\n value,\n })\n\n if (hookedValue !== undefined) {\n siblingDoc[field.name][locale] = hookedValue\n }\n })(),\n )\n\n await Promise.all(hookPromises)\n } else {\n const hookedValue = await currentHook({\n collection,\n context,\n currentDepth,\n data: doc,\n depth,\n draft,\n field,\n findMany,\n global,\n operation: 'read',\n originalDoc: doc,\n overrideAccess,\n path: fieldPath,\n req,\n schemaPath: fieldSchemaPath,\n showHiddenFields,\n siblingData: siblingDoc,\n value: siblingDoc[field.name],\n })\n\n if (hookedValue !== undefined) {\n siblingDoc[field.name] = hookedValue\n }\n }\n }, Promise.resolve())\n }\n\n // Execute access control\n let allowDefaultValue = true\n if (triggerAccessControl && field.access && field.access.read) {\n const result = overrideAccess\n ? true\n : await field.access.read({\n id: doc.id as number | string,\n data: doc,\n doc,\n req,\n siblingData: siblingDoc,\n })\n\n if (!result) {\n allowDefaultValue = false\n delete siblingDoc[field.name]\n }\n }\n\n // Set defaultValue on the field for globals being returned without being first created\n // or collection documents created prior to having a default\n if (\n allowDefaultValue &&\n typeof siblingDoc[field.name] === 'undefined' &&\n typeof field.defaultValue !== 'undefined'\n ) {\n siblingDoc[field.name] = await getDefaultValue({\n defaultValue: field.defaultValue,\n locale,\n user: req.user,\n value: siblingDoc[field.name],\n })\n }\n\n if (field.type === 'relationship' || field.type === 'upload' || field.type === 'join') {\n populationPromises.push(\n relationshipPopulationPromise({\n currentDepth,\n depth,\n draft,\n fallbackLocale,\n field,\n locale,\n overrideAccess,\n req,\n showHiddenFields,\n siblingDoc,\n }),\n )\n }\n }\n\n switch (field.type) {\n case 'group': {\n let groupDoc = siblingDoc[field.name] as JsonObject\n if (typeof siblingDoc[field.name] !== 'object') {\n groupDoc = {}\n }\n\n traverseFields({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldPromises,\n fields: field.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n path: fieldPath,\n populationPromises,\n req,\n schemaPath: fieldSchemaPath,\n showHiddenFields,\n siblingDoc: groupDoc,\n triggerAccessControl,\n triggerHooks,\n })\n\n break\n }\n\n case 'array': {\n const rows = siblingDoc[field.name] as JsonObject\n\n if (Array.isArray(rows)) {\n rows.forEach((row, i) => {\n traverseFields({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldPromises,\n fields: field.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n path: [...fieldPath, i],\n populationPromises,\n req,\n schemaPath: fieldSchemaPath,\n showHiddenFields,\n siblingDoc: row || {},\n triggerAccessControl,\n triggerHooks,\n })\n })\n } else if (!shouldHoistLocalizedValue && typeof rows === 'object' && rows !== null) {\n Object.values(rows).forEach((localeRows) => {\n if (Array.isArray(localeRows)) {\n localeRows.forEach((row, i) => {\n traverseFields({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldPromises,\n fields: field.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n path: [...fieldPath, i],\n populationPromises,\n req,\n schemaPath: fieldSchemaPath,\n showHiddenFields,\n siblingDoc: (row as JsonObject) || {},\n triggerAccessControl,\n triggerHooks,\n })\n })\n }\n })\n } else {\n siblingDoc[field.name] = []\n }\n break\n }\n\n case 'blocks': {\n const rows = siblingDoc[field.name]\n\n if (Array.isArray(rows)) {\n rows.forEach((row, i) => {\n const block = field.blocks.find(\n (blockType) => blockType.slug === (row as JsonObject).blockType,\n )\n\n if (block) {\n traverseFields({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldPromises,\n fields: block.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n path: [...fieldPath, i],\n populationPromises,\n req,\n schemaPath: fieldSchemaPath,\n showHiddenFields,\n siblingDoc: (row as JsonObject) || {},\n triggerAccessControl,\n triggerHooks,\n })\n }\n })\n } else if (!shouldHoistLocalizedValue && typeof rows === 'object' && rows !== null) {\n Object.values(rows).forEach((localeRows) => {\n if (Array.isArray(localeRows)) {\n localeRows.forEach((row, i) => {\n const block = field.blocks.find(\n (blockType) => blockType.slug === (row as JsonObject).blockType,\n )\n\n if (block) {\n traverseFields({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldPromises,\n fields: block.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n path: [...fieldPath, i],\n populationPromises,\n req,\n schemaPath: fieldSchemaPath,\n showHiddenFields,\n siblingDoc: (row as JsonObject) || {},\n triggerAccessControl,\n triggerHooks,\n })\n }\n })\n }\n })\n } else {\n siblingDoc[field.name] = []\n }\n\n break\n }\n\n case 'row':\n case 'collapsible': {\n traverseFields({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldPromises,\n fields: field.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n path: fieldPath,\n populationPromises,\n req,\n schemaPath: fieldSchemaPath,\n showHiddenFields,\n siblingDoc,\n triggerAccessControl,\n triggerHooks,\n })\n\n break\n }\n\n case 'tab': {\n let tabDoc = siblingDoc\n if (tabHasName(field)) {\n tabDoc = siblingDoc[field.name] as JsonObject\n if (typeof siblingDoc[field.name] !== 'object') {\n tabDoc = {}\n }\n }\n\n traverseFields({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldPromises,\n fields: field.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n path: fieldPath,\n populationPromises,\n req,\n schemaPath: fieldSchemaPath,\n showHiddenFields,\n siblingDoc: tabDoc,\n triggerAccessControl,\n triggerHooks,\n })\n\n break\n }\n\n case 'tabs': {\n traverseFields({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldPromises,\n fields: field.tabs.map((tab) => ({ ...tab, type: 'tab' })),\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n path: fieldPath,\n populationPromises,\n req,\n schemaPath: fieldSchemaPath,\n showHiddenFields,\n siblingDoc,\n triggerAccessControl,\n triggerHooks,\n })\n break\n }\n\n case 'richText': {\n if (!field?.editor) {\n throw new MissingEditorProp(field) // while we allow disabling editor functionality, you should not have any richText fields defined if you do not have an editor\n }\n if (typeof field?.editor === 'function') {\n throw new Error('Attempted to access unsanitized rich text editor.')\n }\n\n const editor: RichTextAdapter = field?.editor\n\n if (editor?.hooks?.afterRead?.length) {\n await editor.hooks.afterRead.reduce(async (priorHook, currentHook) => {\n await priorHook\n\n const shouldRunHookOnAllLocales =\n field.localized &&\n (locale === 'all' || !flattenLocales) &&\n typeof siblingDoc[field.name] === 'object'\n\n if (shouldRunHookOnAllLocales) {\n const hookPromises = Object.entries(siblingDoc[field.name]).map(([locale, value]) =>\n (async () => {\n const hookedValue = await currentHook({\n collection,\n context,\n currentDepth,\n data: doc,\n depth,\n draft,\n fallbackLocale,\n field,\n fieldPromises,\n findMany,\n flattenLocales,\n global,\n locale,\n operation: 'read',\n originalDoc: doc,\n overrideAccess,\n path: fieldPath,\n populationPromises,\n req,\n schemaPath: fieldSchemaPath,\n showHiddenFields,\n siblingData: siblingDoc,\n triggerAccessControl,\n triggerHooks,\n value,\n })\n\n if (hookedValue !== undefined) {\n siblingDoc[field.name][locale] = hookedValue\n }\n })(),\n )\n\n await Promise.all(hookPromises)\n } else {\n const hookedValue = await currentHook({\n collection,\n context,\n currentDepth,\n data: doc,\n depth,\n draft,\n fallbackLocale,\n field,\n fieldPromises,\n findMany,\n flattenLocales,\n global,\n locale,\n operation: 'read',\n originalDoc: doc,\n overrideAccess,\n path: fieldPath,\n populationPromises,\n req,\n schemaPath: fieldSchemaPath,\n showHiddenFields,\n siblingData: siblingDoc,\n triggerAccessControl,\n triggerHooks,\n value: siblingDoc[field.name],\n })\n\n if (hookedValue !== undefined) {\n siblingDoc[field.name] = hookedValue\n }\n }\n }, Promise.resolve())\n }\n break\n }\n\n default: {\n break\n }\n }\n}\n"],"names":["MissingEditorProp","fieldAffectsData","tabHasName","getDefaultValue","getFieldPaths","relationshipPopulationPromise","traverseFields","promise","collection","context","currentDepth","depth","doc","draft","fallbackLocale","field","fieldPromises","findMany","flattenLocales","global","locale","overrideAccess","parentPath","parentSchemaPath","populationPromises","req","showHiddenFields","siblingDoc","triggerAccessControl","triggerHooks","path","fieldPath","schemaPath","fieldSchemaPath","hidden","name","shouldHoistLocalizedValue","localized","payload","config","localization","value","hoistedValue","fallbackValue","isNullOrUndefined","type","tabs","forEach","tab","editor","Error","pointDoc","Array","isArray","coordinates","length","undefined","hooks","afterRead","reduce","priorHook","currentHook","shouldRunHookOnAllLocales","hookPromises","Object","entries","map","hookedValue","data","operation","originalDoc","siblingData","Promise","all","resolve","allowDefaultValue","access","read","result","id","defaultValue","user","push","groupDoc","fields","rows","row","i","values","localeRows","block","blocks","find","blockType","slug","tabDoc"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/fields/hooks/afterRead/promise.ts"],"sourcesContent":["import type { RichTextAdapter } from '../../../admin/RichText.js'\nimport type { SanitizedCollectionConfig } from '../../../collections/config/types.js'\nimport type { SanitizedGlobalConfig } from '../../../globals/config/types.js'\nimport type {\n JsonObject,\n PayloadRequest,\n RequestContext,\n SelectMode,\n SelectType,\n} from '../../../types/index.js'\nimport type { Field, TabAsField } from '../../config/types.js'\n\nimport { MissingEditorProp } from '../../../errors/index.js'\nimport { fieldAffectsData, tabHasName } from '../../config/types.js'\nimport { getDefaultValue } from '../../getDefaultValue.js'\nimport { getFieldPaths } from '../../getFieldPaths.js'\nimport { relationshipPopulationPromise } from './relationshipPopulationPromise.js'\nimport { traverseFields } from './traverseFields.js'\n\ntype Args = {\n collection: null | SanitizedCollectionConfig\n context: RequestContext\n currentDepth: number\n depth: number\n doc: JsonObject\n draft: boolean\n fallbackLocale: null | string\n field: Field | TabAsField\n /**\n * fieldPromises are used for things like field hooks. They should be awaited before awaiting populationPromises\n */\n fieldPromises: Promise<void>[]\n findMany: boolean\n flattenLocales: boolean\n global: null | SanitizedGlobalConfig\n locale: null | string\n overrideAccess: boolean\n /**\n * The parent's path.\n */\n parentPath: (number | string)[]\n /**\n * The parent's schemaPath (path without indexes).\n */\n parentSchemaPath: string[]\n populationPromises: Promise<void>[]\n req: PayloadRequest\n select?: SelectType\n selectMode?: SelectMode\n showHiddenFields: boolean\n siblingDoc: JsonObject\n triggerAccessControl?: boolean\n triggerHooks?: boolean\n}\n\n// This function is responsible for the following actions, in order:\n// - Remove hidden fields from response\n// - Flatten locales into requested locale\n// - Sanitize outgoing data (point field, etc.)\n// - Execute field hooks\n// - Execute read access control\n// - Populate relationships\n\nexport const promise = async ({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n field,\n fieldPromises,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n parentPath,\n parentSchemaPath,\n populationPromises,\n req,\n select,\n selectMode,\n showHiddenFields,\n siblingDoc,\n triggerAccessControl = true,\n triggerHooks = true,\n}: Args): Promise<void> => {\n const { path: fieldPath, schemaPath: fieldSchemaPath } = getFieldPaths({\n field,\n parentPath,\n parentSchemaPath,\n })\n\n if (\n fieldAffectsData(field) &&\n field.hidden &&\n typeof siblingDoc[field.name] !== 'undefined' &&\n !showHiddenFields\n ) {\n delete siblingDoc[field.name]\n }\n\n if (fieldAffectsData(field) && select && selectMode) {\n if (selectMode === 'include') {\n if (!select[field.name]) {\n delete siblingDoc[field.name]\n return\n }\n }\n\n if (selectMode === 'exclude') {\n if (select[field.name] === false) {\n delete siblingDoc[field.name]\n return\n }\n }\n }\n\n const shouldHoistLocalizedValue =\n flattenLocales &&\n fieldAffectsData(field) &&\n typeof siblingDoc[field.name] === 'object' &&\n siblingDoc[field.name] !== null &&\n field.localized &&\n locale !== 'all' &&\n req.payload.config.localization\n\n if (shouldHoistLocalizedValue) {\n // replace actual value with localized value before sanitizing\n // { [locale]: fields } -> fields\n const value = siblingDoc[field.name][locale]\n\n let hoistedValue = value\n\n if (fallbackLocale && fallbackLocale !== locale) {\n const fallbackValue = siblingDoc[field.name][fallbackLocale]\n const isNullOrUndefined = typeof value === 'undefined' || value === null\n\n if (fallbackValue) {\n switch (field.type) {\n case 'text':\n case 'textarea': {\n if (value === '' || isNullOrUndefined) {\n hoistedValue = fallbackValue\n }\n break\n }\n\n default: {\n if (isNullOrUndefined) {\n hoistedValue = fallbackValue\n }\n break\n }\n }\n }\n }\n\n siblingDoc[field.name] = hoistedValue\n }\n\n // Sanitize outgoing field value\n switch (field.type) {\n case 'group': {\n // Fill groups with empty objects so fields with hooks within groups can populate\n // themselves virtually as necessary\n if (typeof siblingDoc[field.name] === 'undefined') {\n siblingDoc[field.name] = {}\n }\n\n break\n }\n case 'tabs': {\n field.tabs.forEach((tab) => {\n if (\n tabHasName(tab) &&\n (typeof siblingDoc[tab.name] === 'undefined' || siblingDoc[tab.name] === null)\n ) {\n siblingDoc[tab.name] = {}\n }\n })\n\n break\n }\n\n case 'richText': {\n if (!field?.editor) {\n throw new MissingEditorProp(field) // while we allow disabling editor functionality, you should not have any richText fields defined if you do not have an editor\n }\n if (typeof field?.editor === 'function') {\n throw new Error('Attempted to access unsanitized rich text editor.')\n }\n\n // Rich Text fields should use afterRead hooks to do population. The previous editor.populationPromises have been renamed to editor.graphQLPopulationPromises\n break\n }\n\n case 'point': {\n const pointDoc = siblingDoc[field.name] as Record<string, unknown>\n if (Array.isArray(pointDoc?.coordinates) && pointDoc.coordinates.length === 2) {\n siblingDoc[field.name] = pointDoc.coordinates\n } else {\n siblingDoc[field.name] = undefined\n }\n\n break\n }\n\n default: {\n break\n }\n }\n\n if (fieldAffectsData(field)) {\n // Execute hooks\n if (triggerHooks && field.hooks?.afterRead) {\n await field.hooks.afterRead.reduce(async (priorHook, currentHook) => {\n await priorHook\n\n const shouldRunHookOnAllLocales =\n field.localized &&\n (locale === 'all' || !flattenLocales) &&\n typeof siblingDoc[field.name] === 'object'\n\n if (shouldRunHookOnAllLocales) {\n const hookPromises = Object.entries(siblingDoc[field.name]).map(([locale, value]) =>\n (async () => {\n const hookedValue = await currentHook({\n collection,\n context,\n currentDepth,\n data: doc,\n depth,\n draft,\n field,\n findMany,\n global,\n operation: 'read',\n originalDoc: doc,\n overrideAccess,\n path: fieldPath,\n req,\n schemaPath: fieldSchemaPath,\n showHiddenFields,\n siblingData: siblingDoc,\n value,\n })\n\n if (hookedValue !== undefined) {\n siblingDoc[field.name][locale] = hookedValue\n }\n })(),\n )\n\n await Promise.all(hookPromises)\n } else {\n const hookedValue = await currentHook({\n collection,\n context,\n currentDepth,\n data: doc,\n depth,\n draft,\n field,\n findMany,\n global,\n operation: 'read',\n originalDoc: doc,\n overrideAccess,\n path: fieldPath,\n req,\n schemaPath: fieldSchemaPath,\n showHiddenFields,\n siblingData: siblingDoc,\n value: siblingDoc[field.name],\n })\n\n if (hookedValue !== undefined) {\n siblingDoc[field.name] = hookedValue\n }\n }\n }, Promise.resolve())\n }\n\n // Execute access control\n let allowDefaultValue = true\n if (triggerAccessControl && field.access && field.access.read) {\n const result = overrideAccess\n ? true\n : await field.access.read({\n id: doc.id as number | string,\n data: doc,\n doc,\n req,\n siblingData: siblingDoc,\n })\n\n if (!result) {\n allowDefaultValue = false\n delete siblingDoc[field.name]\n }\n }\n\n // Set defaultValue on the field for globals being returned without being first created\n // or collection documents created prior to having a default\n if (\n allowDefaultValue &&\n typeof siblingDoc[field.name] === 'undefined' &&\n typeof field.defaultValue !== 'undefined'\n ) {\n siblingDoc[field.name] = await getDefaultValue({\n defaultValue: field.defaultValue,\n locale,\n user: req.user,\n value: siblingDoc[field.name],\n })\n }\n\n if (field.type === 'relationship' || field.type === 'upload' || field.type === 'join') {\n populationPromises.push(\n relationshipPopulationPromise({\n currentDepth,\n depth,\n draft,\n fallbackLocale,\n field,\n locale,\n overrideAccess,\n req,\n showHiddenFields,\n siblingDoc,\n }),\n )\n }\n }\n\n switch (field.type) {\n case 'group': {\n let groupDoc = siblingDoc[field.name] as JsonObject\n if (typeof siblingDoc[field.name] !== 'object') {\n groupDoc = {}\n }\n\n const groupSelect = select?.[field.name]\n\n traverseFields({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldPromises,\n fields: field.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n path: fieldPath,\n populationPromises,\n req,\n schemaPath: fieldSchemaPath,\n select: typeof groupSelect === 'object' ? groupSelect : undefined,\n selectMode,\n showHiddenFields,\n siblingDoc: groupDoc,\n triggerAccessControl,\n triggerHooks,\n })\n\n break\n }\n\n case 'array': {\n const rows = siblingDoc[field.name] as JsonObject\n\n const arraySelect = select?.[field.name]\n\n if (selectMode === 'include' && typeof arraySelect === 'object') {\n arraySelect.id = true\n }\n\n if (Array.isArray(rows)) {\n rows.forEach((row, i) => {\n traverseFields({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldPromises,\n fields: field.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n path: [...fieldPath, i],\n populationPromises,\n req,\n schemaPath: fieldSchemaPath,\n select: typeof arraySelect === 'object' ? arraySelect : undefined,\n selectMode,\n showHiddenFields,\n siblingDoc: row || {},\n triggerAccessControl,\n triggerHooks,\n })\n })\n } else if (!shouldHoistLocalizedValue && typeof rows === 'object' && rows !== null) {\n Object.values(rows).forEach((localeRows) => {\n if (Array.isArray(localeRows)) {\n localeRows.forEach((row, i) => {\n traverseFields({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldPromises,\n fields: field.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n path: [...fieldPath, i],\n populationPromises,\n req,\n schemaPath: fieldSchemaPath,\n showHiddenFields,\n siblingDoc: (row as JsonObject) || {},\n triggerAccessControl,\n triggerHooks,\n })\n })\n }\n })\n } else {\n siblingDoc[field.name] = []\n }\n break\n }\n\n case 'blocks': {\n const rows = siblingDoc[field.name]\n\n const blocksSelect = select?.[field.name]\n\n if (Array.isArray(rows)) {\n rows.forEach((row, i) => {\n const block = field.blocks.find(\n (blockType) => blockType.slug === (row as JsonObject).blockType,\n )\n\n let blockSelectMode = selectMode\n\n if (typeof blocksSelect === 'object') {\n // sanitize blocks: {cta: false} to blocks: {cta: {id: true, blockType: true}}\n if (selectMode === 'exclude' && blocksSelect[block.slug] === false) {\n blockSelectMode = 'include'\n blocksSelect[block.slug] = {\n id: true,\n blockType: true,\n }\n } else if (selectMode === 'include') {\n if (!blocksSelect[block.slug]) {\n blocksSelect[block.slug] = {}\n }\n\n if (typeof blocksSelect[block.slug] === 'object') {\n blocksSelect[block.slug]['id'] = true\n blocksSelect[block.slug]['blockType'] = true\n }\n }\n }\n\n const blockSelect = blocksSelect?.[block.slug]\n\n if (block) {\n traverseFields({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldPromises,\n fields: block.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n path: [...fieldPath, i],\n populationPromises,\n req,\n schemaPath: fieldSchemaPath,\n select: typeof blockSelect === 'object' ? blockSelect : undefined,\n selectMode: blockSelectMode,\n showHiddenFields,\n siblingDoc: (row as JsonObject) || {},\n triggerAccessControl,\n triggerHooks,\n })\n }\n })\n } else if (!shouldHoistLocalizedValue && typeof rows === 'object' && rows !== null) {\n Object.values(rows).forEach((localeRows) => {\n if (Array.isArray(localeRows)) {\n localeRows.forEach((row, i) => {\n const block = field.blocks.find(\n (blockType) => blockType.slug === (row as JsonObject).blockType,\n )\n\n if (block) {\n traverseFields({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldPromises,\n fields: block.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n path: [...fieldPath, i],\n populationPromises,\n req,\n schemaPath: fieldSchemaPath,\n showHiddenFields,\n siblingDoc: (row as JsonObject) || {},\n triggerAccessControl,\n triggerHooks,\n })\n }\n })\n }\n })\n } else {\n siblingDoc[field.name] = []\n }\n\n break\n }\n\n case 'row':\n case 'collapsible': {\n traverseFields({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldPromises,\n fields: field.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n path: fieldPath,\n populationPromises,\n req,\n schemaPath: fieldSchemaPath,\n select,\n selectMode,\n showHiddenFields,\n siblingDoc,\n triggerAccessControl,\n triggerHooks,\n })\n\n break\n }\n\n case 'tab': {\n let tabDoc = siblingDoc\n let tabSelect: SelectType | undefined\n if (tabHasName(field)) {\n tabDoc = siblingDoc[field.name] as JsonObject\n if (typeof siblingDoc[field.name] !== 'object') {\n tabDoc = {}\n }\n\n if (typeof select?.[field.name] === 'object') {\n tabSelect = select?.[field.name] as SelectType\n }\n } else {\n tabSelect = select\n }\n\n traverseFields({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldPromises,\n fields: field.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n path: fieldPath,\n populationPromises,\n req,\n schemaPath: fieldSchemaPath,\n select: tabSelect,\n selectMode,\n showHiddenFields,\n siblingDoc: tabDoc,\n triggerAccessControl,\n triggerHooks,\n })\n\n break\n }\n\n case 'tabs': {\n traverseFields({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldPromises,\n fields: field.tabs.map((tab) => ({ ...tab, type: 'tab' })),\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n path: fieldPath,\n populationPromises,\n req,\n schemaPath: fieldSchemaPath,\n select,\n selectMode,\n showHiddenFields,\n siblingDoc,\n triggerAccessControl,\n triggerHooks,\n })\n break\n }\n\n case 'richText': {\n if (!field?.editor) {\n throw new MissingEditorProp(field) // while we allow disabling editor functionality, you should not have any richText fields defined if you do not have an editor\n }\n if (typeof field?.editor === 'function') {\n throw new Error('Attempted to access unsanitized rich text editor.')\n }\n\n const editor: RichTextAdapter = field?.editor\n\n if (editor?.hooks?.afterRead?.length) {\n await editor.hooks.afterRead.reduce(async (priorHook, currentHook) => {\n await priorHook\n\n const shouldRunHookOnAllLocales =\n field.localized &&\n (locale === 'all' || !flattenLocales) &&\n typeof siblingDoc[field.name] === 'object'\n\n if (shouldRunHookOnAllLocales) {\n const hookPromises = Object.entries(siblingDoc[field.name]).map(([locale, value]) =>\n (async () => {\n const hookedValue = await currentHook({\n collection,\n context,\n currentDepth,\n data: doc,\n depth,\n draft,\n fallbackLocale,\n field,\n fieldPromises,\n findMany,\n flattenLocales,\n global,\n locale,\n operation: 'read',\n originalDoc: doc,\n overrideAccess,\n path: fieldPath,\n populationPromises,\n req,\n schemaPath: fieldSchemaPath,\n showHiddenFields,\n siblingData: siblingDoc,\n triggerAccessControl,\n triggerHooks,\n value,\n })\n\n if (hookedValue !== undefined) {\n siblingDoc[field.name][locale] = hookedValue\n }\n })(),\n )\n\n await Promise.all(hookPromises)\n } else {\n const hookedValue = await currentHook({\n collection,\n context,\n currentDepth,\n data: doc,\n depth,\n draft,\n fallbackLocale,\n field,\n fieldPromises,\n findMany,\n flattenLocales,\n global,\n locale,\n operation: 'read',\n originalDoc: doc,\n overrideAccess,\n path: fieldPath,\n populationPromises,\n req,\n schemaPath: fieldSchemaPath,\n showHiddenFields,\n siblingData: siblingDoc,\n triggerAccessControl,\n triggerHooks,\n value: siblingDoc[field.name],\n })\n\n if (hookedValue !== undefined) {\n siblingDoc[field.name] = hookedValue\n }\n }\n }, Promise.resolve())\n }\n break\n }\n\n default: {\n break\n }\n }\n}\n"],"names":["MissingEditorProp","fieldAffectsData","tabHasName","getDefaultValue","getFieldPaths","relationshipPopulationPromise","traverseFields","promise","collection","context","currentDepth","depth","doc","draft","fallbackLocale","field","fieldPromises","findMany","flattenLocales","global","locale","overrideAccess","parentPath","parentSchemaPath","populationPromises","req","select","selectMode","showHiddenFields","siblingDoc","triggerAccessControl","triggerHooks","path","fieldPath","schemaPath","fieldSchemaPath","hidden","name","shouldHoistLocalizedValue","localized","payload","config","localization","value","hoistedValue","fallbackValue","isNullOrUndefined","type","tabs","forEach","tab","editor","Error","pointDoc","Array","isArray","coordinates","length","undefined","hooks","afterRead","reduce","priorHook","currentHook","shouldRunHookOnAllLocales","hookPromises","Object","entries","map","hookedValue","data","operation","originalDoc","siblingData","Promise","all","resolve","allowDefaultValue","access","read","result","id","defaultValue","user","push","groupDoc","groupSelect","fields","rows","arraySelect","row","i","values","localeRows","blocksSelect","block","blocks","find","blockType","slug","blockSelectMode","blockSelect","tabDoc","tabSelect"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"relationshipPopulationPromise.d.ts","sourceRoot":"","sources":["../../../../src/fields/hooks/afterRead/relationshipPopulationPromise.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAsGtF,KAAK,WAAW,GAAG;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,OAAO,CAAA;IACd,cAAc,EAAE,IAAI,GAAG,MAAM,CAAA;IAC7B,KAAK,EAAE,SAAS,GAAG,iBAAiB,GAAG,WAAW,CAAA;IAClD,MAAM,EAAE,IAAI,GAAG,MAAM,CAAA;IACrB,cAAc,EAAE,OAAO,CAAA;IACvB,GAAG,EAAE,cAAc,CAAA;IACnB,gBAAgB,EAAE,OAAO,CAAA;IACzB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAChC,CAAA;AAED,eAAO,MAAM,6BAA6B,sHAWvC,WAAW,KAAG,OAAO,CAAC,IAAI,CA6G5B,CAAA"}
1
+ {"version":3,"file":"relationshipPopulationPromise.d.ts","sourceRoot":"","sources":["../../../../src/fields/hooks/afterRead/relationshipPopulationPromise.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAuGtF,KAAK,WAAW,GAAG;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,OAAO,CAAA;IACd,cAAc,EAAE,IAAI,GAAG,MAAM,CAAA;IAC7B,KAAK,EAAE,SAAS,GAAG,iBAAiB,GAAG,WAAW,CAAA;IAClD,MAAM,EAAE,IAAI,GAAG,MAAM,CAAA;IACrB,cAAc,EAAE,OAAO,CAAA;IACvB,GAAG,EAAE,cAAc,CAAA;IACnB,gBAAgB,EAAE,OAAO,CAAA;IACzB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAChC,CAAA;AAED,eAAO,MAAM,6BAA6B,sHAWvC,WAAW,KAAG,OAAO,CAAC,IAAI,CA6G5B,CAAA"}
@@ -26,6 +26,7 @@ const populate = async ({ currentDepth, data, dataReference, depth, draft, fallb
26
26
  fallbackLocale,
27
27
  locale,
28
28
  overrideAccess,
29
+ select: relatedCollection.config.defaultPopulate,
29
30
  showHiddenFields,
30
31
  transactionID: req.transactionID
31
32
  }));
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/fields/hooks/afterRead/relationshipPopulationPromise.ts"],"sourcesContent":["import type { PayloadRequest } from '../../../types/index.js'\nimport type { JoinField, RelationshipField, UploadField } from '../../config/types.js'\n\nimport { createDataloaderCacheKey } from '../../../collections/dataloader.js'\nimport { fieldHasMaxDepth, fieldSupportsMany } from '../../config/types.js'\n\ntype PopulateArgs = {\n currentDepth: number\n data: Record<string, unknown>\n dataReference: Record<string, any>\n depth: number\n draft: boolean\n fallbackLocale: null | string\n field: JoinField | RelationshipField | UploadField\n index?: number\n key?: string\n locale: null | string\n overrideAccess: boolean\n req: PayloadRequest\n showHiddenFields: boolean\n}\n\nconst populate = async ({\n currentDepth,\n data,\n dataReference,\n depth,\n draft,\n fallbackLocale,\n field,\n index,\n key,\n locale,\n overrideAccess,\n req,\n showHiddenFields,\n}: PopulateArgs) => {\n const dataToUpdate = dataReference\n let relation\n if (field.type === 'join') {\n relation = field.collection\n } else {\n relation = Array.isArray(field.relationTo) ? (data.relationTo as string) : field.relationTo\n }\n const relatedCollection = req.payload.collections[relation]\n\n if (relatedCollection) {\n let id = field.type !== 'join' && Array.isArray(field.relationTo) ? data.value : data\n let relationshipValue\n const shouldPopulate = depth && currentDepth <= depth\n\n if (\n typeof id !== 'string' &&\n typeof id !== 'number' &&\n typeof id?.toString === 'function' &&\n typeof id !== 'object'\n ) {\n id = id.toString()\n }\n\n if (shouldPopulate) {\n relationshipValue = await req.payloadDataLoader.load(\n createDataloaderCacheKey({\n collectionSlug: relatedCollection.config.slug,\n currentDepth: currentDepth + 1,\n depth,\n docID: id as string,\n draft,\n fallbackLocale,\n locale,\n overrideAccess,\n showHiddenFields,\n transactionID: req.transactionID,\n }),\n )\n }\n\n if (!relationshipValue) {\n // ids are visible regardless of access controls\n relationshipValue = id\n }\n if (typeof index === 'number' && typeof key === 'string') {\n if (field.type !== 'join' && Array.isArray(field.relationTo)) {\n dataToUpdate[field.name][key][index].value = relationshipValue\n } else {\n dataToUpdate[field.name][key][index] = relationshipValue\n }\n } else if (typeof index === 'number' || typeof key === 'string') {\n if (field.type === 'join') {\n dataToUpdate[field.name].docs[index ?? key] = relationshipValue\n } else if (Array.isArray(field.relationTo)) {\n dataToUpdate[field.name][index ?? key].value = relationshipValue\n } else {\n dataToUpdate[field.name][index ?? key] = relationshipValue\n }\n } else if (field.type !== 'join' && Array.isArray(field.relationTo)) {\n dataToUpdate[field.name].value = relationshipValue\n } else {\n dataToUpdate[field.name] = relationshipValue\n }\n }\n}\n\ntype PromiseArgs = {\n currentDepth: number\n depth: number\n draft: boolean\n fallbackLocale: null | string\n field: JoinField | RelationshipField | UploadField\n locale: null | string\n overrideAccess: boolean\n req: PayloadRequest\n showHiddenFields: boolean\n siblingDoc: Record<string, any>\n}\n\nexport const relationshipPopulationPromise = async ({\n currentDepth,\n depth,\n draft,\n fallbackLocale,\n field,\n locale,\n overrideAccess,\n req,\n showHiddenFields,\n siblingDoc,\n}: PromiseArgs): Promise<void> => {\n const resultingDoc = siblingDoc\n const populateDepth = fieldHasMaxDepth(field) && field.maxDepth < depth ? field.maxDepth : depth\n const rowPromises = []\n\n if (field.type === 'join' || (fieldSupportsMany(field) && field.hasMany)) {\n if (\n field.localized &&\n locale === 'all' &&\n typeof siblingDoc[field.name] === 'object' &&\n siblingDoc[field.name] !== null\n ) {\n Object.keys(siblingDoc[field.name]).forEach((localeKey) => {\n if (Array.isArray(siblingDoc[field.name][localeKey])) {\n siblingDoc[field.name][localeKey].forEach((relatedDoc, index) => {\n const rowPromise = async () => {\n await populate({\n currentDepth,\n data: siblingDoc[field.name][localeKey][index],\n dataReference: resultingDoc,\n depth: populateDepth,\n draft,\n fallbackLocale,\n field,\n index,\n key: localeKey,\n locale,\n overrideAccess,\n req,\n showHiddenFields,\n })\n }\n rowPromises.push(rowPromise())\n })\n }\n })\n } else if (\n Array.isArray(siblingDoc[field.name]) ||\n Array.isArray(siblingDoc[field.name]?.docs)\n ) {\n ;(Array.isArray(siblingDoc[field.name])\n ? siblingDoc[field.name]\n : siblingDoc[field.name].docs\n ).forEach((relatedDoc, index) => {\n const rowPromise = async () => {\n if (relatedDoc) {\n await populate({\n currentDepth,\n data: relatedDoc?.id ? relatedDoc.id : relatedDoc,\n dataReference: resultingDoc,\n depth: populateDepth,\n draft,\n fallbackLocale,\n field,\n index,\n locale,\n overrideAccess,\n req,\n showHiddenFields,\n })\n }\n }\n\n rowPromises.push(rowPromise())\n })\n }\n } else if (\n field.localized &&\n locale === 'all' &&\n typeof siblingDoc[field.name] === 'object' &&\n siblingDoc[field.name] !== null\n ) {\n Object.keys(siblingDoc[field.name]).forEach((localeKey) => {\n const rowPromise = async () => {\n await populate({\n currentDepth,\n data: siblingDoc[field.name][localeKey],\n dataReference: resultingDoc,\n depth: populateDepth,\n draft,\n fallbackLocale,\n field,\n key: localeKey,\n locale,\n overrideAccess,\n req,\n showHiddenFields,\n })\n }\n rowPromises.push(rowPromise())\n })\n\n await Promise.all(rowPromises)\n } else if (siblingDoc[field.name]) {\n await populate({\n currentDepth,\n data: siblingDoc[field.name],\n dataReference: resultingDoc,\n depth: populateDepth,\n draft,\n fallbackLocale,\n field,\n locale,\n overrideAccess,\n req,\n showHiddenFields,\n })\n }\n await Promise.all(rowPromises)\n}\n"],"names":["createDataloaderCacheKey","fieldHasMaxDepth","fieldSupportsMany","populate","currentDepth","data","dataReference","depth","draft","fallbackLocale","field","index","key","locale","overrideAccess","req","showHiddenFields","dataToUpdate","relation","type","collection","Array","isArray","relationTo","relatedCollection","payload","collections","id","value","relationshipValue","shouldPopulate","toString","payloadDataLoader","load","collectionSlug","config","slug","docID","transactionID","name","docs","relationshipPopulationPromise","siblingDoc","resultingDoc","populateDepth","maxDepth","rowPromises","hasMany","localized","Object","keys","forEach","localeKey","relatedDoc","rowPromise","push","Promise","all"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/fields/hooks/afterRead/relationshipPopulationPromise.ts"],"sourcesContent":["import type { PayloadRequest } from '../../../types/index.js'\nimport type { JoinField, RelationshipField, UploadField } from '../../config/types.js'\n\nimport { createDataloaderCacheKey } from '../../../collections/dataloader.js'\nimport { fieldHasMaxDepth, fieldSupportsMany } from '../../config/types.js'\n\ntype PopulateArgs = {\n currentDepth: number\n data: Record<string, unknown>\n dataReference: Record<string, any>\n depth: number\n draft: boolean\n fallbackLocale: null | string\n field: JoinField | RelationshipField | UploadField\n index?: number\n key?: string\n locale: null | string\n overrideAccess: boolean\n req: PayloadRequest\n showHiddenFields: boolean\n}\n\nconst populate = async ({\n currentDepth,\n data,\n dataReference,\n depth,\n draft,\n fallbackLocale,\n field,\n index,\n key,\n locale,\n overrideAccess,\n req,\n showHiddenFields,\n}: PopulateArgs) => {\n const dataToUpdate = dataReference\n let relation\n if (field.type === 'join') {\n relation = field.collection\n } else {\n relation = Array.isArray(field.relationTo) ? (data.relationTo as string) : field.relationTo\n }\n const relatedCollection = req.payload.collections[relation]\n\n if (relatedCollection) {\n let id = field.type !== 'join' && Array.isArray(field.relationTo) ? data.value : data\n let relationshipValue\n const shouldPopulate = depth && currentDepth <= depth\n\n if (\n typeof id !== 'string' &&\n typeof id !== 'number' &&\n typeof id?.toString === 'function' &&\n typeof id !== 'object'\n ) {\n id = id.toString()\n }\n\n if (shouldPopulate) {\n relationshipValue = await req.payloadDataLoader.load(\n createDataloaderCacheKey({\n collectionSlug: relatedCollection.config.slug,\n currentDepth: currentDepth + 1,\n depth,\n docID: id as string,\n draft,\n fallbackLocale,\n locale,\n overrideAccess,\n select: relatedCollection.config.defaultPopulate,\n showHiddenFields,\n transactionID: req.transactionID,\n }),\n )\n }\n\n if (!relationshipValue) {\n // ids are visible regardless of access controls\n relationshipValue = id\n }\n if (typeof index === 'number' && typeof key === 'string') {\n if (field.type !== 'join' && Array.isArray(field.relationTo)) {\n dataToUpdate[field.name][key][index].value = relationshipValue\n } else {\n dataToUpdate[field.name][key][index] = relationshipValue\n }\n } else if (typeof index === 'number' || typeof key === 'string') {\n if (field.type === 'join') {\n dataToUpdate[field.name].docs[index ?? key] = relationshipValue\n } else if (Array.isArray(field.relationTo)) {\n dataToUpdate[field.name][index ?? key].value = relationshipValue\n } else {\n dataToUpdate[field.name][index ?? key] = relationshipValue\n }\n } else if (field.type !== 'join' && Array.isArray(field.relationTo)) {\n dataToUpdate[field.name].value = relationshipValue\n } else {\n dataToUpdate[field.name] = relationshipValue\n }\n }\n}\n\ntype PromiseArgs = {\n currentDepth: number\n depth: number\n draft: boolean\n fallbackLocale: null | string\n field: JoinField | RelationshipField | UploadField\n locale: null | string\n overrideAccess: boolean\n req: PayloadRequest\n showHiddenFields: boolean\n siblingDoc: Record<string, any>\n}\n\nexport const relationshipPopulationPromise = async ({\n currentDepth,\n depth,\n draft,\n fallbackLocale,\n field,\n locale,\n overrideAccess,\n req,\n showHiddenFields,\n siblingDoc,\n}: PromiseArgs): Promise<void> => {\n const resultingDoc = siblingDoc\n const populateDepth = fieldHasMaxDepth(field) && field.maxDepth < depth ? field.maxDepth : depth\n const rowPromises = []\n\n if (field.type === 'join' || (fieldSupportsMany(field) && field.hasMany)) {\n if (\n field.localized &&\n locale === 'all' &&\n typeof siblingDoc[field.name] === 'object' &&\n siblingDoc[field.name] !== null\n ) {\n Object.keys(siblingDoc[field.name]).forEach((localeKey) => {\n if (Array.isArray(siblingDoc[field.name][localeKey])) {\n siblingDoc[field.name][localeKey].forEach((relatedDoc, index) => {\n const rowPromise = async () => {\n await populate({\n currentDepth,\n data: siblingDoc[field.name][localeKey][index],\n dataReference: resultingDoc,\n depth: populateDepth,\n draft,\n fallbackLocale,\n field,\n index,\n key: localeKey,\n locale,\n overrideAccess,\n req,\n showHiddenFields,\n })\n }\n rowPromises.push(rowPromise())\n })\n }\n })\n } else if (\n Array.isArray(siblingDoc[field.name]) ||\n Array.isArray(siblingDoc[field.name]?.docs)\n ) {\n ;(Array.isArray(siblingDoc[field.name])\n ? siblingDoc[field.name]\n : siblingDoc[field.name].docs\n ).forEach((relatedDoc, index) => {\n const rowPromise = async () => {\n if (relatedDoc) {\n await populate({\n currentDepth,\n data: relatedDoc?.id ? relatedDoc.id : relatedDoc,\n dataReference: resultingDoc,\n depth: populateDepth,\n draft,\n fallbackLocale,\n field,\n index,\n locale,\n overrideAccess,\n req,\n showHiddenFields,\n })\n }\n }\n\n rowPromises.push(rowPromise())\n })\n }\n } else if (\n field.localized &&\n locale === 'all' &&\n typeof siblingDoc[field.name] === 'object' &&\n siblingDoc[field.name] !== null\n ) {\n Object.keys(siblingDoc[field.name]).forEach((localeKey) => {\n const rowPromise = async () => {\n await populate({\n currentDepth,\n data: siblingDoc[field.name][localeKey],\n dataReference: resultingDoc,\n depth: populateDepth,\n draft,\n fallbackLocale,\n field,\n key: localeKey,\n locale,\n overrideAccess,\n req,\n showHiddenFields,\n })\n }\n rowPromises.push(rowPromise())\n })\n\n await Promise.all(rowPromises)\n } else if (siblingDoc[field.name]) {\n await populate({\n currentDepth,\n data: siblingDoc[field.name],\n dataReference: resultingDoc,\n depth: populateDepth,\n draft,\n fallbackLocale,\n field,\n locale,\n overrideAccess,\n req,\n showHiddenFields,\n })\n }\n await Promise.all(rowPromises)\n}\n"],"names":["createDataloaderCacheKey","fieldHasMaxDepth","fieldSupportsMany","populate","currentDepth","data","dataReference","depth","draft","fallbackLocale","field","index","key","locale","overrideAccess","req","showHiddenFields","dataToUpdate","relation","type","collection","Array","isArray","relationTo","relatedCollection","payload","collections","id","value","relationshipValue","shouldPopulate","toString","payloadDataLoader","load","collectionSlug","config","slug","docID","select","defaultPopulate","transactionID","name","docs","relationshipPopulationPromise","siblingDoc","resultingDoc","populateDepth","maxDepth","rowPromises","hasMany","localized","Object","keys","forEach","localeKey","relatedDoc","rowPromise","push","Promise","all"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { SanitizedCollectionConfig } from '../../../collections/config/types.js';
2
2
  import type { SanitizedGlobalConfig } from '../../../globals/config/types.js';
3
- import type { JsonObject, PayloadRequest, RequestContext } from '../../../types/index.js';
3
+ import type { JsonObject, PayloadRequest, RequestContext, SelectMode, SelectType } from '../../../types/index.js';
4
4
  import type { Field, TabAsField } from '../../config/types.js';
5
5
  type Args = {
6
6
  collection: null | SanitizedCollectionConfig;
@@ -24,11 +24,13 @@ type Args = {
24
24
  populationPromises: Promise<void>[];
25
25
  req: PayloadRequest;
26
26
  schemaPath: string[];
27
+ select?: SelectType;
28
+ selectMode?: SelectMode;
27
29
  showHiddenFields: boolean;
28
30
  siblingDoc: JsonObject;
29
31
  triggerAccessControl?: boolean;
30
32
  triggerHooks?: boolean;
31
33
  };
32
- export declare const traverseFields: ({ collection, context, currentDepth, depth, doc, draft, fallbackLocale, fieldPromises, fields, findMany, flattenLocales, global, locale, overrideAccess, path, populationPromises, req, schemaPath, showHiddenFields, siblingDoc, triggerAccessControl, triggerHooks, }: Args) => void;
34
+ export declare const traverseFields: ({ collection, context, currentDepth, depth, doc, draft, fallbackLocale, fieldPromises, fields, findMany, flattenLocales, global, locale, overrideAccess, path, populationPromises, req, schemaPath, select, selectMode, showHiddenFields, siblingDoc, triggerAccessControl, triggerHooks, }: Args) => void;
33
35
  export {};
34
36
  //# sourceMappingURL=traverseFields.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../../src/fields/hooks/afterRead/traverseFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAA;AACrF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;AAC7E,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACzF,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAI9D,KAAK,IAAI,GAAG;IACV,UAAU,EAAE,IAAI,GAAG,yBAAyB,CAAA;IAC5C,OAAO,EAAE,cAAc,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,UAAU,CAAA;IACf,KAAK,EAAE,OAAO,CAAA;IACd,cAAc,EAAE,IAAI,GAAG,MAAM,CAAA;IAC7B;;OAEG;IACH,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAA;IAC9B,MAAM,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAA;IAC9B,QAAQ,EAAE,OAAO,CAAA;IACjB,cAAc,EAAE,OAAO,CAAA;IACvB,MAAM,EAAE,IAAI,GAAG,qBAAqB,CAAA;IACpC,MAAM,EAAE,IAAI,GAAG,MAAM,CAAA;IACrB,cAAc,EAAE,OAAO,CAAA;IACvB,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;IACzB,kBAAkB,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAA;IACnC,GAAG,EAAE,cAAc,CAAA;IACnB,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,gBAAgB,EAAE,OAAO,CAAA;IACzB,UAAU,EAAE,UAAU,CAAA;IACtB,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB,CAAA;AAED,eAAO,MAAM,cAAc,4QAuBxB,IAAI,KAAG,IA6BT,CAAA"}
1
+ {"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../../src/fields/hooks/afterRead/traverseFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAA;AACrF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;AAC7E,OAAO,KAAK,EACV,UAAU,EACV,cAAc,EACd,cAAc,EACd,UAAU,EACV,UAAU,EACX,MAAM,yBAAyB,CAAA;AAChC,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAI9D,KAAK,IAAI,GAAG;IACV,UAAU,EAAE,IAAI,GAAG,yBAAyB,CAAA;IAC5C,OAAO,EAAE,cAAc,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,UAAU,CAAA;IACf,KAAK,EAAE,OAAO,CAAA;IACd,cAAc,EAAE,IAAI,GAAG,MAAM,CAAA;IAC7B;;OAEG;IACH,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAA;IAC9B,MAAM,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAA;IAC9B,QAAQ,EAAE,OAAO,CAAA;IACjB,cAAc,EAAE,OAAO,CAAA;IACvB,MAAM,EAAE,IAAI,GAAG,qBAAqB,CAAA;IACpC,MAAM,EAAE,IAAI,GAAG,MAAM,CAAA;IACrB,cAAc,EAAE,OAAO,CAAA;IACvB,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;IACzB,kBAAkB,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAA;IACnC,GAAG,EAAE,cAAc,CAAA;IACnB,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,gBAAgB,EAAE,OAAO,CAAA;IACzB,UAAU,EAAE,UAAU,CAAA;IACtB,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB,CAAA;AAED,eAAO,MAAM,cAAc,gSAyBxB,IAAI,KAAG,IA+BT,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import { promise } from './promise.js';
2
- export const traverseFields = ({ collection, context, currentDepth, depth, doc, draft, fallbackLocale, fieldPromises, fields, findMany, flattenLocales, global, locale, overrideAccess, path, populationPromises, req, schemaPath, showHiddenFields, siblingDoc, triggerAccessControl = true, triggerHooks = true })=>{
2
+ export const traverseFields = ({ collection, context, currentDepth, depth, doc, draft, fallbackLocale, fieldPromises, fields, findMany, flattenLocales, global, locale, overrideAccess, path, populationPromises, req, schemaPath, select, selectMode, showHiddenFields, siblingDoc, triggerAccessControl = true, triggerHooks = true })=>{
3
3
  fields.forEach((field)=>{
4
4
  fieldPromises.push(promise({
5
5
  collection,
@@ -20,6 +20,8 @@ export const traverseFields = ({ collection, context, currentDepth, depth, doc,
20
20
  parentSchemaPath: schemaPath,
21
21
  populationPromises,
22
22
  req,
23
+ select,
24
+ selectMode,
23
25
  showHiddenFields,
24
26
  siblingDoc,
25
27
  triggerAccessControl,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/fields/hooks/afterRead/traverseFields.ts"],"sourcesContent":["import type { SanitizedCollectionConfig } from '../../../collections/config/types.js'\nimport type { SanitizedGlobalConfig } from '../../../globals/config/types.js'\nimport type { JsonObject, PayloadRequest, RequestContext } from '../../../types/index.js'\nimport type { Field, TabAsField } from '../../config/types.js'\n\nimport { promise } from './promise.js'\n\ntype Args = {\n collection: null | SanitizedCollectionConfig\n context: RequestContext\n currentDepth: number\n depth: number\n doc: JsonObject\n draft: boolean\n fallbackLocale: null | string\n /**\n * fieldPromises are used for things like field hooks. They should be awaited before awaiting populationPromises\n */\n fieldPromises: Promise<void>[]\n fields: (Field | TabAsField)[]\n findMany: boolean\n flattenLocales: boolean\n global: null | SanitizedGlobalConfig\n locale: null | string\n overrideAccess: boolean\n path: (number | string)[]\n populationPromises: Promise<void>[]\n req: PayloadRequest\n schemaPath: string[]\n showHiddenFields: boolean\n siblingDoc: JsonObject\n triggerAccessControl?: boolean\n triggerHooks?: boolean\n}\n\nexport const traverseFields = ({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldPromises,\n fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n path,\n populationPromises,\n req,\n schemaPath,\n showHiddenFields,\n siblingDoc,\n triggerAccessControl = true,\n triggerHooks = true,\n}: Args): void => {\n fields.forEach((field) => {\n fieldPromises.push(\n promise({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n field,\n fieldPromises,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n parentPath: path,\n parentSchemaPath: schemaPath,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc,\n triggerAccessControl,\n triggerHooks,\n }),\n )\n })\n}\n"],"names":["promise","traverseFields","collection","context","currentDepth","depth","doc","draft","fallbackLocale","fieldPromises","fields","findMany","flattenLocales","global","locale","overrideAccess","path","populationPromises","req","schemaPath","showHiddenFields","siblingDoc","triggerAccessControl","triggerHooks","forEach","field","push","parentPath","parentSchemaPath"],"mappings":"AAKA,SAASA,OAAO,QAAQ,eAAc;AA8BtC,OAAO,MAAMC,iBAAiB,CAAC,EAC7BC,UAAU,EACVC,OAAO,EACPC,YAAY,EACZC,KAAK,EACLC,GAAG,EACHC,KAAK,EACLC,cAAc,EACdC,aAAa,EACbC,MAAM,EACNC,QAAQ,EACRC,cAAc,EACdC,MAAM,EACNC,MAAM,EACNC,cAAc,EACdC,IAAI,EACJC,kBAAkB,EAClBC,GAAG,EACHC,UAAU,EACVC,gBAAgB,EAChBC,UAAU,EACVC,uBAAuB,IAAI,EAC3BC,eAAe,IAAI,EACd;IACLb,OAAOc,OAAO,CAAC,CAACC;QACdhB,cAAciB,IAAI,CAChB1B,QAAQ;YACNE;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;YACAiB;YACAhB;YACAE;YACAC;YACAC;YACAC;YACAC;YACAY,YAAYX;YACZY,kBAAkBT;YAClBF;YACAC;YACAE;YACAC;YACAC;YACAC;QACF;IAEJ;AACF,EAAC"}
1
+ {"version":3,"sources":["../../../../src/fields/hooks/afterRead/traverseFields.ts"],"sourcesContent":["import type { SanitizedCollectionConfig } from '../../../collections/config/types.js'\nimport type { SanitizedGlobalConfig } from '../../../globals/config/types.js'\nimport type {\n JsonObject,\n PayloadRequest,\n RequestContext,\n SelectMode,\n SelectType,\n} from '../../../types/index.js'\nimport type { Field, TabAsField } from '../../config/types.js'\n\nimport { promise } from './promise.js'\n\ntype Args = {\n collection: null | SanitizedCollectionConfig\n context: RequestContext\n currentDepth: number\n depth: number\n doc: JsonObject\n draft: boolean\n fallbackLocale: null | string\n /**\n * fieldPromises are used for things like field hooks. They should be awaited before awaiting populationPromises\n */\n fieldPromises: Promise<void>[]\n fields: (Field | TabAsField)[]\n findMany: boolean\n flattenLocales: boolean\n global: null | SanitizedGlobalConfig\n locale: null | string\n overrideAccess: boolean\n path: (number | string)[]\n populationPromises: Promise<void>[]\n req: PayloadRequest\n schemaPath: string[]\n select?: SelectType\n selectMode?: SelectMode\n showHiddenFields: boolean\n siblingDoc: JsonObject\n triggerAccessControl?: boolean\n triggerHooks?: boolean\n}\n\nexport const traverseFields = ({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldPromises,\n fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n path,\n populationPromises,\n req,\n schemaPath,\n select,\n selectMode,\n showHiddenFields,\n siblingDoc,\n triggerAccessControl = true,\n triggerHooks = true,\n}: Args): void => {\n fields.forEach((field) => {\n fieldPromises.push(\n promise({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n field,\n fieldPromises,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n parentPath: path,\n parentSchemaPath: schemaPath,\n populationPromises,\n req,\n select,\n selectMode,\n showHiddenFields,\n siblingDoc,\n triggerAccessControl,\n triggerHooks,\n }),\n )\n })\n}\n"],"names":["promise","traverseFields","collection","context","currentDepth","depth","doc","draft","fallbackLocale","fieldPromises","fields","findMany","flattenLocales","global","locale","overrideAccess","path","populationPromises","req","schemaPath","select","selectMode","showHiddenFields","siblingDoc","triggerAccessControl","triggerHooks","forEach","field","push","parentPath","parentSchemaPath"],"mappings":"AAWA,SAASA,OAAO,QAAQ,eAAc;AAgCtC,OAAO,MAAMC,iBAAiB,CAAC,EAC7BC,UAAU,EACVC,OAAO,EACPC,YAAY,EACZC,KAAK,EACLC,GAAG,EACHC,KAAK,EACLC,cAAc,EACdC,aAAa,EACbC,MAAM,EACNC,QAAQ,EACRC,cAAc,EACdC,MAAM,EACNC,MAAM,EACNC,cAAc,EACdC,IAAI,EACJC,kBAAkB,EAClBC,GAAG,EACHC,UAAU,EACVC,MAAM,EACNC,UAAU,EACVC,gBAAgB,EAChBC,UAAU,EACVC,uBAAuB,IAAI,EAC3BC,eAAe,IAAI,EACd;IACLf,OAAOgB,OAAO,CAAC,CAACC;QACdlB,cAAcmB,IAAI,CAChB5B,QAAQ;YACNE;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;YACAmB;YACAlB;YACAE;YACAC;YACAC;YACAC;YACAC;YACAc,YAAYb;YACZc,kBAAkBX;YAClBF;YACAC;YACAE;YACAC;YACAC;YACAC;YACAC;YACAC;QACF;IAEJ;AACF,EAAC"}
@@ -4,10 +4,11 @@ import type { CustomPreviewButton, CustomPublishButton, CustomSaveButton, Custom
4
4
  import type { Access, EditConfig, Endpoint, EntityDescription, EntityDescriptionComponent, GeneratePreviewURL, LivePreviewConfig, MetaConfig } from '../../config/types.js';
5
5
  import type { DBIdentifierName } from '../../database/types.js';
6
6
  import type { Field } from '../../fields/config/types.js';
7
- import type { GlobalSlug, TypedGlobal } from '../../index.js';
7
+ import type { GlobalSlug, TypedGlobal, TypedGlobalSelect } from '../../index.js';
8
8
  import type { PayloadRequest, RequestContext, Where } from '../../types/index.js';
9
9
  import type { IncomingGlobalVersions, SanitizedGlobalVersions } from '../../versions/types.js';
10
10
  export type DataFromGlobalSlug<TSlug extends GlobalSlug> = TypedGlobal[TSlug];
11
+ export type SelectFromGlobalSlug<TSlug extends GlobalSlug> = TypedGlobalSelect[TSlug];
11
12
  export type BeforeValidateHook = (args: {
12
13
  context: RequestContext;
13
14
  data?: any;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/globals/config/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/globals/config/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/globals/config/types.ts"],"sourcesContent":["import type { GraphQLNonNull, GraphQLObjectType } from 'graphql'\nimport type { DeepRequired } from 'ts-essentials'\n\nimport type {\n CustomPreviewButton,\n CustomPublishButton,\n CustomSaveButton,\n CustomSaveDraftButton,\n} from '../../admin/types.js'\nimport type {\n Access,\n EditConfig,\n Endpoint,\n EntityDescription,\n EntityDescriptionComponent,\n GeneratePreviewURL,\n LivePreviewConfig,\n MetaConfig,\n} from '../../config/types.js'\nimport type { DBIdentifierName } from '../../database/types.js'\nimport type { Field } from '../../fields/config/types.js'\nimport type { GlobalSlug, TypedGlobal } from '../../index.js'\nimport type { PayloadRequest, RequestContext, Where } from '../../types/index.js'\nimport type { IncomingGlobalVersions, SanitizedGlobalVersions } from '../../versions/types.js'\n\nexport type DataFromGlobalSlug<TSlug extends GlobalSlug> = TypedGlobal[TSlug]\n\nexport type BeforeValidateHook = (args: {\n context: RequestContext\n data?: any\n /** The global which this hook is being run on */\n global: SanitizedGlobalConfig\n originalDoc?: any\n req: PayloadRequest\n}) => any\n\nexport type BeforeChangeHook = (args: {\n context: RequestContext\n data: any\n /** The global which this hook is being run on */\n global: SanitizedGlobalConfig\n originalDoc?: any\n req: PayloadRequest\n}) => any\n\nexport type AfterChangeHook = (args: {\n context: RequestContext\n doc: any\n /** The global which this hook is being run on */\n global: SanitizedGlobalConfig\n previousDoc: any\n req: PayloadRequest\n}) => any\n\nexport type BeforeReadHook = (args: {\n context: RequestContext\n doc: any\n /** The global which this hook is being run on */\n global: SanitizedGlobalConfig\n req: PayloadRequest\n}) => any\n\nexport type AfterReadHook = (args: {\n context: RequestContext\n doc: any\n findMany?: boolean\n /** The global which this hook is being run on */\n global: SanitizedGlobalConfig\n query?: Where\n req: PayloadRequest\n}) => any\n\nexport type GlobalAdminOptions = {\n /**\n * Custom admin components\n */\n components?: {\n elements?: {\n Description?: EntityDescriptionComponent\n /**\n * Replaces the \"Preview\" button\n */\n PreviewButton?: CustomPreviewButton\n /**\n * Replaces the \"Publish\" button\n * + drafts must be enabled\n */\n PublishButton?: CustomPublishButton\n /**\n * Replaces the \"Save\" button\n * + drafts must be disabled\n */\n SaveButton?: CustomSaveButton\n /**\n * Replaces the \"Save Draft\" button\n * + drafts must be enabled\n * + autosave must be disabled\n */\n SaveDraftButton?: CustomSaveDraftButton\n }\n views?: {\n /**\n * Set to a React component to replace the entire Edit View, including all nested routes.\n * Set to an object to replace or modify individual nested routes, or to add new ones.\n */\n edit?: EditConfig\n }\n }\n /** Extension point to add your custom data. Available in server and client. */\n custom?: Record<string, any>\n /**\n * Custom description for collection\n */\n description?: EntityDescription\n /**\n * Place globals into a navigational group\n * */\n group?: Record<string, string> | string\n /**\n * Exclude the global from the admin nav and routes\n */\n hidden?: ((args: { user: PayloadRequest['user'] }) => boolean) | boolean\n /**\n * Hide the API URL within the Edit View\n */\n hideAPIURL?: boolean\n /**\n * Live preview options\n */\n livePreview?: LivePreviewConfig\n meta?: MetaConfig\n /**\n * Function to generate custom preview URL\n */\n preview?: GeneratePreviewURL\n}\n\nexport type GlobalConfig = {\n access?: {\n read?: Access\n readDrafts?: Access\n readVersions?: Access\n update?: Access\n }\n admin?: GlobalAdminOptions\n /** Extension point to add your custom data. Server only. */\n custom?: Record<string, any>\n /**\n * Customize the SQL table name\n */\n dbName?: DBIdentifierName\n endpoints?: false | Omit<Endpoint, 'root'>[]\n fields: Field[]\n graphQL?:\n | {\n name?: string\n }\n | false\n hooks?: {\n afterChange?: AfterChangeHook[]\n afterRead?: AfterReadHook[]\n beforeChange?: BeforeChangeHook[]\n beforeRead?: BeforeReadHook[]\n beforeValidate?: BeforeValidateHook[]\n }\n label?: Record<string, string> | string\n /**\n * Enables / Disables the ability to lock documents while editing\n * @default true\n */\n lockDocuments?:\n | {\n duration: number\n }\n | false\n slug: string\n /**\n * Options used in typescript generation\n */\n typescript?: {\n /**\n * Typescript generation name given to the interface type\n */\n interface?: string\n }\n versions?: boolean | IncomingGlobalVersions\n}\n\nexport interface SanitizedGlobalConfig\n extends Omit<DeepRequired<GlobalConfig>, 'endpoints' | 'fields' | 'versions'> {\n endpoints: Endpoint[] | false\n fields: Field[]\n versions: SanitizedGlobalVersions\n}\n\nexport type Globals = {\n config: SanitizedGlobalConfig[]\n graphQL?:\n | {\n [slug: string]: {\n mutationInputType: GraphQLNonNull<any>\n type: GraphQLObjectType\n versionType?: GraphQLObjectType\n }\n }\n | false\n}\n"],"names":[],"mappings":"AAmMA,WAWC"}
1
+ {"version":3,"sources":["../../../src/globals/config/types.ts"],"sourcesContent":["import type { GraphQLNonNull, GraphQLObjectType } from 'graphql'\nimport type { DeepRequired } from 'ts-essentials'\n\nimport type {\n CustomPreviewButton,\n CustomPublishButton,\n CustomSaveButton,\n CustomSaveDraftButton,\n} from '../../admin/types.js'\nimport type {\n Access,\n EditConfig,\n Endpoint,\n EntityDescription,\n EntityDescriptionComponent,\n GeneratePreviewURL,\n LivePreviewConfig,\n MetaConfig,\n} from '../../config/types.js'\nimport type { DBIdentifierName } from '../../database/types.js'\nimport type { Field } from '../../fields/config/types.js'\nimport type { GlobalSlug, TypedGlobal, TypedGlobalSelect } from '../../index.js'\nimport type { PayloadRequest, RequestContext, Where } from '../../types/index.js'\nimport type { IncomingGlobalVersions, SanitizedGlobalVersions } from '../../versions/types.js'\n\nexport type DataFromGlobalSlug<TSlug extends GlobalSlug> = TypedGlobal[TSlug]\n\nexport type SelectFromGlobalSlug<TSlug extends GlobalSlug> = TypedGlobalSelect[TSlug]\n\nexport type BeforeValidateHook = (args: {\n context: RequestContext\n data?: any\n /** The global which this hook is being run on */\n global: SanitizedGlobalConfig\n originalDoc?: any\n req: PayloadRequest\n}) => any\n\nexport type BeforeChangeHook = (args: {\n context: RequestContext\n data: any\n /** The global which this hook is being run on */\n global: SanitizedGlobalConfig\n originalDoc?: any\n req: PayloadRequest\n}) => any\n\nexport type AfterChangeHook = (args: {\n context: RequestContext\n doc: any\n /** The global which this hook is being run on */\n global: SanitizedGlobalConfig\n previousDoc: any\n req: PayloadRequest\n}) => any\n\nexport type BeforeReadHook = (args: {\n context: RequestContext\n doc: any\n /** The global which this hook is being run on */\n global: SanitizedGlobalConfig\n req: PayloadRequest\n}) => any\n\nexport type AfterReadHook = (args: {\n context: RequestContext\n doc: any\n findMany?: boolean\n /** The global which this hook is being run on */\n global: SanitizedGlobalConfig\n query?: Where\n req: PayloadRequest\n}) => any\n\nexport type GlobalAdminOptions = {\n /**\n * Custom admin components\n */\n components?: {\n elements?: {\n Description?: EntityDescriptionComponent\n /**\n * Replaces the \"Preview\" button\n */\n PreviewButton?: CustomPreviewButton\n /**\n * Replaces the \"Publish\" button\n * + drafts must be enabled\n */\n PublishButton?: CustomPublishButton\n /**\n * Replaces the \"Save\" button\n * + drafts must be disabled\n */\n SaveButton?: CustomSaveButton\n /**\n * Replaces the \"Save Draft\" button\n * + drafts must be enabled\n * + autosave must be disabled\n */\n SaveDraftButton?: CustomSaveDraftButton\n }\n views?: {\n /**\n * Set to a React component to replace the entire Edit View, including all nested routes.\n * Set to an object to replace or modify individual nested routes, or to add new ones.\n */\n edit?: EditConfig\n }\n }\n /** Extension point to add your custom data. Available in server and client. */\n custom?: Record<string, any>\n /**\n * Custom description for collection\n */\n description?: EntityDescription\n /**\n * Place globals into a navigational group\n * */\n group?: Record<string, string> | string\n /**\n * Exclude the global from the admin nav and routes\n */\n hidden?: ((args: { user: PayloadRequest['user'] }) => boolean) | boolean\n /**\n * Hide the API URL within the Edit View\n */\n hideAPIURL?: boolean\n /**\n * Live preview options\n */\n livePreview?: LivePreviewConfig\n meta?: MetaConfig\n /**\n * Function to generate custom preview URL\n */\n preview?: GeneratePreviewURL\n}\n\nexport type GlobalConfig = {\n access?: {\n read?: Access\n readDrafts?: Access\n readVersions?: Access\n update?: Access\n }\n admin?: GlobalAdminOptions\n /** Extension point to add your custom data. Server only. */\n custom?: Record<string, any>\n /**\n * Customize the SQL table name\n */\n dbName?: DBIdentifierName\n endpoints?: false | Omit<Endpoint, 'root'>[]\n fields: Field[]\n graphQL?:\n | {\n name?: string\n }\n | false\n hooks?: {\n afterChange?: AfterChangeHook[]\n afterRead?: AfterReadHook[]\n beforeChange?: BeforeChangeHook[]\n beforeRead?: BeforeReadHook[]\n beforeValidate?: BeforeValidateHook[]\n }\n label?: Record<string, string> | string\n /**\n * Enables / Disables the ability to lock documents while editing\n * @default true\n */\n lockDocuments?:\n | {\n duration: number\n }\n | false\n slug: string\n /**\n * Options used in typescript generation\n */\n typescript?: {\n /**\n * Typescript generation name given to the interface type\n */\n interface?: string\n }\n versions?: boolean | IncomingGlobalVersions\n}\n\nexport interface SanitizedGlobalConfig\n extends Omit<DeepRequired<GlobalConfig>, 'endpoints' | 'fields' | 'versions'> {\n endpoints: Endpoint[] | false\n fields: Field[]\n versions: SanitizedGlobalVersions\n}\n\nexport type Globals = {\n config: SanitizedGlobalConfig[]\n graphQL?:\n | {\n [slug: string]: {\n mutationInputType: GraphQLNonNull<any>\n type: GraphQLObjectType\n versionType?: GraphQLObjectType\n }\n }\n | false\n}\n"],"names":[],"mappings":"AAqMA,WAWC"}
@@ -1,4 +1,4 @@
1
- import type { PayloadRequest } from '../../types/index.js';
1
+ import type { PayloadRequest, SelectType } from '../../types/index.js';
2
2
  import type { SanitizedGlobalConfig } from '../config/types.js';
3
3
  type Args = {
4
4
  depth?: number;
@@ -7,6 +7,7 @@ type Args = {
7
7
  includeLockStatus?: boolean;
8
8
  overrideAccess?: boolean;
9
9
  req: PayloadRequest;
10
+ select?: SelectType;
10
11
  showHiddenFields?: boolean;
11
12
  slug: string;
12
13
  };
@@ -1 +1 @@
1
- {"version":3,"file":"findOne.d.ts","sourceRoot":"","sources":["../../../src/globals/operations/findOne.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAS,MAAM,sBAAsB,CAAA;AACjE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAO/D,KAAK,IAAI,GAAG;IACV,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,YAAY,EAAE,qBAAqB,CAAA;IACnC,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,GAAG,EAAE,cAAc,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAU,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,QAChE,IAAI,KACT,OAAO,CAAC,CAAC,CAiJX,CAAA"}
1
+ {"version":3,"file":"findOne.d.ts","sourceRoot":"","sources":["../../../src/globals/operations/findOne.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAS,MAAM,sBAAsB,CAAA;AAC7E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAQ/D,KAAK,IAAI,GAAG;IACV,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,YAAY,EAAE,qBAAqB,CAAA;IACnC,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,GAAG,EAAE,cAAc,CAAA;IACnB,MAAM,CAAC,EAAE,UAAU,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAU,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,QAChE,IAAI,KACT,OAAO,CAAC,CAAC,CAkKX,CAAA"}
@@ -1,9 +1,10 @@
1
1
  import executeAccess from '../../auth/executeAccess.js';
2
2
  import { afterRead } from '../../fields/hooks/afterRead/index.js';
3
+ import { getSelectMode } from '../../utilities/getSelectMode.js';
3
4
  import { killTransaction } from '../../utilities/killTransaction.js';
4
5
  import replaceWithDraftIfAvailable from '../../versions/drafts/replaceWithDraftIfAvailable.js';
5
6
  export const findOneOperation = async (args)=>{
6
- const { slug, depth, draft: draftEnabled = false, globalConfig, includeLockStatus, overrideAccess = false, req: { fallbackLocale, locale }, req, showHiddenFields } = args;
7
+ const { slug, depth, draft: draftEnabled = false, globalConfig, includeLockStatus, overrideAccess = false, req: { fallbackLocale, locale }, req, select, showHiddenFields } = args;
7
8
  try {
8
9
  // /////////////////////////////////////
9
10
  // Retrieve and execute access
@@ -21,6 +22,7 @@ export const findOneOperation = async (args)=>{
21
22
  slug,
22
23
  locale,
23
24
  req,
25
+ select,
24
26
  where: overrideAccess ? undefined : accessResult
25
27
  });
26
28
  if (!doc) {
@@ -64,7 +66,8 @@ export const findOneOperation = async (args)=>{
64
66
  entity: globalConfig,
65
67
  entityType: 'global',
66
68
  overrideAccess,
67
- req
69
+ req,
70
+ select
68
71
  });
69
72
  }
70
73
  // /////////////////////////////////////
@@ -80,6 +83,15 @@ export const findOneOperation = async (args)=>{
80
83
  }) || doc;
81
84
  }, Promise.resolve());
82
85
  // /////////////////////////////////////
86
+ // Execute globalType field if not selected
87
+ // /////////////////////////////////////
88
+ if (select && doc.globalType) {
89
+ const selectMode = getSelectMode(select);
90
+ if (selectMode === 'include' && !select['globalType'] || selectMode === 'exclude' && select['globalType'] === false) {
91
+ delete doc['globalType'];
92
+ }
93
+ }
94
+ // /////////////////////////////////////
83
95
  // Execute field-level hooks and access
84
96
  // /////////////////////////////////////
85
97
  doc = await afterRead({
@@ -93,6 +105,7 @@ export const findOneOperation = async (args)=>{
93
105
  locale,
94
106
  overrideAccess,
95
107
  req,
108
+ select,
96
109
  showHiddenFields
97
110
  });
98
111
  // /////////////////////////////////////