payload 3.0.0-beta.67 → 3.0.0-beta.68

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 (223) hide show
  1. package/dist/admin/RichText.d.ts +4 -4
  2. package/dist/admin/RichText.d.ts.map +1 -1
  3. package/dist/admin/RichText.js.map +1 -1
  4. package/dist/auth/operations/resetPassword.js +1 -1
  5. package/dist/auth/operations/resetPassword.js.map +1 -1
  6. package/dist/auth/strategies/jwt.d.ts.map +1 -1
  7. package/dist/auth/strategies/jwt.js +29 -0
  8. package/dist/auth/strategies/jwt.js.map +1 -1
  9. package/dist/auth/strategies/local/incrementLoginAttempts.d.ts.map +1 -1
  10. package/dist/auth/strategies/local/incrementLoginAttempts.js +1 -1
  11. package/dist/auth/strategies/local/incrementLoginAttempts.js.map +1 -1
  12. package/dist/auth/strategies/local/register.d.ts +2 -2
  13. package/dist/auth/strategies/local/register.d.ts.map +1 -1
  14. package/dist/auth/strategies/local/register.js.map +1 -1
  15. package/dist/bin/generateTypes.js +2 -2
  16. package/dist/bin/generateTypes.js.map +1 -1
  17. package/dist/collections/config/client.d.ts.map +1 -1
  18. package/dist/collections/config/defaults.d.ts +4 -69
  19. package/dist/collections/config/defaults.d.ts.map +1 -1
  20. package/dist/collections/config/defaults.js.map +1 -1
  21. package/dist/collections/config/reservedFieldNames.d.ts +15 -0
  22. package/dist/collections/config/reservedFieldNames.d.ts.map +1 -0
  23. package/dist/collections/config/reservedFieldNames.js +104 -0
  24. package/dist/collections/config/reservedFieldNames.js.map +1 -0
  25. package/dist/collections/config/reservedFieldNames.spec.js +148 -0
  26. package/dist/collections/config/reservedFieldNames.spec.js.map +1 -0
  27. package/dist/collections/config/sanitize.d.ts.map +1 -1
  28. package/dist/collections/config/sanitize.js +13 -9
  29. package/dist/collections/config/sanitize.js.map +1 -1
  30. package/dist/collections/config/types.d.ts +2 -2
  31. package/dist/collections/config/types.d.ts.map +1 -1
  32. package/dist/collections/config/types.js.map +1 -1
  33. package/dist/collections/dataloader.d.ts.map +1 -1
  34. package/dist/collections/dataloader.js.map +1 -1
  35. package/dist/collections/operations/create.d.ts.map +1 -1
  36. package/dist/collections/operations/create.js.map +1 -1
  37. package/dist/collections/operations/deleteByID.d.ts.map +1 -1
  38. package/dist/collections/operations/deleteByID.js.map +1 -1
  39. package/dist/collections/operations/duplicate.js.map +1 -1
  40. package/dist/collections/operations/update.js.map +1 -1
  41. package/dist/collections/operations/updateByID.js.map +1 -1
  42. package/dist/config/client.d.ts.map +1 -1
  43. package/dist/config/client.js +26 -26
  44. package/dist/config/client.js.map +1 -1
  45. package/dist/config/sanitize.d.ts.map +1 -1
  46. package/dist/config/sanitize.js +4 -7
  47. package/dist/config/sanitize.js.map +1 -1
  48. package/dist/config/types.d.ts +3 -4
  49. package/dist/config/types.d.ts.map +1 -1
  50. package/dist/config/types.js.map +1 -1
  51. package/dist/errors/APIError.d.ts +1 -0
  52. package/dist/errors/APIError.d.ts.map +1 -1
  53. package/dist/errors/APIError.js +3 -0
  54. package/dist/errors/APIError.js.map +1 -1
  55. package/dist/errors/ValidationError.d.ts +1 -0
  56. package/dist/errors/ValidationError.d.ts.map +1 -1
  57. package/dist/errors/ValidationError.js +3 -0
  58. package/dist/errors/ValidationError.js.map +1 -1
  59. package/dist/errors/index.d.ts +2 -2
  60. package/dist/errors/index.d.ts.map +1 -1
  61. package/dist/errors/index.js +2 -2
  62. package/dist/errors/index.js.map +1 -1
  63. package/dist/exports/shared.d.ts +3 -2
  64. package/dist/exports/shared.d.ts.map +1 -1
  65. package/dist/exports/shared.js +3 -2
  66. package/dist/exports/shared.js.map +1 -1
  67. package/dist/fields/config/sanitize.d.ts +3 -2
  68. package/dist/fields/config/sanitize.d.ts.map +1 -1
  69. package/dist/fields/config/sanitize.js +8 -16
  70. package/dist/fields/config/sanitize.js.map +1 -1
  71. package/dist/fields/config/sanitize.spec.js +1 -17
  72. package/dist/fields/config/sanitize.spec.js.map +1 -1
  73. package/dist/fields/getDefaultValue.d.ts +5 -5
  74. package/dist/fields/getDefaultValue.d.ts.map +1 -1
  75. package/dist/fields/getDefaultValue.js +4 -6
  76. package/dist/fields/getDefaultValue.js.map +1 -1
  77. package/dist/fields/hooks/afterChange/index.d.ts +6 -6
  78. package/dist/fields/hooks/afterChange/index.d.ts.map +1 -1
  79. package/dist/fields/hooks/afterChange/index.js +2 -2
  80. package/dist/fields/hooks/afterChange/index.js.map +1 -1
  81. package/dist/fields/hooks/afterChange/promise.d.ts +7 -7
  82. package/dist/fields/hooks/afterChange/promise.d.ts.map +1 -1
  83. package/dist/fields/hooks/afterChange/promise.js.map +1 -1
  84. package/dist/fields/hooks/afterChange/traverseFields.d.ts +7 -7
  85. package/dist/fields/hooks/afterChange/traverseFields.d.ts.map +1 -1
  86. package/dist/fields/hooks/afterChange/traverseFields.js.map +1 -1
  87. package/dist/fields/hooks/afterRead/index.d.ts +4 -4
  88. package/dist/fields/hooks/afterRead/index.d.ts.map +1 -1
  89. package/dist/fields/hooks/afterRead/index.js +2 -2
  90. package/dist/fields/hooks/afterRead/index.js.map +1 -1
  91. package/dist/fields/hooks/afterRead/promise.d.ts +3 -3
  92. package/dist/fields/hooks/afterRead/promise.d.ts.map +1 -1
  93. package/dist/fields/hooks/afterRead/promise.js +2 -2
  94. package/dist/fields/hooks/afterRead/promise.js.map +1 -1
  95. package/dist/fields/hooks/afterRead/traverseFields.d.ts +3 -3
  96. package/dist/fields/hooks/afterRead/traverseFields.d.ts.map +1 -1
  97. package/dist/fields/hooks/afterRead/traverseFields.js.map +1 -1
  98. package/dist/fields/hooks/beforeChange/cloneDataFromOriginalDoc.d.ts +2 -1
  99. package/dist/fields/hooks/beforeChange/cloneDataFromOriginalDoc.d.ts.map +1 -1
  100. package/dist/fields/hooks/beforeChange/cloneDataFromOriginalDoc.js.map +1 -1
  101. package/dist/fields/hooks/beforeChange/getExistingRowDoc.d.ts +2 -1
  102. package/dist/fields/hooks/beforeChange/getExistingRowDoc.d.ts.map +1 -1
  103. package/dist/fields/hooks/beforeChange/getExistingRowDoc.js.map +1 -1
  104. package/dist/fields/hooks/beforeChange/index.d.ts +6 -6
  105. package/dist/fields/hooks/beforeChange/index.d.ts.map +1 -1
  106. package/dist/fields/hooks/beforeChange/index.js +2 -2
  107. package/dist/fields/hooks/beforeChange/index.js.map +1 -1
  108. package/dist/fields/hooks/beforeChange/promise.d.ts +7 -7
  109. package/dist/fields/hooks/beforeChange/promise.d.ts.map +1 -1
  110. package/dist/fields/hooks/beforeChange/promise.js +3 -7
  111. package/dist/fields/hooks/beforeChange/promise.js.map +1 -1
  112. package/dist/fields/hooks/beforeChange/traverseFields.d.ts +7 -7
  113. package/dist/fields/hooks/beforeChange/traverseFields.d.ts.map +1 -1
  114. package/dist/fields/hooks/beforeChange/traverseFields.js.map +1 -1
  115. package/dist/fields/hooks/beforeValidate/index.d.ts +5 -5
  116. package/dist/fields/hooks/beforeValidate/index.d.ts.map +1 -1
  117. package/dist/fields/hooks/beforeValidate/index.js +2 -2
  118. package/dist/fields/hooks/beforeValidate/index.js.map +1 -1
  119. package/dist/fields/hooks/beforeValidate/promise.d.ts +3 -3
  120. package/dist/fields/hooks/beforeValidate/promise.d.ts.map +1 -1
  121. package/dist/fields/hooks/beforeValidate/promise.js +2 -2
  122. package/dist/fields/hooks/beforeValidate/promise.js.map +1 -1
  123. package/dist/fields/hooks/beforeValidate/traverseFields.d.ts +3 -3
  124. package/dist/fields/hooks/beforeValidate/traverseFields.d.ts.map +1 -1
  125. package/dist/fields/hooks/beforeValidate/traverseFields.js.map +1 -1
  126. package/dist/fields/mergeBaseFields.d.ts.map +1 -1
  127. package/dist/fields/mergeBaseFields.js +2 -2
  128. package/dist/fields/mergeBaseFields.js.map +1 -1
  129. package/dist/globals/operations/findOne.d.ts.map +1 -1
  130. package/dist/globals/operations/findOne.js.map +1 -1
  131. package/dist/globals/operations/findVersionByID.d.ts.map +1 -1
  132. package/dist/globals/operations/findVersionByID.js +2 -1
  133. package/dist/globals/operations/findVersionByID.js.map +1 -1
  134. package/dist/globals/operations/findVersions.js.map +1 -1
  135. package/dist/globals/operations/update.d.ts.map +1 -1
  136. package/dist/globals/operations/update.js +2 -1
  137. package/dist/globals/operations/update.js.map +1 -1
  138. package/dist/index.d.ts +11 -10
  139. package/dist/index.d.ts.map +1 -1
  140. package/dist/index.js +8 -12
  141. package/dist/index.js.map +1 -1
  142. package/dist/types/index.d.ts +8 -2
  143. package/dist/types/index.d.ts.map +1 -1
  144. package/dist/types/index.js.map +1 -1
  145. package/dist/uploads/imageResizer.d.ts.map +1 -1
  146. package/dist/uploads/imageResizer.js +16 -18
  147. package/dist/uploads/imageResizer.js.map +1 -1
  148. package/dist/utilities/deepCopyObject.d.ts +18 -1
  149. package/dist/utilities/deepCopyObject.d.ts.map +1 -1
  150. package/dist/utilities/deepCopyObject.js +147 -16
  151. package/dist/utilities/deepCopyObject.js.map +1 -1
  152. package/dist/utilities/deepMerge.d.ts +18 -1
  153. package/dist/utilities/deepMerge.d.ts.map +1 -1
  154. package/dist/utilities/deepMerge.js +38 -13
  155. package/dist/utilities/deepMerge.js.map +1 -1
  156. package/dist/utilities/isPlainObject.d.ts +1 -1
  157. package/dist/utilities/isPlainObject.d.ts.map +1 -1
  158. package/dist/utilities/isPlainObject.js +4 -18
  159. package/dist/utilities/isPlainObject.js.map +1 -1
  160. package/dist/utilities/logger.d.ts +5 -7
  161. package/dist/utilities/logger.d.ts.map +1 -1
  162. package/dist/utilities/logger.js +4 -7
  163. package/dist/utilities/logger.js.map +1 -1
  164. package/dist/utilities/telemetry/events/adminInit.d.ts.map +1 -1
  165. package/dist/utilities/telemetry/events/adminInit.js.map +1 -1
  166. package/dist/versions/baseFields.d.ts.map +1 -1
  167. package/dist/versions/baseFields.js +1 -0
  168. package/dist/versions/baseFields.js.map +1 -1
  169. package/dist/versions/drafts/replaceWithDraftIfAvailable.d.ts.map +1 -1
  170. package/dist/versions/drafts/replaceWithDraftIfAvailable.js +2 -1
  171. package/dist/versions/drafts/replaceWithDraftIfAvailable.js.map +1 -1
  172. package/dist/versions/saveVersion.d.ts.map +1 -1
  173. package/dist/versions/saveVersion.js +2 -2
  174. package/dist/versions/saveVersion.js.map +1 -1
  175. package/package.json +5 -7
  176. package/dist/collections/config/schema.d.ts +0 -4
  177. package/dist/collections/config/schema.d.ts.map +0 -1
  178. package/dist/collections/config/schema.js +0 -191
  179. package/dist/collections/config/schema.js.map +0 -1
  180. package/dist/config/schema.d.ts +0 -5
  181. package/dist/config/schema.d.ts.map +0 -1
  182. package/dist/config/schema.js +0 -179
  183. package/dist/config/schema.js.map +0 -1
  184. package/dist/config/shared/adminViewSchema.d.ts +0 -3
  185. package/dist/config/shared/adminViewSchema.d.ts.map +0 -1
  186. package/dist/config/shared/adminViewSchema.js +0 -11
  187. package/dist/config/shared/adminViewSchema.js.map +0 -1
  188. package/dist/config/shared/componentSchema.d.ts +0 -16
  189. package/dist/config/shared/componentSchema.d.ts.map +0 -1
  190. package/dist/config/shared/componentSchema.js +0 -27
  191. package/dist/config/shared/componentSchema.js.map +0 -1
  192. package/dist/config/shared/openGraphSchema.d.ts +0 -3
  193. package/dist/config/shared/openGraphSchema.d.ts.map +0 -1
  194. package/dist/config/shared/openGraphSchema.js +0 -16
  195. package/dist/config/shared/openGraphSchema.js.map +0 -1
  196. package/dist/config/validate.d.ts +0 -4
  197. package/dist/config/validate.d.ts.map +0 -1
  198. package/dist/config/validate.js +0 -89
  199. package/dist/config/validate.js.map +0 -1
  200. package/dist/fields/config/schema.d.ts +0 -29
  201. package/dist/fields/config/schema.d.ts.map +0 -1
  202. package/dist/fields/config/schema.js +0 -508
  203. package/dist/fields/config/schema.js.map +0 -1
  204. package/dist/globals/config/schema.d.ts +0 -4
  205. package/dist/globals/config/schema.d.ts.map +0 -1
  206. package/dist/globals/config/schema.js +0 -79
  207. package/dist/globals/config/schema.js.map +0 -1
  208. package/dist/utilities/combineMerge.d.ts +0 -2
  209. package/dist/utilities/combineMerge.d.ts.map +0 -1
  210. package/dist/utilities/combineMerge.js +0 -16
  211. package/dist/utilities/combineMerge.js.map +0 -1
  212. package/dist/utilities/convertData.d.ts +0 -5
  213. package/dist/utilities/convertData.d.ts.map +0 -1
  214. package/dist/utilities/convertData.js +0 -16
  215. package/dist/utilities/convertData.js.map +0 -1
  216. package/dist/utilities/getCSSVariable.d.ts +0 -3
  217. package/dist/utilities/getCSSVariable.d.ts.map +0 -1
  218. package/dist/utilities/getCSSVariable.js +0 -3
  219. package/dist/utilities/getCSSVariable.js.map +0 -1
  220. package/dist/utilities/overwriteMerge.d.ts +0 -3
  221. package/dist/utilities/overwriteMerge.d.ts.map +0 -1
  222. package/dist/utilities/overwriteMerge.js +0 -4
  223. package/dist/utilities/overwriteMerge.js.map +0 -1
@@ -1,22 +1,22 @@
1
1
  import type { SanitizedCollectionConfig } from '../../../collections/config/types.js';
2
2
  import type { SanitizedGlobalConfig } from '../../../globals/config/types.js';
3
- import type { PayloadRequest, RequestContext } from '../../../types/index.js';
3
+ import type { JsonObject, PayloadRequest, RequestContext } from '../../../types/index.js';
4
4
  import type { Field, TabAsField } from '../../config/types.js';
5
5
  type Args = {
6
6
  collection: SanitizedCollectionConfig | null;
7
7
  context: RequestContext;
8
- data: Record<string, unknown>;
9
- doc: Record<string, unknown>;
8
+ data: JsonObject;
9
+ doc: JsonObject;
10
10
  fields: (Field | TabAsField)[];
11
11
  global: SanitizedGlobalConfig | null;
12
12
  operation: 'create' | 'update';
13
13
  path: (number | string)[];
14
- previousDoc: Record<string, unknown>;
15
- previousSiblingDoc: Record<string, unknown>;
14
+ previousDoc: JsonObject;
15
+ previousSiblingDoc: JsonObject;
16
16
  req: PayloadRequest;
17
17
  schemaPath: string[];
18
- siblingData: Record<string, unknown>;
19
- siblingDoc: Record<string, unknown>;
18
+ siblingData: JsonObject;
19
+ siblingDoc: JsonObject;
20
20
  };
21
21
  export declare const traverseFields: ({ collection, context, data, doc, fields, global, operation, path, previousDoc, previousSiblingDoc, req, schemaPath, siblingData, siblingDoc, }: Args) => Promise<void>;
22
22
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../../src/fields/hooks/afterChange/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,cAAc,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAC7E,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAI9D,KAAK,IAAI,GAAG;IACV,UAAU,EAAE,yBAAyB,GAAG,IAAI,CAAA;IAC5C,OAAO,EAAE,cAAc,CAAA;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,MAAM,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAA;IAC9B,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAAA;IACpC,SAAS,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC9B,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;IACzB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACpC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC3C,GAAG,EAAE,cAAc,CAAA;IACnB,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACpC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACpC,CAAA;AAED,eAAO,MAAM,cAAc,oJAexB,IAAI,KAAG,OAAO,CAAC,IAAI,CAyBrB,CAAA"}
1
+ {"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../../../src/fields/hooks/afterChange/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,yBAAyB,GAAG,IAAI,CAAA;IAC5C,OAAO,EAAE,cAAc,CAAA;IACvB,IAAI,EAAE,UAAU,CAAA;IAChB,GAAG,EAAE,UAAU,CAAA;IACf,MAAM,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAA;IAC9B,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAAA;IACpC,SAAS,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC9B,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;IACzB,WAAW,EAAE,UAAU,CAAA;IACvB,kBAAkB,EAAE,UAAU,CAAA;IAC9B,GAAG,EAAE,cAAc,CAAA;IACnB,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB,WAAW,EAAE,UAAU,CAAA;IACvB,UAAU,EAAE,UAAU,CAAA;CACvB,CAAA;AAED,eAAO,MAAM,cAAc,oJAexB,IAAI,KAAG,OAAO,CAAC,IAAI,CAyBrB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/fields/hooks/afterChange/traverseFields.ts"],"sourcesContent":["import type { SanitizedCollectionConfig } from '../../../collections/config/types.js'\nimport type { SanitizedGlobalConfig } from '../../../globals/config/types.js'\nimport type { 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: SanitizedCollectionConfig | null\n context: RequestContext\n data: Record<string, unknown>\n doc: Record<string, unknown>\n fields: (Field | TabAsField)[]\n global: SanitizedGlobalConfig | null\n operation: 'create' | 'update'\n path: (number | string)[]\n previousDoc: Record<string, unknown>\n previousSiblingDoc: Record<string, unknown>\n req: PayloadRequest\n schemaPath: string[]\n siblingData: Record<string, unknown>\n siblingDoc: Record<string, unknown>\n}\n\nexport const traverseFields = async ({\n collection,\n context,\n data,\n doc,\n fields,\n global,\n operation,\n path,\n previousDoc,\n previousSiblingDoc,\n req,\n schemaPath,\n siblingData,\n siblingDoc,\n}: Args): Promise<void> => {\n const promises = []\n\n fields.forEach((field) => {\n promises.push(\n promise({\n collection,\n context,\n data,\n doc,\n field,\n global,\n operation,\n parentPath: path,\n parentSchemaPath: schemaPath,\n previousDoc,\n previousSiblingDoc,\n req,\n siblingData,\n siblingDoc,\n }),\n )\n })\n\n await Promise.all(promises)\n}\n"],"names":["promise","traverseFields","collection","context","data","doc","fields","global","operation","path","previousDoc","previousSiblingDoc","req","schemaPath","siblingData","siblingDoc","promises","forEach","field","push","parentPath","parentSchemaPath","Promise","all"],"mappings":"AAKA,SAASA,OAAO,QAAQ,eAAc;AAmBtC,OAAO,MAAMC,iBAAiB,OAAO,EACnCC,UAAU,EACVC,OAAO,EACPC,IAAI,EACJC,GAAG,EACHC,MAAM,EACNC,MAAM,EACNC,SAAS,EACTC,IAAI,EACJC,WAAW,EACXC,kBAAkB,EAClBC,GAAG,EACHC,UAAU,EACVC,WAAW,EACXC,UAAU,EACL;IACL,MAAMC,WAAW,EAAE;IAEnBV,OAAOW,OAAO,CAAC,CAACC;QACdF,SAASG,IAAI,CACXnB,QAAQ;YACNE;YACAC;YACAC;YACAC;YACAa;YACAX;YACAC;YACAY,YAAYX;YACZY,kBAAkBR;YAClBH;YACAC;YACAC;YACAE;YACAC;QACF;IAEJ;IAEA,MAAMO,QAAQC,GAAG,CAACP;AACpB,EAAC"}
1
+ {"version":3,"sources":["../../../../src/fields/hooks/afterChange/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: SanitizedCollectionConfig | null\n context: RequestContext\n data: JsonObject\n doc: JsonObject\n fields: (Field | TabAsField)[]\n global: SanitizedGlobalConfig | null\n operation: 'create' | 'update'\n path: (number | string)[]\n previousDoc: JsonObject\n previousSiblingDoc: JsonObject\n req: PayloadRequest\n schemaPath: string[]\n siblingData: JsonObject\n siblingDoc: JsonObject\n}\n\nexport const traverseFields = async ({\n collection,\n context,\n data,\n doc,\n fields,\n global,\n operation,\n path,\n previousDoc,\n previousSiblingDoc,\n req,\n schemaPath,\n siblingData,\n siblingDoc,\n}: Args): Promise<void> => {\n const promises = []\n\n fields.forEach((field) => {\n promises.push(\n promise({\n collection,\n context,\n data,\n doc,\n field,\n global,\n operation,\n parentPath: path,\n parentSchemaPath: schemaPath,\n previousDoc,\n previousSiblingDoc,\n req,\n siblingData,\n siblingDoc,\n }),\n )\n })\n\n await Promise.all(promises)\n}\n"],"names":["promise","traverseFields","collection","context","data","doc","fields","global","operation","path","previousDoc","previousSiblingDoc","req","schemaPath","siblingData","siblingDoc","promises","forEach","field","push","parentPath","parentSchemaPath","Promise","all"],"mappings":"AAKA,SAASA,OAAO,QAAQ,eAAc;AAmBtC,OAAO,MAAMC,iBAAiB,OAAO,EACnCC,UAAU,EACVC,OAAO,EACPC,IAAI,EACJC,GAAG,EACHC,MAAM,EACNC,MAAM,EACNC,SAAS,EACTC,IAAI,EACJC,WAAW,EACXC,kBAAkB,EAClBC,GAAG,EACHC,UAAU,EACVC,WAAW,EACXC,UAAU,EACL;IACL,MAAMC,WAAW,EAAE;IAEnBV,OAAOW,OAAO,CAAC,CAACC;QACdF,SAASG,IAAI,CACXnB,QAAQ;YACNE;YACAC;YACAC;YACAC;YACAa;YACAX;YACAC;YACAY,YAAYX;YACZY,kBAAkBR;YAClBH;YACAC;YACAC;YACAE;YACAC;QACF;IAEJ;IAEA,MAAMO,QAAQC,GAAG,CAACP;AACpB,EAAC"}
@@ -1,12 +1,12 @@
1
1
  import type { SanitizedCollectionConfig } from '../../../collections/config/types.js';
2
2
  import type { SanitizedGlobalConfig } from '../../../globals/config/types.js';
3
- import type { PayloadRequest, RequestContext } from '../../../types/index.js';
4
- type Args = {
3
+ import type { JsonObject, PayloadRequest, RequestContext } from '../../../types/index.js';
4
+ type Args<T extends JsonObject> = {
5
5
  collection: SanitizedCollectionConfig | null;
6
6
  context: RequestContext;
7
7
  currentDepth?: number;
8
8
  depth: number;
9
- doc: Record<string, unknown>;
9
+ doc: T;
10
10
  draft: boolean;
11
11
  fallbackLocale: null | string;
12
12
  findMany?: boolean;
@@ -26,6 +26,6 @@ type Args = {
26
26
  * - Execute read access control
27
27
  * - Populate relationships
28
28
  */
29
- export declare function afterRead<T = any>(args: Args): Promise<T>;
29
+ export declare function afterRead<T extends JsonObject>(args: Args<T>): Promise<T>;
30
30
  export {};
31
31
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/fields/hooks/afterRead/index.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,cAAc,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAK7E,KAAK,IAAI,GAAG;IACV,UAAU,EAAE,yBAAyB,GAAG,IAAI,CAAA;IAC5C,OAAO,EAAE,cAAc,CAAA;IACvB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,KAAK,EAAE,OAAO,CAAA;IACd,cAAc,EAAE,IAAI,GAAG,MAAM,CAAA;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAAA;IACpC,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,OAAO,CAAA;IACvB,GAAG,EAAE,cAAc,CAAA;IACnB,gBAAgB,EAAE,OAAO,CAAA;CAC1B,CAAA;AAED;;;;;;;;GAQG;AAEH,wBAAsB,SAAS,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAyD/D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/fields/hooks/afterRead/index.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;AAKzF,KAAK,IAAI,CAAC,CAAC,SAAS,UAAU,IAAI;IAChC,UAAU,EAAE,yBAAyB,GAAG,IAAI,CAAA;IAC5C,OAAO,EAAE,cAAc,CAAA;IACvB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,CAAC,CAAA;IACN,KAAK,EAAE,OAAO,CAAA;IACd,cAAc,EAAE,IAAI,GAAG,MAAM,CAAA;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAAA;IACpC,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,OAAO,CAAA;IACvB,GAAG,EAAE,cAAc,CAAA;IACnB,gBAAgB,EAAE,OAAO,CAAA;CAC1B,CAAA;AAED;;;;;;;;GAQG;AAEH,wBAAsB,SAAS,CAAC,CAAC,SAAS,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAyD/E"}
@@ -1,4 +1,4 @@
1
- import { deepCopyObject } from '../../../utilities/deepCopyObject.js';
1
+ import { deepCopyObjectSimple } from '../../../utilities/deepCopyObject.js';
2
2
  import { traverseFields } from './traverseFields.js';
3
3
  /**
4
4
  * This function is responsible for the following actions, in order:
@@ -10,7 +10,7 @@ import { traverseFields } from './traverseFields.js';
10
10
  * - Populate relationships
11
11
  */ export async function afterRead(args) {
12
12
  const { collection, context, currentDepth: incomingCurrentDepth, depth: incomingDepth, doc: incomingDoc, draft, fallbackLocale, findMany, flattenLocales = true, global, locale, overrideAccess, req, showHiddenFields } = args;
13
- const doc = deepCopyObject(incomingDoc);
13
+ const doc = deepCopyObjectSimple(incomingDoc);
14
14
  const fieldPromises = [];
15
15
  const populationPromises = [];
16
16
  let depth = incomingDepth || incomingDepth === 0 ? parseInt(String(incomingDepth), 10) : req.payload.config.defaultDepth;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/fields/hooks/afterRead/index.ts"],"sourcesContent":["import type { SanitizedCollectionConfig } from '../../../collections/config/types.js'\nimport type { SanitizedGlobalConfig } from '../../../globals/config/types.js'\nimport type { PayloadRequest, RequestContext } from '../../../types/index.js'\n\nimport { deepCopyObject } from '../../../utilities/deepCopyObject.js'\nimport { traverseFields } from './traverseFields.js'\n\ntype Args = {\n collection: SanitizedCollectionConfig | null\n context: RequestContext\n currentDepth?: number\n depth: number\n doc: Record<string, unknown>\n draft: boolean\n fallbackLocale: null | string\n findMany?: boolean\n flattenLocales?: boolean\n global: SanitizedGlobalConfig | null\n locale: string\n overrideAccess: boolean\n req: PayloadRequest\n showHiddenFields: boolean\n}\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. If the input doc contains all locales, the output doc after this function will only contain the requested locale.\n * - Sanitize outgoing data (point field, etc.)\n * - Execute field hooks\n * - Execute read access control\n * - Populate relationships\n */\n\nexport async function afterRead<T = any>(args: Args): Promise<T> {\n const {\n collection,\n context,\n currentDepth: incomingCurrentDepth,\n depth: incomingDepth,\n doc: incomingDoc,\n draft,\n fallbackLocale,\n findMany,\n flattenLocales = true,\n global,\n locale,\n overrideAccess,\n req,\n showHiddenFields,\n } = args\n\n const doc = deepCopyObject(incomingDoc)\n const fieldPromises = []\n const populationPromises = []\n\n let depth =\n incomingDepth || incomingDepth === 0\n ? parseInt(String(incomingDepth), 10)\n : req.payload.config.defaultDepth\n if (depth > req.payload.config.maxDepth) depth = req.payload.config.maxDepth\n\n const currentDepth = incomingCurrentDepth || 1\n\n traverseFields({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldPromises,\n fields: collection?.fields || global?.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n path: [],\n populationPromises,\n req,\n schemaPath: [],\n showHiddenFields,\n siblingDoc: doc,\n })\n\n await Promise.all(fieldPromises)\n await Promise.all(populationPromises)\n\n return doc\n}\n"],"names":["deepCopyObject","traverseFields","afterRead","args","collection","context","currentDepth","incomingCurrentDepth","depth","incomingDepth","doc","incomingDoc","draft","fallbackLocale","findMany","flattenLocales","global","locale","overrideAccess","req","showHiddenFields","fieldPromises","populationPromises","parseInt","String","payload","config","defaultDepth","maxDepth","fields","path","schemaPath","siblingDoc","Promise","all"],"mappings":"AAIA,SAASA,cAAc,QAAQ,uCAAsC;AACrE,SAASC,cAAc,QAAQ,sBAAqB;AAmBpD;;;;;;;;CAQC,GAED,OAAO,eAAeC,UAAmBC,IAAU;IACjD,MAAM,EACJC,UAAU,EACVC,OAAO,EACPC,cAAcC,oBAAoB,EAClCC,OAAOC,aAAa,EACpBC,KAAKC,WAAW,EAChBC,KAAK,EACLC,cAAc,EACdC,QAAQ,EACRC,iBAAiB,IAAI,EACrBC,MAAM,EACNC,MAAM,EACNC,cAAc,EACdC,GAAG,EACHC,gBAAgB,EACjB,GAAGjB;IAEJ,MAAMO,MAAMV,eAAeW;IAC3B,MAAMU,gBAAgB,EAAE;IACxB,MAAMC,qBAAqB,EAAE;IAE7B,IAAId,QACFC,iBAAiBA,kBAAkB,IAC/Bc,SAASC,OAAOf,gBAAgB,MAChCU,IAAIM,OAAO,CAACC,MAAM,CAACC,YAAY;IACrC,IAAInB,QAAQW,IAAIM,OAAO,CAACC,MAAM,CAACE,QAAQ,EAAEpB,QAAQW,IAAIM,OAAO,CAACC,MAAM,CAACE,QAAQ;IAE5E,MAAMtB,eAAeC,wBAAwB;IAE7CN,eAAe;QACbG;QACAC;QACAC;QACAE;QACAE;QACAE;QACAC;QACAQ;QACAQ,QAAQzB,YAAYyB,UAAUb,QAAQa;QACtCf;QACAC;QACAC;QACAC;QACAC;QACAY,MAAM,EAAE;QACRR;QACAH;QACAY,YAAY,EAAE;QACdX;QACAY,YAAYtB;IACd;IAEA,MAAMuB,QAAQC,GAAG,CAACb;IAClB,MAAMY,QAAQC,GAAG,CAACZ;IAElB,OAAOZ;AACT"}
1
+ {"version":3,"sources":["../../../../src/fields/hooks/afterRead/index.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'\n\nimport { deepCopyObjectSimple } from '../../../utilities/deepCopyObject.js'\nimport { traverseFields } from './traverseFields.js'\n\ntype Args<T extends JsonObject> = {\n collection: SanitizedCollectionConfig | null\n context: RequestContext\n currentDepth?: number\n depth: number\n doc: T\n draft: boolean\n fallbackLocale: null | string\n findMany?: boolean\n flattenLocales?: boolean\n global: SanitizedGlobalConfig | null\n locale: string\n overrideAccess: boolean\n req: PayloadRequest\n showHiddenFields: boolean\n}\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. If the input doc contains all locales, the output doc after this function will only contain the requested locale.\n * - Sanitize outgoing data (point field, etc.)\n * - Execute field hooks\n * - Execute read access control\n * - Populate relationships\n */\n\nexport async function afterRead<T extends JsonObject>(args: Args<T>): Promise<T> {\n const {\n collection,\n context,\n currentDepth: incomingCurrentDepth,\n depth: incomingDepth,\n doc: incomingDoc,\n draft,\n fallbackLocale,\n findMany,\n flattenLocales = true,\n global,\n locale,\n overrideAccess,\n req,\n showHiddenFields,\n } = args\n\n const doc = deepCopyObjectSimple(incomingDoc)\n const fieldPromises = []\n const populationPromises = []\n\n let depth =\n incomingDepth || incomingDepth === 0\n ? parseInt(String(incomingDepth), 10)\n : req.payload.config.defaultDepth\n if (depth > req.payload.config.maxDepth) depth = req.payload.config.maxDepth\n\n const currentDepth = incomingCurrentDepth || 1\n\n traverseFields({\n collection,\n context,\n currentDepth,\n depth,\n doc,\n draft,\n fallbackLocale,\n fieldPromises,\n fields: collection?.fields || global?.fields,\n findMany,\n flattenLocales,\n global,\n locale,\n overrideAccess,\n path: [],\n populationPromises,\n req,\n schemaPath: [],\n showHiddenFields,\n siblingDoc: doc,\n })\n\n await Promise.all(fieldPromises)\n await Promise.all(populationPromises)\n\n return doc\n}\n"],"names":["deepCopyObjectSimple","traverseFields","afterRead","args","collection","context","currentDepth","incomingCurrentDepth","depth","incomingDepth","doc","incomingDoc","draft","fallbackLocale","findMany","flattenLocales","global","locale","overrideAccess","req","showHiddenFields","fieldPromises","populationPromises","parseInt","String","payload","config","defaultDepth","maxDepth","fields","path","schemaPath","siblingDoc","Promise","all"],"mappings":"AAIA,SAASA,oBAAoB,QAAQ,uCAAsC;AAC3E,SAASC,cAAc,QAAQ,sBAAqB;AAmBpD;;;;;;;;CAQC,GAED,OAAO,eAAeC,UAAgCC,IAAa;IACjE,MAAM,EACJC,UAAU,EACVC,OAAO,EACPC,cAAcC,oBAAoB,EAClCC,OAAOC,aAAa,EACpBC,KAAKC,WAAW,EAChBC,KAAK,EACLC,cAAc,EACdC,QAAQ,EACRC,iBAAiB,IAAI,EACrBC,MAAM,EACNC,MAAM,EACNC,cAAc,EACdC,GAAG,EACHC,gBAAgB,EACjB,GAAGjB;IAEJ,MAAMO,MAAMV,qBAAqBW;IACjC,MAAMU,gBAAgB,EAAE;IACxB,MAAMC,qBAAqB,EAAE;IAE7B,IAAId,QACFC,iBAAiBA,kBAAkB,IAC/Bc,SAASC,OAAOf,gBAAgB,MAChCU,IAAIM,OAAO,CAACC,MAAM,CAACC,YAAY;IACrC,IAAInB,QAAQW,IAAIM,OAAO,CAACC,MAAM,CAACE,QAAQ,EAAEpB,QAAQW,IAAIM,OAAO,CAACC,MAAM,CAACE,QAAQ;IAE5E,MAAMtB,eAAeC,wBAAwB;IAE7CN,eAAe;QACbG;QACAC;QACAC;QACAE;QACAE;QACAE;QACAC;QACAQ;QACAQ,QAAQzB,YAAYyB,UAAUb,QAAQa;QACtCf;QACAC;QACAC;QACAC;QACAC;QACAY,MAAM,EAAE;QACRR;QACAH;QACAY,YAAY,EAAE;QACdX;QACAY,YAAYtB;IACd;IAEA,MAAMuB,QAAQC,GAAG,CAACb;IAClB,MAAMY,QAAQC,GAAG,CAACZ;IAElB,OAAOZ;AACT"}
@@ -1,13 +1,13 @@
1
1
  import type { SanitizedCollectionConfig } from '../../../collections/config/types.js';
2
2
  import type { SanitizedGlobalConfig } from '../../../globals/config/types.js';
3
- import type { PayloadRequest, RequestContext } from '../../../types/index.js';
3
+ import type { JsonObject, PayloadRequest, RequestContext } from '../../../types/index.js';
4
4
  import type { Field, TabAsField } from '../../config/types.js';
5
5
  type Args = {
6
6
  collection: SanitizedCollectionConfig | null;
7
7
  context: RequestContext;
8
8
  currentDepth: number;
9
9
  depth: number;
10
- doc: Record<string, unknown>;
10
+ doc: JsonObject;
11
11
  draft: boolean;
12
12
  fallbackLocale: null | string;
13
13
  field: Field | TabAsField;
@@ -31,7 +31,7 @@ type Args = {
31
31
  populationPromises: Promise<void>[];
32
32
  req: PayloadRequest;
33
33
  showHiddenFields: boolean;
34
- siblingDoc: Record<string, unknown>;
34
+ siblingDoc: JsonObject;
35
35
  triggerAccessControl?: boolean;
36
36
  triggerHooks?: boolean;
37
37
  };
@@ -1 +1 @@
1
- {"version":3,"file":"promise.d.ts","sourceRoot":"","sources":["../../../../src/fields/hooks/afterRead/promise.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAA;AACrF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAC7E,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAS9D,KAAK,IAAI,GAAG;IACV,UAAU,EAAE,yBAAyB,GAAG,IAAI,CAAA;IAC5C,OAAO,EAAE,cAAc,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,KAAK,EAAE,OAAO,CAAA;IACd,cAAc,EAAE,IAAI,GAAG,MAAM,CAAA;IAC7B,KAAK,EAAE,KAAK,GAAG,UAAU,CAAA;IACzB;;OAEG;IACH,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAA;IAC9B,QAAQ,EAAE,OAAO,CAAA;IACjB,cAAc,EAAE,OAAO,CAAA;IACvB,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAAA;IACpC,MAAM,EAAE,IAAI,GAAG,MAAM,CAAA;IACrB,cAAc,EAAE,OAAO,CAAA;IACvB;;OAEG;IACH,UAAU,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;IAC/B;;OAEG;IACH,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,kBAAkB,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAA;IACnC,GAAG,EAAE,cAAc,CAAA;IACnB,gBAAgB,EAAE,OAAO,CAAA;IACzB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACnC,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB,CAAA;AAUD,eAAO,MAAM,OAAO,uRAuBjB,IAAI,KAAG,OAAO,CAAC,IAAI,CAklBrB,CAAA"}
1
+ {"version":3,"file":"promise.d.ts","sourceRoot":"","sources":["../../../../src/fields/hooks/afterRead/promise.ts"],"names":[],"mappings":"AACA,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;AAS9D,KAAK,IAAI,GAAG;IACV,UAAU,EAAE,yBAAyB,GAAG,IAAI,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,KAAK,EAAE,KAAK,GAAG,UAAU,CAAA;IACzB;;OAEG;IACH,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAA;IAC9B,QAAQ,EAAE,OAAO,CAAA;IACjB,cAAc,EAAE,OAAO,CAAA;IACvB,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAAA;IACpC,MAAM,EAAE,IAAI,GAAG,MAAM,CAAA;IACrB,cAAc,EAAE,OAAO,CAAA;IACvB;;OAEG;IACH,UAAU,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;IAC/B;;OAEG;IACH,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,kBAAkB,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAA;IACnC,GAAG,EAAE,cAAc,CAAA;IACnB,gBAAgB,EAAE,OAAO,CAAA;IACzB,UAAU,EAAE,UAAU,CAAA;IACtB,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB,CAAA;AAUD,eAAO,MAAM,OAAO,uRAuBjB,IAAI,KAAG,OAAO,CAAC,IAAI,CAslBrB,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import { MissingEditorProp } from '../../../errors/index.js';
2
2
  import { fieldAffectsData, tabHasName } from '../../config/types.js';
3
- import getValueWithDefault from '../../getDefaultValue.js';
3
+ import { getDefaultValue } from '../../getDefaultValue.js';
4
4
  import { getFieldPaths } from '../../getFieldPaths.js';
5
5
  import { relationshipPopulationPromise } from './relationshipPopulationPromise.js';
6
6
  import { traverseFields } from './traverseFields.js';
@@ -167,7 +167,7 @@ export const promise = async ({ collection, context, currentDepth, depth, doc, d
167
167
  // Set defaultValue on the field for globals being returned without being first created
168
168
  // or collection documents created prior to having a default
169
169
  if (allowDefaultValue && typeof siblingDoc[field.name] === 'undefined' && typeof field.defaultValue !== 'undefined') {
170
- siblingDoc[field.name] = await getValueWithDefault({
170
+ siblingDoc[field.name] = await getDefaultValue({
171
171
  defaultValue: field.defaultValue,
172
172
  locale,
173
173
  user: req.user,
@@ -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 { 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 getValueWithDefault from '../../getDefaultValue.js'\nimport { getFieldPaths } from '../../getFieldPaths.js'\nimport { relationshipPopulationPromise } from './relationshipPopulationPromise.js'\nimport { traverseFields } from './traverseFields.js'\n\ntype Args = {\n collection: SanitizedCollectionConfig | null\n context: RequestContext\n currentDepth: number\n depth: number\n doc: Record<string, unknown>\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: SanitizedGlobalConfig | null\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: Record<string, unknown>\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 data: doc,\n field,\n findMany,\n global,\n operation: 'read',\n originalDoc: doc,\n overrideAccess,\n path: fieldPath,\n req,\n schemaPath: fieldSchemaPath,\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 data: doc,\n field,\n findMany,\n global,\n operation: 'read',\n originalDoc: doc,\n overrideAccess,\n path: fieldPath,\n req,\n schemaPath: fieldSchemaPath,\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 getValueWithDefault({\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') {\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 Record<string, unknown>\n if (typeof siblingDoc[field.name] !== 'object') groupDoc = {}\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]\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 || {},\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((blockType) => blockType.slug === row.blockType)\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 || {},\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((blockType) => blockType.slug === row.blockType)\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 || {},\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 Record<string, unknown>\n if (typeof siblingDoc[field.name] !== 'object') tabDoc = {}\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","getValueWithDefault","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 { 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: SanitizedCollectionConfig | null\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: SanitizedGlobalConfig | null\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 data: doc,\n field,\n findMany,\n global,\n operation: 'read',\n originalDoc: doc,\n overrideAccess,\n path: fieldPath,\n req,\n schemaPath: fieldSchemaPath,\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 data: doc,\n field,\n findMany,\n global,\n operation: 'read',\n originalDoc: doc,\n overrideAccess,\n path: fieldPath,\n req,\n schemaPath: fieldSchemaPath,\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') {\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') groupDoc = {}\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') tabDoc = {}\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,13 +1,13 @@
1
1
  import type { SanitizedCollectionConfig } from '../../../collections/config/types.js';
2
2
  import type { SanitizedGlobalConfig } from '../../../globals/config/types.js';
3
- import type { PayloadRequest, RequestContext } from '../../../types/index.js';
3
+ import type { JsonObject, PayloadRequest, RequestContext } from '../../../types/index.js';
4
4
  import type { Field, TabAsField } from '../../config/types.js';
5
5
  type Args = {
6
6
  collection: SanitizedCollectionConfig | null;
7
7
  context: RequestContext;
8
8
  currentDepth: number;
9
9
  depth: number;
10
- doc: Record<string, unknown>;
10
+ doc: JsonObject;
11
11
  draft: boolean;
12
12
  fallbackLocale: null | string;
13
13
  /**
@@ -25,7 +25,7 @@ type Args = {
25
25
  req: PayloadRequest;
26
26
  schemaPath: string[];
27
27
  showHiddenFields: boolean;
28
- siblingDoc: Record<string, unknown>;
28
+ siblingDoc: JsonObject;
29
29
  triggerAccessControl?: boolean;
30
30
  triggerHooks?: boolean;
31
31
  };
@@ -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,cAAc,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAC7E,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAI9D,KAAK,IAAI,GAAG;IACV,UAAU,EAAE,yBAAyB,GAAG,IAAI,CAAA;IAC5C,OAAO,EAAE,cAAc,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,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,qBAAqB,GAAG,IAAI,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,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACnC,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,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,yBAAyB,GAAG,IAAI,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,qBAAqB,GAAG,IAAI,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 +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 { 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: SanitizedCollectionConfig | null\n context: RequestContext\n currentDepth: number\n depth: number\n doc: Record<string, unknown>\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: SanitizedGlobalConfig | null\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: Record<string, unknown>\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 { 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: SanitizedCollectionConfig | null\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: SanitizedGlobalConfig | null\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,2 +1,3 @@
1
- export declare const cloneDataFromOriginalDoc: (originalDocData: unknown) => unknown;
1
+ import type { JsonArray, JsonObject } from '../../../types/index.js';
2
+ export declare const cloneDataFromOriginalDoc: (originalDocData: JsonArray | JsonObject) => JsonArray | JsonObject;
2
3
  //# sourceMappingURL=cloneDataFromOriginalDoc.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cloneDataFromOriginalDoc.d.ts","sourceRoot":"","sources":["../../../../src/fields/hooks/beforeChange/cloneDataFromOriginalDoc.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,wBAAwB,oBAAqB,OAAO,KAAG,OAkBnE,CAAA"}
1
+ {"version":3,"file":"cloneDataFromOriginalDoc.d.ts","sourceRoot":"","sources":["../../../../src/fields/hooks/beforeChange/cloneDataFromOriginalDoc.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAEpE,eAAO,MAAM,wBAAwB,oBAClB,SAAS,GAAG,UAAU,KACtC,SAAS,GAAG,UAkBd,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/fields/hooks/beforeChange/cloneDataFromOriginalDoc.ts"],"sourcesContent":["export const cloneDataFromOriginalDoc = (originalDocData: unknown): unknown => {\n if (Array.isArray(originalDocData)) {\n return originalDocData.map((row) => {\n if (typeof row === 'object' && row != null) {\n return {\n ...row,\n }\n }\n\n return row\n })\n }\n\n if (typeof originalDocData === 'object' && originalDocData !== null) {\n return { ...originalDocData }\n }\n\n return originalDocData\n}\n"],"names":["cloneDataFromOriginalDoc","originalDocData","Array","isArray","map","row"],"mappings":"AAAA,OAAO,MAAMA,2BAA2B,CAACC;IACvC,IAAIC,MAAMC,OAAO,CAACF,kBAAkB;QAClC,OAAOA,gBAAgBG,GAAG,CAAC,CAACC;YAC1B,IAAI,OAAOA,QAAQ,YAAYA,OAAO,MAAM;gBAC1C,OAAO;oBACL,GAAGA,GAAG;gBACR;YACF;YAEA,OAAOA;QACT;IACF;IAEA,IAAI,OAAOJ,oBAAoB,YAAYA,oBAAoB,MAAM;QACnE,OAAO;YAAE,GAAGA,eAAe;QAAC;IAC9B;IAEA,OAAOA;AACT,EAAC"}
1
+ {"version":3,"sources":["../../../../src/fields/hooks/beforeChange/cloneDataFromOriginalDoc.ts"],"sourcesContent":["import type { JsonArray, JsonObject } from '../../../types/index.js'\n\nexport const cloneDataFromOriginalDoc = (\n originalDocData: JsonArray | JsonObject,\n): JsonArray | JsonObject => {\n if (Array.isArray(originalDocData)) {\n return originalDocData.map((row) => {\n if (typeof row === 'object' && row != null) {\n return {\n ...row,\n }\n }\n\n return row\n })\n }\n\n if (typeof originalDocData === 'object' && originalDocData !== null) {\n return { ...originalDocData }\n }\n\n return originalDocData\n}\n"],"names":["cloneDataFromOriginalDoc","originalDocData","Array","isArray","map","row"],"mappings":"AAEA,OAAO,MAAMA,2BAA2B,CACtCC;IAEA,IAAIC,MAAMC,OAAO,CAACF,kBAAkB;QAClC,OAAOA,gBAAgBG,GAAG,CAAC,CAACC;YAC1B,IAAI,OAAOA,QAAQ,YAAYA,OAAO,MAAM;gBAC1C,OAAO;oBACL,GAAGA,GAAG;gBACR;YACF;YAEA,OAAOA;QACT;IACF;IAEA,IAAI,OAAOJ,oBAAoB,YAAYA,oBAAoB,MAAM;QACnE,OAAO;YAAE,GAAGA,eAAe;QAAC;IAC9B;IAEA,OAAOA;AACT,EAAC"}
@@ -4,5 +4,6 @@
4
4
  * this is an existing row, so it should be merged.
5
5
  * Otherwise, return an empty object.
6
6
  */
7
- export declare const getExistingRowDoc: (incomingRow: Record<string, unknown>, existingRows?: unknown) => Record<string, unknown>;
7
+ import type { JsonObject } from '../../../types/index.js';
8
+ export declare const getExistingRowDoc: (incomingRow: JsonObject, existingRows?: unknown) => JsonObject;
8
9
  //# sourceMappingURL=getExistingRowDoc.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getExistingRowDoc.d.ts","sourceRoot":"","sources":["../../../../src/fields/hooks/beforeChange/getExistingRowDoc.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,iBAAiB,gBACf,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,iBACrB,OAAO,KACrB,MAAM,CAAC,MAAM,EAAE,OAAO,CAcxB,CAAA"}
1
+ {"version":3,"file":"getExistingRowDoc.d.ts","sourceRoot":"","sources":["../../../../src/fields/hooks/beforeChange/getExistingRowDoc.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAEzD,eAAO,MAAM,iBAAiB,gBAAiB,UAAU,iBAAiB,OAAO,KAAG,UAcnF,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/fields/hooks/beforeChange/getExistingRowDoc.ts"],"sourcesContent":["/**\n * If there is an incoming row id,\n * and it matches the existing sibling doc id,\n * this is an existing row, so it should be merged.\n * Otherwise, return an empty object.\n */\n\nexport const getExistingRowDoc = (\n incomingRow: Record<string, unknown>,\n existingRows?: unknown,\n): Record<string, unknown> => {\n if (incomingRow.id && Array.isArray(existingRows)) {\n const matchedExistingRow = existingRows.find((existingRow) => {\n if (typeof existingRow === 'object' && 'id' in existingRow) {\n if (existingRow.id === incomingRow.id) return existingRow\n }\n\n return false\n })\n\n if (matchedExistingRow) return matchedExistingRow\n }\n\n return {}\n}\n"],"names":["getExistingRowDoc","incomingRow","existingRows","id","Array","isArray","matchedExistingRow","find","existingRow"],"mappings":"AAAA;;;;;CAKC,GAED,OAAO,MAAMA,oBAAoB,CAC/BC,aACAC;IAEA,IAAID,YAAYE,EAAE,IAAIC,MAAMC,OAAO,CAACH,eAAe;QACjD,MAAMI,qBAAqBJ,aAAaK,IAAI,CAAC,CAACC;YAC5C,IAAI,OAAOA,gBAAgB,YAAY,QAAQA,aAAa;gBAC1D,IAAIA,YAAYL,EAAE,KAAKF,YAAYE,EAAE,EAAE,OAAOK;YAChD;YAEA,OAAO;QACT;QAEA,IAAIF,oBAAoB,OAAOA;IACjC;IAEA,OAAO,CAAC;AACV,EAAC"}
1
+ {"version":3,"sources":["../../../../src/fields/hooks/beforeChange/getExistingRowDoc.ts"],"sourcesContent":["/**\n * If there is an incoming row id,\n * and it matches the existing sibling doc id,\n * this is an existing row, so it should be merged.\n * Otherwise, return an empty object.\n */\nimport type { JsonObject } from '../../../types/index.js'\n\nexport const getExistingRowDoc = (incomingRow: JsonObject, existingRows?: unknown): JsonObject => {\n if (incomingRow.id && Array.isArray(existingRows)) {\n const matchedExistingRow = existingRows.find((existingRow) => {\n if (typeof existingRow === 'object' && 'id' in existingRow) {\n if (existingRow.id === incomingRow.id) return existingRow\n }\n\n return false\n })\n\n if (matchedExistingRow) return matchedExistingRow\n }\n\n return {}\n}\n"],"names":["getExistingRowDoc","incomingRow","existingRows","id","Array","isArray","matchedExistingRow","find","existingRow"],"mappings":"AAAA;;;;;CAKC,GAGD,OAAO,MAAMA,oBAAoB,CAACC,aAAyBC;IACzD,IAAID,YAAYE,EAAE,IAAIC,MAAMC,OAAO,CAACH,eAAe;QACjD,MAAMI,qBAAqBJ,aAAaK,IAAI,CAAC,CAACC;YAC5C,IAAI,OAAOA,gBAAgB,YAAY,QAAQA,aAAa;gBAC1D,IAAIA,YAAYL,EAAE,KAAKF,YAAYE,EAAE,EAAE,OAAOK;YAChD;YAEA,OAAO;QACT;QAEA,IAAIF,oBAAoB,OAAOA;IACjC;IAEA,OAAO,CAAC;AACV,EAAC"}
@@ -1,12 +1,12 @@
1
1
  import type { SanitizedCollectionConfig } from '../../../collections/config/types.js';
2
2
  import type { SanitizedGlobalConfig } from '../../../globals/config/types.js';
3
- import type { Operation, PayloadRequest, RequestContext } from '../../../types/index.js';
4
- type Args<T> = {
3
+ import type { JsonObject, Operation, PayloadRequest, RequestContext } from '../../../types/index.js';
4
+ type Args<T extends JsonObject> = {
5
5
  collection: SanitizedCollectionConfig | null;
6
6
  context: RequestContext;
7
- data: Record<string, unknown> | T;
8
- doc: Record<string, unknown> | T;
9
- docWithLocales: Record<string, unknown>;
7
+ data: T;
8
+ doc: T;
9
+ docWithLocales: JsonObject;
10
10
  duplicate?: boolean;
11
11
  global: SanitizedGlobalConfig | null;
12
12
  id?: number | string;
@@ -23,6 +23,6 @@ type Args<T> = {
23
23
  * - beforeDuplicate hooks (if duplicate)
24
24
  * - Unflatten locales. The input `data` is the normal document for one locale. The output result will become the document with locales.
25
25
  */
26
- export declare const beforeChange: <T extends Record<string, unknown>>({ id, collection, context, data: incomingData, doc, docWithLocales, duplicate, global, operation, req, skipValidation, }: Args<T>) => Promise<T>;
26
+ export declare const beforeChange: <T extends JsonObject>({ id, collection, context, data: incomingData, doc, docWithLocales, duplicate, global, operation, req, skipValidation, }: Args<T>) => Promise<T>;
27
27
  export {};
28
28
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/fields/hooks/beforeChange/index.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,SAAS,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAMxF,KAAK,IAAI,CAAC,CAAC,IAAI;IACb,UAAU,EAAE,yBAAyB,GAAG,IAAI,CAAA;IAC5C,OAAO,EAAE,cAAc,CAAA;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAA;IACjC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAA;IAChC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACvC,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAAA;IACpC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,SAAS,EAAE,SAAS,CAAA;IACpB,GAAG,EAAE,cAAc,CAAA;IACnB,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,GAAU,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,4HAYjE,IAAI,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,CA4CrB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/fields/hooks/beforeChange/index.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,SAAS,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAMpG,KAAK,IAAI,CAAC,CAAC,SAAS,UAAU,IAAI;IAChC,UAAU,EAAE,yBAAyB,GAAG,IAAI,CAAA;IAC5C,OAAO,EAAE,cAAc,CAAA;IACvB,IAAI,EAAE,CAAC,CAAA;IACP,GAAG,EAAE,CAAC,CAAA;IACN,cAAc,EAAE,UAAU,CAAA;IAC1B,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAAA;IACpC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,SAAS,EAAE,SAAS,CAAA;IACpB,GAAG,EAAE,cAAc,CAAA;IACnB,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,GAAU,CAAC,SAAS,UAAU,4HAYpD,IAAI,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,CAAC,CA4CrB,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import { ValidationError } from '../../../errors/index.js';
2
- import { deepCopyObject } from '../../../utilities/deepCopyObject.js';
2
+ import { deepCopyObjectSimple } from '../../../utilities/deepCopyObject.js';
3
3
  import { traverseFields } from './traverseFields.js';
4
4
  /**
5
5
  * This function is responsible for the following actions, in order:
@@ -10,7 +10,7 @@ import { traverseFields } from './traverseFields.js';
10
10
  * - beforeDuplicate hooks (if duplicate)
11
11
  * - Unflatten locales. The input `data` is the normal document for one locale. The output result will become the document with locales.
12
12
  */ export const beforeChange = async ({ id, collection, context, data: incomingData, doc, docWithLocales, duplicate = false, global, operation, req, skipValidation })=>{
13
- const data = deepCopyObject(incomingData);
13
+ const data = deepCopyObjectSimple(incomingData);
14
14
  const mergeLocaleActions = [];
15
15
  const errors = [];
16
16
  await traverseFields({
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/fields/hooks/beforeChange/index.ts"],"sourcesContent":["import type { SanitizedCollectionConfig } from '../../../collections/config/types.js'\nimport type { SanitizedGlobalConfig } from '../../../globals/config/types.js'\nimport type { Operation, PayloadRequest, RequestContext } from '../../../types/index.js'\n\nimport { ValidationError } from '../../../errors/index.js'\nimport { deepCopyObject } from '../../../utilities/deepCopyObject.js'\nimport { traverseFields } from './traverseFields.js'\n\ntype Args<T> = {\n collection: SanitizedCollectionConfig | null\n context: RequestContext\n data: Record<string, unknown> | T\n doc: Record<string, unknown> | T\n docWithLocales: Record<string, unknown>\n duplicate?: boolean\n global: SanitizedGlobalConfig | null\n id?: number | string\n operation: Operation\n req: PayloadRequest\n skipValidation?: boolean\n}\n\n/**\n * This function is responsible for the following actions, in order:\n * - Run condition\n * - Execute field hooks\n * - Validate data\n * - Transform data for storage\n * - beforeDuplicate hooks (if duplicate)\n * - Unflatten locales. The input `data` is the normal document for one locale. The output result will become the document with locales.\n */\nexport const beforeChange = async <T extends Record<string, unknown>>({\n id,\n collection,\n context,\n data: incomingData,\n doc,\n docWithLocales,\n duplicate = false,\n global,\n operation,\n req,\n skipValidation,\n}: Args<T>): Promise<T> => {\n const data = deepCopyObject(incomingData)\n const mergeLocaleActions = []\n const errors: { field: string; message: string }[] = []\n\n await traverseFields({\n id,\n collection,\n context,\n data,\n doc,\n docWithLocales,\n duplicate,\n errors,\n fields: collection?.fields || global?.fields,\n global,\n mergeLocaleActions,\n operation,\n path: [],\n req,\n schemaPath: [],\n siblingData: data,\n siblingDoc: doc,\n siblingDocWithLocales: docWithLocales,\n skipValidation,\n })\n\n if (errors.length > 0) {\n throw new ValidationError(\n {\n collection: collection?.slug,\n errors,\n global: global?.slug,\n },\n req.t,\n )\n }\n\n await mergeLocaleActions.reduce(async (priorAction, action) => {\n await priorAction\n await action()\n }, Promise.resolve())\n\n return data\n}\n"],"names":["ValidationError","deepCopyObject","traverseFields","beforeChange","id","collection","context","data","incomingData","doc","docWithLocales","duplicate","global","operation","req","skipValidation","mergeLocaleActions","errors","fields","path","schemaPath","siblingData","siblingDoc","siblingDocWithLocales","length","slug","t","reduce","priorAction","action","Promise","resolve"],"mappings":"AAIA,SAASA,eAAe,QAAQ,2BAA0B;AAC1D,SAASC,cAAc,QAAQ,uCAAsC;AACrE,SAASC,cAAc,QAAQ,sBAAqB;AAgBpD;;;;;;;;CAQC,GACD,OAAO,MAAMC,eAAe,OAA0C,EACpEC,EAAE,EACFC,UAAU,EACVC,OAAO,EACPC,MAAMC,YAAY,EAClBC,GAAG,EACHC,cAAc,EACdC,YAAY,KAAK,EACjBC,MAAM,EACNC,SAAS,EACTC,GAAG,EACHC,cAAc,EACN;IACR,MAAMR,OAAON,eAAeO;IAC5B,MAAMQ,qBAAqB,EAAE;IAC7B,MAAMC,SAA+C,EAAE;IAEvD,MAAMf,eAAe;QACnBE;QACAC;QACAC;QACAC;QACAE;QACAC;QACAC;QACAM;QACAC,QAAQb,YAAYa,UAAUN,QAAQM;QACtCN;QACAI;QACAH;QACAM,MAAM,EAAE;QACRL;QACAM,YAAY,EAAE;QACdC,aAAad;QACbe,YAAYb;QACZc,uBAAuBb;QACvBK;IACF;IAEA,IAAIE,OAAOO,MAAM,GAAG,GAAG;QACrB,MAAM,IAAIxB,gBACR;YACEK,YAAYA,YAAYoB;YACxBR;YACAL,QAAQA,QAAQa;QAClB,GACAX,IAAIY,CAAC;IAET;IAEA,MAAMV,mBAAmBW,MAAM,CAAC,OAAOC,aAAaC;QAClD,MAAMD;QACN,MAAMC;IACR,GAAGC,QAAQC,OAAO;IAElB,OAAOxB;AACT,EAAC"}
1
+ {"version":3,"sources":["../../../../src/fields/hooks/beforeChange/index.ts"],"sourcesContent":["import type { SanitizedCollectionConfig } from '../../../collections/config/types.js'\nimport type { SanitizedGlobalConfig } from '../../../globals/config/types.js'\nimport type { JsonObject, Operation, PayloadRequest, RequestContext } from '../../../types/index.js'\n\nimport { ValidationError } from '../../../errors/index.js'\nimport { deepCopyObjectSimple } from '../../../utilities/deepCopyObject.js'\nimport { traverseFields } from './traverseFields.js'\n\ntype Args<T extends JsonObject> = {\n collection: SanitizedCollectionConfig | null\n context: RequestContext\n data: T\n doc: T\n docWithLocales: JsonObject\n duplicate?: boolean\n global: SanitizedGlobalConfig | null\n id?: number | string\n operation: Operation\n req: PayloadRequest\n skipValidation?: boolean\n}\n\n/**\n * This function is responsible for the following actions, in order:\n * - Run condition\n * - Execute field hooks\n * - Validate data\n * - Transform data for storage\n * - beforeDuplicate hooks (if duplicate)\n * - Unflatten locales. The input `data` is the normal document for one locale. The output result will become the document with locales.\n */\nexport const beforeChange = async <T extends JsonObject>({\n id,\n collection,\n context,\n data: incomingData,\n doc,\n docWithLocales,\n duplicate = false,\n global,\n operation,\n req,\n skipValidation,\n}: Args<T>): Promise<T> => {\n const data = deepCopyObjectSimple(incomingData)\n const mergeLocaleActions = []\n const errors: { field: string; message: string }[] = []\n\n await traverseFields({\n id,\n collection,\n context,\n data,\n doc,\n docWithLocales,\n duplicate,\n errors,\n fields: collection?.fields || global?.fields,\n global,\n mergeLocaleActions,\n operation,\n path: [],\n req,\n schemaPath: [],\n siblingData: data,\n siblingDoc: doc,\n siblingDocWithLocales: docWithLocales,\n skipValidation,\n })\n\n if (errors.length > 0) {\n throw new ValidationError(\n {\n collection: collection?.slug,\n errors,\n global: global?.slug,\n },\n req.t,\n )\n }\n\n await mergeLocaleActions.reduce(async (priorAction, action) => {\n await priorAction\n await action()\n }, Promise.resolve())\n\n return data\n}\n"],"names":["ValidationError","deepCopyObjectSimple","traverseFields","beforeChange","id","collection","context","data","incomingData","doc","docWithLocales","duplicate","global","operation","req","skipValidation","mergeLocaleActions","errors","fields","path","schemaPath","siblingData","siblingDoc","siblingDocWithLocales","length","slug","t","reduce","priorAction","action","Promise","resolve"],"mappings":"AAIA,SAASA,eAAe,QAAQ,2BAA0B;AAC1D,SAASC,oBAAoB,QAAQ,uCAAsC;AAC3E,SAASC,cAAc,QAAQ,sBAAqB;AAgBpD;;;;;;;;CAQC,GACD,OAAO,MAAMC,eAAe,OAA6B,EACvDC,EAAE,EACFC,UAAU,EACVC,OAAO,EACPC,MAAMC,YAAY,EAClBC,GAAG,EACHC,cAAc,EACdC,YAAY,KAAK,EACjBC,MAAM,EACNC,SAAS,EACTC,GAAG,EACHC,cAAc,EACN;IACR,MAAMR,OAAON,qBAAqBO;IAClC,MAAMQ,qBAAqB,EAAE;IAC7B,MAAMC,SAA+C,EAAE;IAEvD,MAAMf,eAAe;QACnBE;QACAC;QACAC;QACAC;QACAE;QACAC;QACAC;QACAM;QACAC,QAAQb,YAAYa,UAAUN,QAAQM;QACtCN;QACAI;QACAH;QACAM,MAAM,EAAE;QACRL;QACAM,YAAY,EAAE;QACdC,aAAad;QACbe,YAAYb;QACZc,uBAAuBb;QACvBK;IACF;IAEA,IAAIE,OAAOO,MAAM,GAAG,GAAG;QACrB,MAAM,IAAIxB,gBACR;YACEK,YAAYA,YAAYoB;YACxBR;YACAL,QAAQA,QAAQa;QAClB,GACAX,IAAIY,CAAC;IAET;IAEA,MAAMV,mBAAmBW,MAAM,CAAC,OAAOC,aAAaC;QAClD,MAAMD;QACN,MAAMC;IACR,GAAGC,QAAQC,OAAO;IAElB,OAAOxB;AACT,EAAC"}
@@ -1,13 +1,13 @@
1
1
  import type { SanitizedCollectionConfig } from '../../../collections/config/types.js';
2
2
  import type { SanitizedGlobalConfig } from '../../../globals/config/types.js';
3
- import type { Operation, PayloadRequest, RequestContext } from '../../../types/index.js';
3
+ import type { JsonObject, Operation, PayloadRequest, RequestContext } from '../../../types/index.js';
4
4
  import type { Field, TabAsField } from '../../config/types.js';
5
5
  type Args = {
6
6
  collection: SanitizedCollectionConfig | null;
7
7
  context: RequestContext;
8
- data: Record<string, unknown>;
9
- doc: Record<string, unknown>;
10
- docWithLocales: Record<string, unknown>;
8
+ data: JsonObject;
9
+ doc: JsonObject;
10
+ docWithLocales: JsonObject;
11
11
  duplicate: boolean;
12
12
  errors: {
13
13
  field: string;
@@ -27,9 +27,9 @@ type Args = {
27
27
  */
28
28
  parentSchemaPath: string[];
29
29
  req: PayloadRequest;
30
- siblingData: Record<string, unknown>;
31
- siblingDoc: Record<string, unknown>;
32
- siblingDocWithLocales?: Record<string, unknown>;
30
+ siblingData: JsonObject;
31
+ siblingDoc: JsonObject;
32
+ siblingDocWithLocales?: JsonObject;
33
33
  skipValidation: boolean;
34
34
  };
35
35
  export declare const promise: ({ id, collection, context, data, doc, docWithLocales, duplicate, errors, field, global, mergeLocaleActions, operation, parentPath, parentSchemaPath, req, siblingData, siblingDoc, siblingDocWithLocales, skipValidation, }: Args) => Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"promise.d.ts","sourceRoot":"","sources":["../../../../src/fields/hooks/beforeChange/promise.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAA;AACrF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;AAC7E,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACxF,OAAO,KAAK,EAAE,KAAK,EAAiB,UAAU,EAAmB,MAAM,uBAAuB,CAAA;AAS9F,KAAK,IAAI,GAAG;IACV,UAAU,EAAE,yBAAyB,GAAG,IAAI,CAAA;IAC5C,OAAO,EAAE,cAAc,CAAA;IACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC7B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACvC,SAAS,EAAE,OAAO,CAAA;IAClB,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAC5C,KAAK,EAAE,KAAK,GAAG,UAAU,CAAA;IACzB,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAAA;IACpC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,kBAAkB,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAA;IAC3C,SAAS,EAAE,SAAS,CAAA;IACpB;;OAEG;IACH,UAAU,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;IAC/B;;OAEG;IACH,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,GAAG,EAAE,cAAc,CAAA;IACnB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACpC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACnC,qBAAqB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/C,cAAc,EAAE,OAAO,CAAA;CACxB,CAAA;AAUD,eAAO,MAAM,OAAO,gOAoBjB,IAAI,KAAG,OAAO,CAAC,IAAI,CAmarB,CAAA"}
1
+ {"version":3,"file":"promise.d.ts","sourceRoot":"","sources":["../../../../src/fields/hooks/beforeChange/promise.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAA;AACrF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;AAC7E,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACpG,OAAO,KAAK,EAAE,KAAK,EAAiB,UAAU,EAAmB,MAAM,uBAAuB,CAAA;AAU9F,KAAK,IAAI,GAAG;IACV,UAAU,EAAE,yBAAyB,GAAG,IAAI,CAAA;IAC5C,OAAO,EAAE,cAAc,CAAA;IACvB,IAAI,EAAE,UAAU,CAAA;IAChB,GAAG,EAAE,UAAU,CAAA;IACf,cAAc,EAAE,UAAU,CAAA;IAC1B,SAAS,EAAE,OAAO,CAAA;IAClB,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAC5C,KAAK,EAAE,KAAK,GAAG,UAAU,CAAA;IACzB,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAAA;IACpC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,kBAAkB,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAA;IAC3C,SAAS,EAAE,SAAS,CAAA;IACpB;;OAEG;IACH,UAAU,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;IAC/B;;OAEG;IACH,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,GAAG,EAAE,cAAc,CAAA;IACnB,WAAW,EAAE,UAAU,CAAA;IACvB,UAAU,EAAE,UAAU,CAAA;IACtB,qBAAqB,CAAC,EAAE,UAAU,CAAA;IAClC,cAAc,EAAE,OAAO,CAAA;CACxB,CAAA;AAUD,eAAO,MAAM,OAAO,gOAoBjB,IAAI,KAAG,OAAO,CAAC,IAAI,CAyarB,CAAA"}
@@ -1,5 +1,5 @@
1
- import merge from 'deepmerge';
2
1
  import { MissingEditorProp } from '../../../errors/index.js';
2
+ import { deepMergeWithSourceArrays } from '../../../utilities/deepMerge.js';
3
3
  import { fieldAffectsData, tabHasName } from '../../config/types.js';
4
4
  import { getFieldPaths } from '../../getFieldPaths.js';
5
5
  import { beforeDuplicate } from './beforeDuplicate.js';
@@ -75,18 +75,14 @@ export const promise = async ({ id, collection, context, data, doc, docWithLocal
75
75
  const validationResult = await field.validate(valueToValidate, {
76
76
  ...field,
77
77
  id,
78
- data: merge(doc, data, {
79
- arrayMerge: (_, source)=>source
80
- }),
78
+ data: deepMergeWithSourceArrays(doc, data),
81
79
  jsonError,
82
80
  operation,
83
81
  preferences: {
84
82
  fields: {}
85
83
  },
86
84
  req,
87
- siblingData: merge(siblingDoc, siblingData, {
88
- arrayMerge: (_, source)=>source
89
- })
85
+ siblingData: deepMergeWithSourceArrays(siblingDoc, siblingData)
90
86
  });
91
87
  if (typeof validationResult === 'string') {
92
88
  errors.push({