payload 3.0.0-beta.2 → 3.0.0-beta.21

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 (696) hide show
  1. package/dist/admin/RichText.d.ts +18 -10
  2. package/dist/admin/RichText.d.ts.map +1 -1
  3. package/dist/admin/RichText.js.map +1 -1
  4. package/dist/admin/elements/PreviewButton.d.ts +2 -1
  5. package/dist/admin/elements/PreviewButton.d.ts.map +1 -1
  6. package/dist/admin/elements/PreviewButton.js.map +1 -1
  7. package/dist/admin/elements/PublishButton.d.ts +2 -1
  8. package/dist/admin/elements/PublishButton.d.ts.map +1 -1
  9. package/dist/admin/elements/PublishButton.js.map +1 -1
  10. package/dist/admin/elements/SaveButton.d.ts +2 -1
  11. package/dist/admin/elements/SaveButton.d.ts.map +1 -1
  12. package/dist/admin/elements/SaveButton.js.map +1 -1
  13. package/dist/admin/elements/SaveDraftButton.d.ts +2 -1
  14. package/dist/admin/elements/SaveDraftButton.d.ts.map +1 -1
  15. package/dist/admin/elements/SaveDraftButton.js.map +1 -1
  16. package/dist/admin/elements/Tab.d.ts +3 -0
  17. package/dist/admin/elements/Tab.d.ts.map +1 -1
  18. package/dist/admin/elements/Tab.js.map +1 -1
  19. package/dist/admin/elements/WithServerSideProps.d.ts +5 -0
  20. package/dist/admin/elements/WithServerSideProps.d.ts.map +1 -0
  21. package/dist/admin/elements/WithServerSideProps.js +3 -0
  22. package/dist/admin/elements/WithServerSideProps.js.map +1 -0
  23. package/dist/admin/forms/FieldDescription.d.ts +4 -2
  24. package/dist/admin/forms/FieldDescription.d.ts.map +1 -1
  25. package/dist/admin/forms/FieldDescription.js.map +1 -1
  26. package/dist/admin/forms/RowLabel.d.ts +2 -1
  27. package/dist/admin/forms/RowLabel.d.ts.map +1 -1
  28. package/dist/admin/forms/RowLabel.js.map +1 -1
  29. package/dist/admin/types.d.ts +2 -1
  30. package/dist/admin/types.d.ts.map +1 -1
  31. package/dist/admin/types.js.map +1 -1
  32. package/dist/admin/views/types.d.ts +2 -2
  33. package/dist/admin/views/types.d.ts.map +1 -1
  34. package/dist/admin/views/types.js.map +1 -1
  35. package/dist/auth/baseFields/apiKey.d.ts.map +1 -1
  36. package/dist/auth/baseFields/apiKey.js +6 -4
  37. package/dist/auth/baseFields/apiKey.js.map +1 -1
  38. package/dist/auth/cookies.d.ts +16 -4
  39. package/dist/auth/cookies.d.ts.map +1 -1
  40. package/dist/auth/cookies.js +45 -14
  41. package/dist/auth/cookies.js.map +1 -1
  42. package/dist/auth/defaultAccess.d.ts +2 -2
  43. package/dist/auth/defaultAccess.d.ts.map +1 -1
  44. package/dist/auth/defaultAccess.js.map +1 -1
  45. package/dist/auth/executeAccess.d.ts +2 -2
  46. package/dist/auth/executeAccess.d.ts.map +1 -1
  47. package/dist/auth/executeAccess.js.map +1 -1
  48. package/dist/auth/executeAuthStrategies.d.ts +3 -2
  49. package/dist/auth/executeAuthStrategies.d.ts.map +1 -1
  50. package/dist/auth/executeAuthStrategies.js.map +1 -1
  51. package/dist/auth/getAccessResults.d.ts +2 -2
  52. package/dist/auth/getAccessResults.d.ts.map +1 -1
  53. package/dist/auth/getAccessResults.js +1 -1
  54. package/dist/auth/getAccessResults.js.map +1 -1
  55. package/dist/auth/getFieldsToSign.d.ts +2 -2
  56. package/dist/auth/getFieldsToSign.d.ts.map +1 -1
  57. package/dist/auth/getFieldsToSign.js.map +1 -1
  58. package/dist/auth/operations/access.d.ts +2 -2
  59. package/dist/auth/operations/access.d.ts.map +1 -1
  60. package/dist/auth/operations/access.js.map +1 -1
  61. package/dist/auth/operations/auth.d.ts +5 -4
  62. package/dist/auth/operations/auth.d.ts.map +1 -1
  63. package/dist/auth/operations/auth.js.map +1 -1
  64. package/dist/auth/operations/forgotPassword.d.ts +2 -2
  65. package/dist/auth/operations/forgotPassword.d.ts.map +1 -1
  66. package/dist/auth/operations/forgotPassword.js +6 -5
  67. package/dist/auth/operations/forgotPassword.js.map +1 -1
  68. package/dist/auth/operations/init.d.ts +2 -2
  69. package/dist/auth/operations/init.d.ts.map +1 -1
  70. package/dist/auth/operations/init.js.map +1 -1
  71. package/dist/auth/operations/local/auth.js.map +1 -1
  72. package/dist/auth/operations/local/forgotPassword.d.ts +2 -2
  73. package/dist/auth/operations/local/forgotPassword.d.ts.map +1 -1
  74. package/dist/auth/operations/local/forgotPassword.js.map +1 -1
  75. package/dist/auth/operations/local/login.d.ts +2 -2
  76. package/dist/auth/operations/local/login.d.ts.map +1 -1
  77. package/dist/auth/operations/local/login.js.map +1 -1
  78. package/dist/auth/operations/local/resetPassword.d.ts +2 -2
  79. package/dist/auth/operations/local/resetPassword.d.ts.map +1 -1
  80. package/dist/auth/operations/local/resetPassword.js.map +1 -1
  81. package/dist/auth/operations/local/unlock.d.ts +2 -2
  82. package/dist/auth/operations/local/unlock.d.ts.map +1 -1
  83. package/dist/auth/operations/local/unlock.js.map +1 -1
  84. package/dist/auth/operations/local/verifyEmail.d.ts +2 -2
  85. package/dist/auth/operations/local/verifyEmail.d.ts.map +1 -1
  86. package/dist/auth/operations/local/verifyEmail.js.map +1 -1
  87. package/dist/auth/operations/login.d.ts +2 -2
  88. package/dist/auth/operations/login.d.ts.map +1 -1
  89. package/dist/auth/operations/login.js +17 -1
  90. package/dist/auth/operations/login.js.map +1 -1
  91. package/dist/auth/operations/logout.d.ts +2 -2
  92. package/dist/auth/operations/logout.d.ts.map +1 -1
  93. package/dist/auth/operations/logout.js.map +1 -1
  94. package/dist/auth/operations/me.d.ts +2 -2
  95. package/dist/auth/operations/me.d.ts.map +1 -1
  96. package/dist/auth/operations/me.js.map +1 -1
  97. package/dist/auth/operations/refresh.d.ts +2 -2
  98. package/dist/auth/operations/refresh.d.ts.map +1 -1
  99. package/dist/auth/operations/refresh.js.map +1 -1
  100. package/dist/auth/operations/registerFirstUser.d.ts +2 -2
  101. package/dist/auth/operations/registerFirstUser.d.ts.map +1 -1
  102. package/dist/auth/operations/registerFirstUser.js.map +1 -1
  103. package/dist/auth/operations/resetPassword.d.ts +2 -2
  104. package/dist/auth/operations/resetPassword.d.ts.map +1 -1
  105. package/dist/auth/operations/resetPassword.js.map +1 -1
  106. package/dist/auth/operations/unlock.d.ts +2 -2
  107. package/dist/auth/operations/unlock.d.ts.map +1 -1
  108. package/dist/auth/operations/unlock.js.map +1 -1
  109. package/dist/auth/operations/verifyEmail.d.ts +2 -2
  110. package/dist/auth/operations/verifyEmail.d.ts.map +1 -1
  111. package/dist/auth/operations/verifyEmail.js.map +1 -1
  112. package/dist/auth/sendVerificationEmail.d.ts +7 -8
  113. package/dist/auth/sendVerificationEmail.d.ts.map +1 -1
  114. package/dist/auth/sendVerificationEmail.js +7 -7
  115. package/dist/auth/sendVerificationEmail.js.map +1 -1
  116. package/dist/auth/strategies/local/incrementLoginAttempts.d.ts +2 -2
  117. package/dist/auth/strategies/local/incrementLoginAttempts.d.ts.map +1 -1
  118. package/dist/auth/strategies/local/incrementLoginAttempts.js.map +1 -1
  119. package/dist/auth/strategies/local/register.d.ts +2 -2
  120. package/dist/auth/strategies/local/register.d.ts.map +1 -1
  121. package/dist/auth/strategies/local/register.js.map +1 -1
  122. package/dist/auth/strategies/local/resetLoginAttempts.d.ts +2 -2
  123. package/dist/auth/strategies/local/resetLoginAttempts.d.ts.map +1 -1
  124. package/dist/auth/strategies/local/resetLoginAttempts.js.map +1 -1
  125. package/dist/auth/types.d.ts +5 -5
  126. package/dist/auth/types.d.ts.map +1 -1
  127. package/dist/auth/types.js.map +1 -1
  128. package/dist/bin/loader/index.d.ts.map +1 -1
  129. package/dist/bin/loader/index.js +6 -1
  130. package/dist/bin/loader/index.js.map +1 -1
  131. package/dist/bin/loader/resolveOriginalPath.d.ts +10 -0
  132. package/dist/bin/loader/resolveOriginalPath.d.ts.map +1 -0
  133. package/dist/bin/loader/resolveOriginalPath.js +32 -0
  134. package/dist/bin/loader/resolveOriginalPath.js.map +1 -0
  135. package/dist/collections/config/client.d.ts +17 -13
  136. package/dist/collections/config/client.d.ts.map +1 -1
  137. package/dist/collections/config/client.js +3 -1
  138. package/dist/collections/config/client.js.map +1 -1
  139. package/dist/collections/config/defaults.d.ts +6 -5
  140. package/dist/collections/config/defaults.d.ts.map +1 -1
  141. package/dist/collections/config/defaults.js +1 -0
  142. package/dist/collections/config/defaults.js.map +1 -1
  143. package/dist/collections/config/sanitize.d.ts +2 -3
  144. package/dist/collections/config/sanitize.d.ts.map +1 -1
  145. package/dist/collections/config/sanitize.js +7 -4
  146. package/dist/collections/config/sanitize.js.map +1 -1
  147. package/dist/collections/config/schema.d.ts.map +1 -1
  148. package/dist/collections/config/schema.js +3 -0
  149. package/dist/collections/config/schema.js.map +1 -1
  150. package/dist/collections/config/types.d.ts +33 -23
  151. package/dist/collections/config/types.d.ts.map +1 -1
  152. package/dist/collections/config/types.js.map +1 -1
  153. package/dist/collections/dataloader.d.ts.map +1 -1
  154. package/dist/collections/dataloader.js +4 -6
  155. package/dist/collections/dataloader.js.map +1 -1
  156. package/dist/collections/operations/count.d.ts +13 -0
  157. package/dist/collections/operations/count.d.ts.map +1 -0
  158. package/dist/collections/operations/count.js +75 -0
  159. package/dist/collections/operations/count.js.map +1 -0
  160. package/dist/collections/operations/create.d.ts +2 -2
  161. package/dist/collections/operations/create.d.ts.map +1 -1
  162. package/dist/collections/operations/create.js +4 -8
  163. package/dist/collections/operations/create.js.map +1 -1
  164. package/dist/collections/operations/delete.d.ts +2 -2
  165. package/dist/collections/operations/delete.d.ts.map +1 -1
  166. package/dist/collections/operations/delete.js.map +1 -1
  167. package/dist/collections/operations/deleteByID.d.ts +2 -2
  168. package/dist/collections/operations/deleteByID.d.ts.map +1 -1
  169. package/dist/collections/operations/deleteByID.js.map +1 -1
  170. package/dist/collections/operations/docAccess.d.ts +2 -2
  171. package/dist/collections/operations/docAccess.d.ts.map +1 -1
  172. package/dist/collections/operations/docAccess.js.map +1 -1
  173. package/dist/collections/operations/duplicate.d.ts +2 -2
  174. package/dist/collections/operations/duplicate.d.ts.map +1 -1
  175. package/dist/collections/operations/duplicate.js.map +1 -1
  176. package/dist/collections/operations/find.d.ts +2 -2
  177. package/dist/collections/operations/find.d.ts.map +1 -1
  178. package/dist/collections/operations/find.js.map +1 -1
  179. package/dist/collections/operations/findByID.d.ts +2 -2
  180. package/dist/collections/operations/findByID.d.ts.map +1 -1
  181. package/dist/collections/operations/findByID.js.map +1 -1
  182. package/dist/collections/operations/findVersionByID.d.ts +2 -2
  183. package/dist/collections/operations/findVersionByID.d.ts.map +1 -1
  184. package/dist/collections/operations/findVersionByID.js.map +1 -1
  185. package/dist/collections/operations/findVersions.d.ts +2 -2
  186. package/dist/collections/operations/findVersions.d.ts.map +1 -1
  187. package/dist/collections/operations/findVersions.js.map +1 -1
  188. package/dist/collections/operations/local/count.d.ts +20 -0
  189. package/dist/collections/operations/local/count.d.ts.map +1 -0
  190. package/dist/collections/operations/local/count.js +19 -0
  191. package/dist/collections/operations/local/count.js.map +1 -0
  192. package/dist/collections/operations/local/create.d.ts +4 -4
  193. package/dist/collections/operations/local/create.d.ts.map +1 -1
  194. package/dist/collections/operations/local/create.js.map +1 -1
  195. package/dist/collections/operations/local/delete.d.ts +4 -4
  196. package/dist/collections/operations/local/delete.d.ts.map +1 -1
  197. package/dist/collections/operations/local/delete.js.map +1 -1
  198. package/dist/collections/operations/local/duplicate.d.ts +4 -4
  199. package/dist/collections/operations/local/duplicate.d.ts.map +1 -1
  200. package/dist/collections/operations/local/duplicate.js.map +1 -1
  201. package/dist/collections/operations/local/find.d.ts +4 -4
  202. package/dist/collections/operations/local/find.d.ts.map +1 -1
  203. package/dist/collections/operations/local/find.js.map +1 -1
  204. package/dist/collections/operations/local/findByID.d.ts +4 -4
  205. package/dist/collections/operations/local/findByID.d.ts.map +1 -1
  206. package/dist/collections/operations/local/findByID.js.map +1 -1
  207. package/dist/collections/operations/local/findVersionByID.d.ts +4 -4
  208. package/dist/collections/operations/local/findVersionByID.d.ts.map +1 -1
  209. package/dist/collections/operations/local/findVersionByID.js.map +1 -1
  210. package/dist/collections/operations/local/findVersions.d.ts +4 -4
  211. package/dist/collections/operations/local/findVersions.d.ts.map +1 -1
  212. package/dist/collections/operations/local/findVersions.js.map +1 -1
  213. package/dist/collections/operations/local/index.d.ts +2 -0
  214. package/dist/collections/operations/local/index.d.ts.map +1 -1
  215. package/dist/collections/operations/local/index.js +2 -0
  216. package/dist/collections/operations/local/index.js.map +1 -1
  217. package/dist/collections/operations/local/restoreVersion.d.ts +4 -4
  218. package/dist/collections/operations/local/restoreVersion.d.ts.map +1 -1
  219. package/dist/collections/operations/local/restoreVersion.js.map +1 -1
  220. package/dist/collections/operations/local/update.d.ts +4 -4
  221. package/dist/collections/operations/local/update.d.ts.map +1 -1
  222. package/dist/collections/operations/local/update.js.map +1 -1
  223. package/dist/collections/operations/restoreVersion.d.ts +2 -2
  224. package/dist/collections/operations/restoreVersion.d.ts.map +1 -1
  225. package/dist/collections/operations/restoreVersion.js.map +1 -1
  226. package/dist/collections/operations/update.d.ts +2 -2
  227. package/dist/collections/operations/update.d.ts.map +1 -1
  228. package/dist/collections/operations/update.js +3 -3
  229. package/dist/collections/operations/update.js.map +1 -1
  230. package/dist/collections/operations/updateByID.d.ts +2 -2
  231. package/dist/collections/operations/updateByID.d.ts.map +1 -1
  232. package/dist/collections/operations/updateByID.js +2 -2
  233. package/dist/collections/operations/updateByID.js.map +1 -1
  234. package/dist/collections/operations/utils.d.ts +8 -2
  235. package/dist/collections/operations/utils.d.ts.map +1 -1
  236. package/dist/collections/operations/utils.js.map +1 -1
  237. package/dist/config/build.d.ts.map +1 -1
  238. package/dist/config/build.js +3 -4
  239. package/dist/config/build.js.map +1 -1
  240. package/dist/config/client.d.ts +2 -1
  241. package/dist/config/client.d.ts.map +1 -1
  242. package/dist/config/client.js +2 -1
  243. package/dist/config/client.js.map +1 -1
  244. package/dist/config/defaults.d.ts.map +1 -1
  245. package/dist/config/defaults.js +1 -0
  246. package/dist/config/defaults.js.map +1 -1
  247. package/dist/config/find.d.ts.map +1 -1
  248. package/dist/config/find.js +20 -9
  249. package/dist/config/find.js.map +1 -1
  250. package/dist/config/sanitize.d.ts +1 -1
  251. package/dist/config/sanitize.d.ts.map +1 -1
  252. package/dist/config/sanitize.js +28 -7
  253. package/dist/config/sanitize.js.map +1 -1
  254. package/dist/config/schema.d.ts.map +1 -1
  255. package/dist/config/schema.js +2 -1
  256. package/dist/config/schema.js.map +1 -1
  257. package/dist/config/types.d.ts +40 -54
  258. package/dist/config/types.d.ts.map +1 -1
  259. package/dist/config/types.js +3 -12
  260. package/dist/config/types.js.map +1 -1
  261. package/dist/database/migrations/migrate.js.map +1 -1
  262. package/dist/database/migrations/migrateDown.js.map +1 -1
  263. package/dist/database/migrations/migrateRefresh.js.map +1 -1
  264. package/dist/database/migrations/migrateReset.js.map +1 -1
  265. package/dist/database/queryValidation/validateQueryPaths.d.ts +2 -2
  266. package/dist/database/queryValidation/validateQueryPaths.d.ts.map +1 -1
  267. package/dist/database/queryValidation/validateQueryPaths.js +1 -1
  268. package/dist/database/queryValidation/validateQueryPaths.js.map +1 -1
  269. package/dist/database/queryValidation/validateSearchParams.d.ts +2 -2
  270. package/dist/database/queryValidation/validateSearchParams.d.ts.map +1 -1
  271. package/dist/database/queryValidation/validateSearchParams.js.map +1 -1
  272. package/dist/database/types.d.ts +29 -19
  273. package/dist/database/types.d.ts.map +1 -1
  274. package/dist/database/types.js.map +1 -1
  275. package/dist/email/consoleEmailAdapter.d.ts +3 -0
  276. package/dist/email/consoleEmailAdapter.d.ts.map +1 -0
  277. package/dist/email/consoleEmailAdapter.js +17 -0
  278. package/dist/email/consoleEmailAdapter.js.map +1 -0
  279. package/dist/email/defaults.d.ts +2 -2
  280. package/dist/email/defaults.d.ts.map +1 -1
  281. package/dist/email/defaults.js +3 -3
  282. package/dist/email/defaults.js.map +1 -1
  283. package/dist/email/getStringifiedToAddress.d.ts +3 -0
  284. package/dist/email/getStringifiedToAddress.d.ts.map +1 -0
  285. package/dist/email/getStringifiedToAddress.js +20 -0
  286. package/dist/email/getStringifiedToAddress.js.map +1 -0
  287. package/dist/email/sendEmail.d.ts +3 -2
  288. package/dist/email/sendEmail.d.ts.map +1 -1
  289. package/dist/email/sendEmail.js +8 -4
  290. package/dist/email/sendEmail.js.map +1 -1
  291. package/dist/email/types.d.ts +26 -18
  292. package/dist/email/types.d.ts.map +1 -1
  293. package/dist/email/types.js +5 -1
  294. package/dist/email/types.js.map +1 -1
  295. package/dist/errors/APIError.d.ts +2 -2
  296. package/dist/errors/APIError.d.ts.map +1 -1
  297. package/dist/errors/APIError.js +1 -2
  298. package/dist/errors/APIError.js.map +1 -1
  299. package/dist/errors/AuthenticationError.d.ts +2 -3
  300. package/dist/errors/AuthenticationError.d.ts.map +1 -1
  301. package/dist/errors/AuthenticationError.js +2 -3
  302. package/dist/errors/AuthenticationError.js.map +1 -1
  303. package/dist/errors/DuplicateCollection.d.ts +2 -3
  304. package/dist/errors/DuplicateCollection.d.ts.map +1 -1
  305. package/dist/errors/DuplicateCollection.js +2 -3
  306. package/dist/errors/DuplicateCollection.js.map +1 -1
  307. package/dist/errors/DuplicateFieldName.d.ts +2 -3
  308. package/dist/errors/DuplicateFieldName.d.ts.map +1 -1
  309. package/dist/errors/DuplicateFieldName.js +2 -3
  310. package/dist/errors/DuplicateFieldName.js.map +1 -1
  311. package/dist/errors/DuplicateGlobal.d.ts +2 -3
  312. package/dist/errors/DuplicateGlobal.d.ts.map +1 -1
  313. package/dist/errors/DuplicateGlobal.js +2 -3
  314. package/dist/errors/DuplicateGlobal.js.map +1 -1
  315. package/dist/errors/ErrorDeletingFile.d.ts +2 -3
  316. package/dist/errors/ErrorDeletingFile.d.ts.map +1 -1
  317. package/dist/errors/ErrorDeletingFile.js +2 -3
  318. package/dist/errors/ErrorDeletingFile.js.map +1 -1
  319. package/dist/errors/FileRetrievalError.d.ts +6 -0
  320. package/dist/errors/FileRetrievalError.d.ts.map +1 -0
  321. package/dist/errors/FileRetrievalError.js +13 -0
  322. package/dist/errors/FileRetrievalError.js.map +1 -0
  323. package/dist/errors/FileUploadError.d.ts +2 -3
  324. package/dist/errors/FileUploadError.d.ts.map +1 -1
  325. package/dist/errors/FileUploadError.js +2 -3
  326. package/dist/errors/FileUploadError.js.map +1 -1
  327. package/dist/errors/Forbidden.d.ts +2 -3
  328. package/dist/errors/Forbidden.d.ts.map +1 -1
  329. package/dist/errors/Forbidden.js +2 -3
  330. package/dist/errors/Forbidden.js.map +1 -1
  331. package/dist/errors/InvalidConfiguration.d.ts +2 -3
  332. package/dist/errors/InvalidConfiguration.d.ts.map +1 -1
  333. package/dist/errors/InvalidConfiguration.js +2 -3
  334. package/dist/errors/InvalidConfiguration.js.map +1 -1
  335. package/dist/errors/InvalidFieldName.d.ts +2 -3
  336. package/dist/errors/InvalidFieldName.d.ts.map +1 -1
  337. package/dist/errors/InvalidFieldName.js +2 -3
  338. package/dist/errors/InvalidFieldName.js.map +1 -1
  339. package/dist/errors/InvalidFieldRelationship.d.ts +2 -3
  340. package/dist/errors/InvalidFieldRelationship.d.ts.map +1 -1
  341. package/dist/errors/InvalidFieldRelationship.js +2 -3
  342. package/dist/errors/InvalidFieldRelationship.js.map +1 -1
  343. package/dist/errors/InvalidSchema.d.ts +2 -3
  344. package/dist/errors/InvalidSchema.d.ts.map +1 -1
  345. package/dist/errors/InvalidSchema.js +2 -3
  346. package/dist/errors/InvalidSchema.js.map +1 -1
  347. package/dist/errors/LockedAuth.d.ts +2 -3
  348. package/dist/errors/LockedAuth.d.ts.map +1 -1
  349. package/dist/errors/LockedAuth.js +2 -3
  350. package/dist/errors/LockedAuth.js.map +1 -1
  351. package/dist/errors/MissingCollectionLabel.d.ts +2 -3
  352. package/dist/errors/MissingCollectionLabel.d.ts.map +1 -1
  353. package/dist/errors/MissingCollectionLabel.js +2 -3
  354. package/dist/errors/MissingCollectionLabel.js.map +1 -1
  355. package/dist/errors/MissingEditorProp.d.ts +2 -3
  356. package/dist/errors/MissingEditorProp.d.ts.map +1 -1
  357. package/dist/errors/MissingEditorProp.js +2 -3
  358. package/dist/errors/MissingEditorProp.js.map +1 -1
  359. package/dist/errors/MissingFieldInputOptions.d.ts +2 -3
  360. package/dist/errors/MissingFieldInputOptions.d.ts.map +1 -1
  361. package/dist/errors/MissingFieldInputOptions.js +2 -3
  362. package/dist/errors/MissingFieldInputOptions.js.map +1 -1
  363. package/dist/errors/MissingFieldType.d.ts +2 -3
  364. package/dist/errors/MissingFieldType.d.ts.map +1 -1
  365. package/dist/errors/MissingFieldType.js +2 -3
  366. package/dist/errors/MissingFieldType.js.map +1 -1
  367. package/dist/errors/MissingFile.d.ts +2 -3
  368. package/dist/errors/MissingFile.d.ts.map +1 -1
  369. package/dist/errors/MissingFile.js +2 -3
  370. package/dist/errors/MissingFile.js.map +1 -1
  371. package/dist/errors/NotFound.d.ts +2 -3
  372. package/dist/errors/NotFound.d.ts.map +1 -1
  373. package/dist/errors/NotFound.js +2 -3
  374. package/dist/errors/NotFound.js.map +1 -1
  375. package/dist/errors/QueryError.d.ts +2 -3
  376. package/dist/errors/QueryError.d.ts.map +1 -1
  377. package/dist/errors/QueryError.js +2 -3
  378. package/dist/errors/QueryError.js.map +1 -1
  379. package/dist/errors/TimestampsRequired.d.ts +2 -3
  380. package/dist/errors/TimestampsRequired.d.ts.map +1 -1
  381. package/dist/errors/TimestampsRequired.js +2 -3
  382. package/dist/errors/TimestampsRequired.js.map +1 -1
  383. package/dist/errors/UnathorizedError.d.ts +2 -3
  384. package/dist/errors/UnathorizedError.d.ts.map +1 -1
  385. package/dist/errors/UnathorizedError.js +2 -3
  386. package/dist/errors/UnathorizedError.js.map +1 -1
  387. package/dist/errors/ValidationError.d.ts +2 -3
  388. package/dist/errors/ValidationError.d.ts.map +1 -1
  389. package/dist/errors/ValidationError.js +2 -3
  390. package/dist/errors/ValidationError.js.map +1 -1
  391. package/dist/errors/index.d.ts +20 -19
  392. package/dist/errors/index.d.ts.map +1 -1
  393. package/dist/errors/index.js +20 -19
  394. package/dist/errors/index.js.map +1 -1
  395. package/dist/exports/auth.d.ts +1 -0
  396. package/dist/exports/auth.d.ts.map +1 -1
  397. package/dist/exports/auth.js +1 -0
  398. package/dist/exports/auth.js.map +1 -1
  399. package/dist/exports/database.d.ts +1 -1
  400. package/dist/exports/database.d.ts.map +1 -1
  401. package/dist/exports/database.js.map +1 -1
  402. package/dist/exports/i18n.d.ts +2 -0
  403. package/dist/exports/i18n.d.ts.map +1 -0
  404. package/dist/exports/i18n.js +3 -0
  405. package/dist/exports/i18n.js.map +1 -0
  406. package/dist/exports/node.d.ts +3 -0
  407. package/dist/exports/node.d.ts.map +1 -1
  408. package/dist/exports/node.js +3 -1
  409. package/dist/exports/node.js.map +1 -1
  410. package/dist/exports/operations.d.ts +1 -0
  411. package/dist/exports/operations.d.ts.map +1 -1
  412. package/dist/exports/operations.js +1 -0
  413. package/dist/exports/operations.js.map +1 -1
  414. package/dist/exports/types.d.ts +1 -0
  415. package/dist/exports/types.d.ts.map +1 -1
  416. package/dist/exports/types.js.map +1 -1
  417. package/dist/exports/utilities.d.ts +7 -2
  418. package/dist/exports/utilities.d.ts.map +1 -1
  419. package/dist/exports/utilities.js +7 -3
  420. package/dist/exports/utilities.js.map +1 -1
  421. package/dist/fields/config/client.d.ts +129 -104
  422. package/dist/fields/config/client.d.ts.map +1 -1
  423. package/dist/fields/config/client.js +2 -1
  424. package/dist/fields/config/client.js.map +1 -1
  425. package/dist/fields/config/sanitize.d.ts +7 -2
  426. package/dist/fields/config/sanitize.d.ts.map +1 -1
  427. package/dist/fields/config/sanitize.js +61 -33
  428. package/dist/fields/config/sanitize.js.map +1 -1
  429. package/dist/fields/config/sanitize.spec.js +76 -82
  430. package/dist/fields/config/sanitize.spec.js.map +1 -1
  431. package/dist/fields/config/schema.d.ts.map +1 -1
  432. package/dist/fields/config/schema.js +7 -1
  433. package/dist/fields/config/schema.js.map +1 -1
  434. package/dist/fields/config/types.d.ts +69 -57
  435. package/dist/fields/config/types.d.ts.map +1 -1
  436. package/dist/fields/config/types.js.map +1 -1
  437. package/dist/fields/getDefaultValue.d.ts +2 -2
  438. package/dist/fields/getDefaultValue.d.ts.map +1 -1
  439. package/dist/fields/getDefaultValue.js.map +1 -1
  440. package/dist/fields/hooks/afterChange/index.d.ts +2 -2
  441. package/dist/fields/hooks/afterChange/index.d.ts.map +1 -1
  442. package/dist/fields/hooks/afterChange/index.js.map +1 -1
  443. package/dist/fields/hooks/afterChange/promise.d.ts +2 -2
  444. package/dist/fields/hooks/afterChange/promise.d.ts.map +1 -1
  445. package/dist/fields/hooks/afterChange/promise.js.map +1 -1
  446. package/dist/fields/hooks/afterChange/traverseFields.d.ts +2 -2
  447. package/dist/fields/hooks/afterChange/traverseFields.d.ts.map +1 -1
  448. package/dist/fields/hooks/afterChange/traverseFields.js.map +1 -1
  449. package/dist/fields/hooks/afterRead/index.d.ts +2 -2
  450. package/dist/fields/hooks/afterRead/index.d.ts.map +1 -1
  451. package/dist/fields/hooks/afterRead/index.js.map +1 -1
  452. package/dist/fields/hooks/afterRead/promise.d.ts +5 -2
  453. package/dist/fields/hooks/afterRead/promise.d.ts.map +1 -1
  454. package/dist/fields/hooks/afterRead/promise.js +7 -16
  455. package/dist/fields/hooks/afterRead/promise.js.map +1 -1
  456. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.d.ts +2 -2
  457. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.d.ts.map +1 -1
  458. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.js.map +1 -1
  459. package/dist/fields/hooks/afterRead/traverseFields.d.ts +5 -2
  460. package/dist/fields/hooks/afterRead/traverseFields.d.ts.map +1 -1
  461. package/dist/fields/hooks/afterRead/traverseFields.js.map +1 -1
  462. package/dist/fields/hooks/beforeChange/index.d.ts +2 -2
  463. package/dist/fields/hooks/beforeChange/index.d.ts.map +1 -1
  464. package/dist/fields/hooks/beforeChange/index.js.map +1 -1
  465. package/dist/fields/hooks/beforeChange/promise.d.ts +2 -2
  466. package/dist/fields/hooks/beforeChange/promise.d.ts.map +1 -1
  467. package/dist/fields/hooks/beforeChange/promise.js +3 -1
  468. package/dist/fields/hooks/beforeChange/promise.js.map +1 -1
  469. package/dist/fields/hooks/beforeChange/traverseFields.d.ts +14 -2
  470. package/dist/fields/hooks/beforeChange/traverseFields.d.ts.map +1 -1
  471. package/dist/fields/hooks/beforeChange/traverseFields.js.map +1 -1
  472. package/dist/fields/hooks/beforeValidate/index.d.ts +2 -2
  473. package/dist/fields/hooks/beforeValidate/index.d.ts.map +1 -1
  474. package/dist/fields/hooks/beforeValidate/index.js.map +1 -1
  475. package/dist/fields/hooks/beforeValidate/promise.d.ts +8 -2
  476. package/dist/fields/hooks/beforeValidate/promise.d.ts.map +1 -1
  477. package/dist/fields/hooks/beforeValidate/promise.js +2 -0
  478. package/dist/fields/hooks/beforeValidate/promise.js.map +1 -1
  479. package/dist/fields/hooks/beforeValidate/traverseFields.d.ts +8 -2
  480. package/dist/fields/hooks/beforeValidate/traverseFields.d.ts.map +1 -1
  481. package/dist/fields/hooks/beforeValidate/traverseFields.js.map +1 -1
  482. package/dist/fields/validations.d.ts +6 -4
  483. package/dist/fields/validations.d.ts.map +1 -1
  484. package/dist/fields/validations.js +52 -10
  485. package/dist/fields/validations.js.map +1 -1
  486. package/dist/fields/validations.spec.js +6 -1
  487. package/dist/fields/validations.spec.js.map +1 -1
  488. package/dist/globals/config/client.d.ts +1 -1
  489. package/dist/globals/config/client.d.ts.map +1 -1
  490. package/dist/globals/config/client.js +2 -1
  491. package/dist/globals/config/client.js.map +1 -1
  492. package/dist/globals/config/sanitize.d.ts +2 -3
  493. package/dist/globals/config/sanitize.d.ts.map +1 -1
  494. package/dist/globals/config/sanitize.js +36 -35
  495. package/dist/globals/config/sanitize.js.map +1 -1
  496. package/dist/globals/config/schema.d.ts.map +1 -1
  497. package/dist/globals/config/schema.js +1 -0
  498. package/dist/globals/config/schema.js.map +1 -1
  499. package/dist/globals/config/types.d.ts +10 -9
  500. package/dist/globals/config/types.d.ts.map +1 -1
  501. package/dist/globals/config/types.js.map +1 -1
  502. package/dist/globals/operations/docAccess.d.ts +2 -2
  503. package/dist/globals/operations/docAccess.d.ts.map +1 -1
  504. package/dist/globals/operations/docAccess.js.map +1 -1
  505. package/dist/globals/operations/findOne.d.ts +2 -3
  506. package/dist/globals/operations/findOne.d.ts.map +1 -1
  507. package/dist/globals/operations/findOne.js.map +1 -1
  508. package/dist/globals/operations/findVersionByID.d.ts +2 -2
  509. package/dist/globals/operations/findVersionByID.d.ts.map +1 -1
  510. package/dist/globals/operations/findVersionByID.js.map +1 -1
  511. package/dist/globals/operations/findVersions.d.ts +2 -2
  512. package/dist/globals/operations/findVersions.d.ts.map +1 -1
  513. package/dist/globals/operations/findVersions.js.map +1 -1
  514. package/dist/globals/operations/local/findOne.d.ts +4 -4
  515. package/dist/globals/operations/local/findOne.d.ts.map +1 -1
  516. package/dist/globals/operations/local/findOne.js.map +1 -1
  517. package/dist/globals/operations/local/findVersionByID.d.ts +4 -4
  518. package/dist/globals/operations/local/findVersionByID.d.ts.map +1 -1
  519. package/dist/globals/operations/local/findVersionByID.js.map +1 -1
  520. package/dist/globals/operations/local/findVersions.d.ts +4 -4
  521. package/dist/globals/operations/local/findVersions.d.ts.map +1 -1
  522. package/dist/globals/operations/local/findVersions.js.map +1 -1
  523. package/dist/globals/operations/local/restoreVersion.d.ts +4 -4
  524. package/dist/globals/operations/local/restoreVersion.d.ts.map +1 -1
  525. package/dist/globals/operations/local/restoreVersion.js.map +1 -1
  526. package/dist/globals/operations/local/update.d.ts +4 -4
  527. package/dist/globals/operations/local/update.d.ts.map +1 -1
  528. package/dist/globals/operations/local/update.js.map +1 -1
  529. package/dist/globals/operations/restoreVersion.d.ts +2 -2
  530. package/dist/globals/operations/restoreVersion.d.ts.map +1 -1
  531. package/dist/globals/operations/restoreVersion.js.map +1 -1
  532. package/dist/globals/operations/update.d.ts +2 -2
  533. package/dist/globals/operations/update.d.ts.map +1 -1
  534. package/dist/globals/operations/update.js.map +1 -1
  535. package/dist/index.d.ts +17 -6
  536. package/dist/index.d.ts.map +1 -1
  537. package/dist/index.js +32 -14
  538. package/dist/index.js.map +1 -1
  539. package/dist/preferences/deleteUserPreferences.d.ts +2 -2
  540. package/dist/preferences/deleteUserPreferences.d.ts.map +1 -1
  541. package/dist/preferences/deleteUserPreferences.js.map +1 -1
  542. package/dist/preferences/operations/delete.js +2 -2
  543. package/dist/preferences/operations/delete.js.map +1 -1
  544. package/dist/preferences/operations/update.d.ts +1 -1
  545. package/dist/preferences/operations/update.js +1 -1
  546. package/dist/preferences/operations/update.js.map +1 -1
  547. package/dist/preferences/requestHandlers/delete.d.ts.map +1 -1
  548. package/dist/preferences/requestHandlers/delete.js +18 -5
  549. package/dist/preferences/requestHandlers/delete.js.map +1 -1
  550. package/dist/preferences/requestHandlers/findOne.d.ts.map +1 -1
  551. package/dist/preferences/requestHandlers/findOne.js +18 -5
  552. package/dist/preferences/requestHandlers/findOne.js.map +1 -1
  553. package/dist/preferences/requestHandlers/update.d.ts.map +1 -1
  554. package/dist/preferences/requestHandlers/update.js +19 -7
  555. package/dist/preferences/requestHandlers/update.js.map +1 -1
  556. package/dist/preferences/types.d.ts +3 -4
  557. package/dist/preferences/types.d.ts.map +1 -1
  558. package/dist/preferences/types.js.map +1 -1
  559. package/dist/types/index.d.ts +21 -17
  560. package/dist/types/index.d.ts.map +1 -1
  561. package/dist/types/index.js.map +1 -1
  562. package/dist/uploads/deleteAssociatedFiles.d.ts +2 -2
  563. package/dist/uploads/deleteAssociatedFiles.d.ts.map +1 -1
  564. package/dist/uploads/deleteAssociatedFiles.js.map +1 -1
  565. package/dist/uploads/docWithFilenameExists.d.ts +2 -2
  566. package/dist/uploads/docWithFilenameExists.d.ts.map +1 -1
  567. package/dist/uploads/docWithFilenameExists.js.map +1 -1
  568. package/dist/uploads/generateFileData.d.ts +2 -2
  569. package/dist/uploads/generateFileData.d.ts.map +1 -1
  570. package/dist/uploads/generateFileData.js +5 -4
  571. package/dist/uploads/generateFileData.js.map +1 -1
  572. package/dist/uploads/getExternalFile.d.ts +5 -4
  573. package/dist/uploads/getExternalFile.d.ts.map +1 -1
  574. package/dist/uploads/getExternalFile.js +10 -6
  575. package/dist/uploads/getExternalFile.js.map +1 -1
  576. package/dist/uploads/getFileByPath.d.ts +2 -2
  577. package/dist/uploads/getFileByPath.d.ts.map +1 -1
  578. package/dist/uploads/getFileByPath.js.map +1 -1
  579. package/dist/uploads/getImageSize.d.ts +2 -2
  580. package/dist/uploads/getImageSize.d.ts.map +1 -1
  581. package/dist/uploads/getImageSize.js +19 -5
  582. package/dist/uploads/getImageSize.js.map +1 -1
  583. package/dist/uploads/getSafeFilename.d.ts +2 -2
  584. package/dist/uploads/getSafeFilename.d.ts.map +1 -1
  585. package/dist/uploads/getSafeFilename.js.map +1 -1
  586. package/dist/uploads/imageResizer.d.ts +3 -3
  587. package/dist/uploads/imageResizer.d.ts.map +1 -1
  588. package/dist/uploads/imageResizer.js.map +1 -1
  589. package/dist/uploads/tempFile.d.ts +7 -0
  590. package/dist/uploads/tempFile.d.ts.map +1 -0
  591. package/dist/uploads/tempFile.js +39 -0
  592. package/dist/uploads/tempFile.js.map +1 -0
  593. package/dist/uploads/types.d.ts +12 -2
  594. package/dist/uploads/types.d.ts.map +1 -1
  595. package/dist/uploads/types.js.map +1 -1
  596. package/dist/uploads/unlinkTempFiles.d.ts +2 -2
  597. package/dist/uploads/unlinkTempFiles.d.ts.map +1 -1
  598. package/dist/uploads/unlinkTempFiles.js.map +1 -1
  599. package/dist/uploads/uploadFiles.d.ts +2 -2
  600. package/dist/uploads/uploadFiles.d.ts.map +1 -1
  601. package/dist/uploads/uploadFiles.js.map +1 -1
  602. package/dist/utilities/checkDuplicateCollections.js +1 -1
  603. package/dist/utilities/checkDuplicateCollections.js.map +1 -1
  604. package/dist/utilities/commitTransaction.d.ts +2 -2
  605. package/dist/utilities/commitTransaction.d.ts.map +1 -1
  606. package/dist/utilities/commitTransaction.js.map +1 -1
  607. package/dist/utilities/configToJSONSchema.d.ts.map +1 -1
  608. package/dist/utilities/configToJSONSchema.js +56 -1
  609. package/dist/utilities/configToJSONSchema.js.map +1 -1
  610. package/dist/utilities/configToJSONSchema.spec.js +2 -2
  611. package/dist/utilities/configToJSONSchema.spec.js.map +1 -1
  612. package/dist/utilities/createLocalReq.d.ts +3 -3
  613. package/dist/utilities/createLocalReq.d.ts.map +1 -1
  614. package/dist/utilities/createLocalReq.js +4 -2
  615. package/dist/utilities/createLocalReq.js.map +1 -1
  616. package/dist/utilities/getEntityPolicies.d.ts +2 -2
  617. package/dist/utilities/getEntityPolicies.d.ts.map +1 -1
  618. package/dist/utilities/getEntityPolicies.js.map +1 -1
  619. package/dist/utilities/importWithoutClientFiles.d.ts.map +1 -1
  620. package/dist/utilities/importWithoutClientFiles.js +7 -4
  621. package/dist/utilities/importWithoutClientFiles.js.map +1 -1
  622. package/dist/utilities/initTransaction.d.ts +2 -2
  623. package/dist/utilities/initTransaction.d.ts.map +1 -1
  624. package/dist/utilities/initTransaction.js.map +1 -1
  625. package/dist/utilities/isEntityHidden.d.ts +2 -2
  626. package/dist/utilities/isEntityHidden.d.ts.map +1 -1
  627. package/dist/utilities/isEntityHidden.js.map +1 -1
  628. package/dist/utilities/isReactComponent.d.ts +2 -0
  629. package/dist/utilities/isReactComponent.d.ts.map +1 -1
  630. package/dist/utilities/isReactComponent.js +8 -2
  631. package/dist/utilities/isReactComponent.js.map +1 -1
  632. package/dist/utilities/killTransaction.d.ts +2 -2
  633. package/dist/utilities/killTransaction.d.ts.map +1 -1
  634. package/dist/utilities/killTransaction.js.map +1 -1
  635. package/dist/utilities/parseCookies.js +1 -1
  636. package/dist/utilities/parseCookies.js.map +1 -1
  637. package/dist/utilities/telemetry/events/adminInit.d.ts +2 -2
  638. package/dist/utilities/telemetry/events/adminInit.d.ts.map +1 -1
  639. package/dist/utilities/telemetry/events/adminInit.js.map +1 -1
  640. package/dist/utilities/telemetry/index.d.ts +9 -0
  641. package/dist/utilities/telemetry/index.d.ts.map +1 -1
  642. package/dist/utilities/telemetry/index.js +62 -14
  643. package/dist/utilities/telemetry/index.js.map +1 -1
  644. package/dist/versions/deleteCollectionVersions.d.ts +2 -2
  645. package/dist/versions/deleteCollectionVersions.d.ts.map +1 -1
  646. package/dist/versions/deleteCollectionVersions.js.map +1 -1
  647. package/dist/versions/drafts/replaceWithDraftIfAvailable.d.ts +2 -2
  648. package/dist/versions/drafts/replaceWithDraftIfAvailable.d.ts.map +1 -1
  649. package/dist/versions/drafts/replaceWithDraftIfAvailable.js.map +1 -1
  650. package/dist/versions/enforceMaxVersions.d.ts +2 -2
  651. package/dist/versions/enforceMaxVersions.d.ts.map +1 -1
  652. package/dist/versions/enforceMaxVersions.js.map +1 -1
  653. package/dist/versions/getLatestCollectionVersion.d.ts +2 -2
  654. package/dist/versions/getLatestCollectionVersion.d.ts.map +1 -1
  655. package/dist/versions/getLatestCollectionVersion.js.map +1 -1
  656. package/dist/versions/getLatestGlobalVersion.d.ts +2 -2
  657. package/dist/versions/getLatestGlobalVersion.d.ts.map +1 -1
  658. package/dist/versions/getLatestGlobalVersion.js.map +1 -1
  659. package/dist/versions/saveVersion.d.ts +2 -2
  660. package/dist/versions/saveVersion.d.ts.map +1 -1
  661. package/dist/versions/saveVersion.js +1 -1
  662. package/dist/versions/saveVersion.js.map +1 -1
  663. package/package.json +71 -65
  664. package/auth.d.ts +0 -6
  665. package/auth.js +0 -6
  666. package/config.d.ts +0 -14
  667. package/config.js +0 -14
  668. package/database.d.ts +0 -23
  669. package/database.js +0 -22
  670. package/dist/email/build.d.ts +0 -5
  671. package/dist/email/build.d.ts.map +0 -1
  672. package/dist/email/build.js +0 -63
  673. package/dist/email/build.js.map +0 -1
  674. package/dist/email/mockHandler.d.ts +0 -5
  675. package/dist/email/mockHandler.d.ts.map +0 -1
  676. package/dist/email/mockHandler.js +0 -24
  677. package/dist/email/mockHandler.js.map +0 -1
  678. package/dist/utilities/getIDType.d.ts +0 -4
  679. package/dist/utilities/getIDType.d.ts.map +0 -1
  680. package/dist/utilities/getIDType.js +0 -8
  681. package/dist/utilities/getIDType.js.map +0 -1
  682. package/errors.d.ts +0 -2
  683. package/errors.js +0 -3
  684. package/node.d.ts +0 -3
  685. package/node.js +0 -4
  686. package/operations.d.ts +0 -30
  687. package/operations.js +0 -31
  688. package/src/index.ts +0 -486
  689. package/types.d.ts +0 -17
  690. package/types.js +0 -5
  691. package/uploads.d.ts +0 -2
  692. package/uploads.js +0 -3
  693. package/utilities.d.ts +0 -32
  694. package/utilities.js +0 -33
  695. package/versions.d.ts +0 -9
  696. package/versions.js +0 -9
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/fields/config/client.ts"],"sourcesContent":["import type { TFunction } from '@payloadcms/translations'\n\nimport type { Field, FieldBase } from '../../fields/config/types.js'\n\nexport type ClientFieldConfig = Omit<Field, 'access' | 'defaultValue' | 'hooks' | 'validate'>\n\nexport type ServerOnlyFieldProperties =\n | 'editor' // This is a `richText` only property\n | 'filterOptions' // This is a `relationship` and `upload` only property\n | 'label'\n | keyof Pick<FieldBase, 'access' | 'defaultValue' | 'hooks' | 'validate'>\n\nexport type ServerOnlyFieldAdminProperties = keyof Pick<\n FieldBase['admin'],\n 'components' | 'condition' | 'description'\n>\n\nexport const createClientFieldConfig = ({\n field: incomingField,\n t,\n}: {\n field: Field\n t: TFunction\n}) => {\n const field = { ...incomingField }\n\n const serverOnlyFieldProperties: Partial<ServerOnlyFieldProperties>[] = [\n 'hooks',\n 'access',\n 'validate',\n 'defaultValue',\n 'label',\n 'filterOptions', // This is a `relationship` and `upload` only property\n 'editor', // This is a `richText` only property\n // `fields`\n // `blocks`\n // `tabs`\n // `admin`\n // are all handled separately\n ]\n\n serverOnlyFieldProperties.forEach((key) => {\n if (key in field) {\n delete field[key]\n }\n })\n\n if ('options' in field && Array.isArray(field.options)) {\n field.options = field.options.map((option) => {\n if (typeof option === 'object' && typeof option.label === 'function') {\n return {\n label: option.label({ t }),\n value: option.value,\n }\n }\n\n return option\n })\n }\n\n if ('fields' in field) {\n field.fields = createClientFieldConfigs({ fields: field.fields, t })\n }\n\n if ('blocks' in field) {\n field.blocks = field.blocks.map((block) => {\n const sanitized = { ...block }\n sanitized.fields = createClientFieldConfigs({ fields: sanitized.fields, t })\n return sanitized\n })\n }\n\n if ('tabs' in field) {\n // @ts-expect-error\n field.tabs = field.tabs.map((tab) => createClientFieldConfig({ field: tab, t }))\n }\n\n if ('admin' in field) {\n field.admin = { ...field.admin }\n\n const serverOnlyFieldAdminProperties: Partial<ServerOnlyFieldAdminProperties>[] = [\n 'components',\n 'condition',\n 'description',\n ]\n\n serverOnlyFieldAdminProperties.forEach((key) => {\n if (key in field.admin) {\n delete field.admin[key]\n }\n })\n }\n\n return field\n}\n\nexport const createClientFieldConfigs = ({\n fields,\n t,\n}: {\n fields: Field[]\n t: TFunction\n}): Field[] => fields.map((field) => createClientFieldConfig({ field, t }))\n"],"names":["createClientFieldConfig","field","incomingField","t","serverOnlyFieldProperties","forEach","key","Array","isArray","options","map","option","label","value","fields","createClientFieldConfigs","blocks","block","sanitized","tabs","tab","admin","serverOnlyFieldAdminProperties"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAiBA,OAAO,MAAMA,0BAA0B,CAAC,EACtCC,OAAOC,aAAa,EACpBC,CAAC,EAIF;IACC,MAAMF,QAAQ;QAAE,GAAGC,aAAa;IAAC;IAEjC,MAAME,4BAAkE;QACtE;QACA;QACA;QACA;QACA;QACA;QACA;KAMD;IAEDA,0BAA0BC,OAAO,CAAC,CAACC;QACjC,IAAIA,OAAOL,OAAO;YAChB,OAAOA,KAAK,CAACK,IAAI;QACnB;IACF;IAEA,IAAI,aAAaL,SAASM,MAAMC,OAAO,CAACP,MAAMQ,OAAO,GAAG;QACtDR,MAAMQ,OAAO,GAAGR,MAAMQ,OAAO,CAACC,GAAG,CAAC,CAACC;YACjC,IAAI,OAAOA,WAAW,YAAY,OAAOA,OAAOC,KAAK,KAAK,YAAY;gBACpE,OAAO;oBACLA,OAAOD,OAAOC,KAAK,CAAC;wBAAET;oBAAE;oBACxBU,OAAOF,OAAOE,KAAK;gBACrB;YACF;YAEA,OAAOF;QACT;IACF;IAEA,IAAI,YAAYV,OAAO;QACrBA,MAAMa,MAAM,GAAGC,yBAAyB;YAAED,QAAQb,MAAMa,MAAM;YAAEX;QAAE;IACpE;IAEA,IAAI,YAAYF,OAAO;QACrBA,MAAMe,MAAM,GAAGf,MAAMe,MAAM,CAACN,GAAG,CAAC,CAACO;YAC/B,MAAMC,YAAY;gBAAE,GAAGD,KAAK;YAAC;YAC7BC,UAAUJ,MAAM,GAAGC,yBAAyB;gBAAED,QAAQI,UAAUJ,MAAM;gBAAEX;YAAE;YAC1E,OAAOe;QACT;IACF;IAEA,IAAI,UAAUjB,OAAO;QACnB,mBAAmB;QACnBA,MAAMkB,IAAI,GAAGlB,MAAMkB,IAAI,CAACT,GAAG,CAAC,CAACU,MAAQpB,wBAAwB;gBAAEC,OAAOmB;gBAAKjB;YAAE;IAC/E;IAEA,IAAI,WAAWF,OAAO;QACpBA,MAAMoB,KAAK,GAAG;YAAE,GAAGpB,MAAMoB,KAAK;QAAC;QAE/B,MAAMC,iCAA4E;YAChF;YACA;YACA;SACD;QAEDA,+BAA+BjB,OAAO,CAAC,CAACC;YACtC,IAAIA,OAAOL,MAAMoB,KAAK,EAAE;gBACtB,OAAOpB,MAAMoB,KAAK,CAACf,IAAI;YACzB;QACF;IACF;IAEA,OAAOL;AACT,EAAC;AAED,OAAO,MAAMc,2BAA2B,CAAC,EACvCD,MAAM,EACNX,CAAC,EAIF,GAAcW,OAAOJ,GAAG,CAAC,CAACT,QAAUD,wBAAwB;YAAEC;YAAOE;QAAE,IAAG"}
1
+ {"version":3,"sources":["../../../src/fields/config/client.ts"],"sourcesContent":["import type { TFunction } from '@payloadcms/translations'\n\nimport type { Field, FieldBase } from '../../fields/config/types.js'\n\nexport type ClientFieldConfig = Omit<Field, 'access' | 'defaultValue' | 'hooks' | 'validate'>\n\nexport type ServerOnlyFieldProperties =\n | 'editor' // This is a `richText` only property\n | 'filterOptions' // This is a `relationship` and `upload` only property\n | 'label'\n | keyof Pick<FieldBase, 'access' | 'custom' | 'defaultValue' | 'hooks' | 'validate'>\n\nexport type ServerOnlyFieldAdminProperties = keyof Pick<\n FieldBase['admin'],\n 'components' | 'condition' | 'description'\n>\n\nexport const createClientFieldConfig = ({\n field: incomingField,\n t,\n}: {\n field: Field\n t: TFunction\n}) => {\n const field = { ...incomingField }\n\n const serverOnlyFieldProperties: Partial<ServerOnlyFieldProperties>[] = [\n 'hooks',\n 'access',\n 'validate',\n 'defaultValue',\n 'label',\n 'filterOptions', // This is a `relationship` and `upload` only property\n 'editor', // This is a `richText` only property\n 'custom',\n // `fields`\n // `blocks`\n // `tabs`\n // `admin`\n // are all handled separately\n ]\n\n serverOnlyFieldProperties.forEach((key) => {\n if (key in field) {\n delete field[key]\n }\n })\n\n if ('options' in field && Array.isArray(field.options)) {\n field.options = field.options.map((option) => {\n if (typeof option === 'object' && typeof option.label === 'function') {\n return {\n label: option.label({ t }),\n value: option.value,\n }\n }\n\n return option\n })\n }\n\n if ('fields' in field) {\n field.fields = createClientFieldConfigs({ fields: field.fields, t })\n }\n\n if ('blocks' in field) {\n field.blocks = field.blocks.map((block) => {\n const sanitized = { ...block }\n sanitized.fields = createClientFieldConfigs({ fields: sanitized.fields, t })\n return sanitized\n })\n }\n\n if ('tabs' in field) {\n // @ts-expect-error\n field.tabs = field.tabs.map((tab) => createClientFieldConfig({ field: tab, t }))\n }\n\n if ('admin' in field) {\n field.admin = { ...field.admin }\n\n const serverOnlyFieldAdminProperties: Partial<ServerOnlyFieldAdminProperties>[] = [\n 'components',\n 'condition',\n 'description',\n ]\n\n serverOnlyFieldAdminProperties.forEach((key) => {\n if (key in field.admin) {\n delete field.admin[key]\n }\n })\n }\n\n return field\n}\n\nexport const createClientFieldConfigs = ({\n fields,\n t,\n}: {\n fields: Field[]\n t: TFunction\n}): Field[] => fields.map((field) => createClientFieldConfig({ field, t }))\n"],"names":["createClientFieldConfig","field","incomingField","t","serverOnlyFieldProperties","forEach","key","Array","isArray","options","map","option","label","value","fields","createClientFieldConfigs","blocks","block","sanitized","tabs","tab","admin","serverOnlyFieldAdminProperties"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAiBA,OAAO,MAAMA,0BAA0B,CAAC,EACtCC,OAAOC,aAAa,EACpBC,CAAC,EAIF;IACC,MAAMF,QAAQ;QAAE,GAAGC,aAAa;IAAC;IAEjC,MAAME,4BAAkE;QACtE;QACA;QACA;QACA;QACA;QACA;QACA;QACA;KAMD;IAEDA,0BAA0BC,OAAO,CAAC,CAACC;QACjC,IAAIA,OAAOL,OAAO;YAChB,OAAOA,KAAK,CAACK,IAAI;QACnB;IACF;IAEA,IAAI,aAAaL,SAASM,MAAMC,OAAO,CAACP,MAAMQ,OAAO,GAAG;QACtDR,MAAMQ,OAAO,GAAGR,MAAMQ,OAAO,CAACC,GAAG,CAAC,CAACC;YACjC,IAAI,OAAOA,WAAW,YAAY,OAAOA,OAAOC,KAAK,KAAK,YAAY;gBACpE,OAAO;oBACLA,OAAOD,OAAOC,KAAK,CAAC;wBAAET;oBAAE;oBACxBU,OAAOF,OAAOE,KAAK;gBACrB;YACF;YAEA,OAAOF;QACT;IACF;IAEA,IAAI,YAAYV,OAAO;QACrBA,MAAMa,MAAM,GAAGC,yBAAyB;YAAED,QAAQb,MAAMa,MAAM;YAAEX;QAAE;IACpE;IAEA,IAAI,YAAYF,OAAO;QACrBA,MAAMe,MAAM,GAAGf,MAAMe,MAAM,CAACN,GAAG,CAAC,CAACO;YAC/B,MAAMC,YAAY;gBAAE,GAAGD,KAAK;YAAC;YAC7BC,UAAUJ,MAAM,GAAGC,yBAAyB;gBAAED,QAAQI,UAAUJ,MAAM;gBAAEX;YAAE;YAC1E,OAAOe;QACT;IACF;IAEA,IAAI,UAAUjB,OAAO;QACnB,mBAAmB;QACnBA,MAAMkB,IAAI,GAAGlB,MAAMkB,IAAI,CAACT,GAAG,CAAC,CAACU,MAAQpB,wBAAwB;gBAAEC,OAAOmB;gBAAKjB;YAAE;IAC/E;IAEA,IAAI,WAAWF,OAAO;QACpBA,MAAMoB,KAAK,GAAG;YAAE,GAAGpB,MAAMoB,KAAK;QAAC;QAE/B,MAAMC,iCAA4E;YAChF;YACA;YACA;SACD;QAEDA,+BAA+BjB,OAAO,CAAC,CAACC;YACtC,IAAIA,OAAOL,MAAMoB,KAAK,EAAE;gBACtB,OAAOpB,MAAMoB,KAAK,CAACf,IAAI;YACzB;QACF;IACF;IAEA,OAAOL;AACT,EAAC;AAED,OAAO,MAAMc,2BAA2B,CAAC,EACvCD,MAAM,EACNX,CAAC,EAIF,GAAcW,OAAOJ,GAAG,CAAC,CAACT,QAAUD,wBAAwB;YAAEC;YAAOE;QAAE,IAAG"}
@@ -1,4 +1,4 @@
1
- import type { Config } from '../../config/types.js';
1
+ import type { Config, SanitizedConfig } from '../../config/types.js';
2
2
  import type { Field } from './types.js';
3
3
  type Args = {
4
4
  config: Config;
@@ -10,12 +10,17 @@ type Args = {
10
10
  * @default false
11
11
  */
12
12
  requireFieldLevelRichTextEditor?: boolean;
13
+ /**
14
+ * If this property is set, RichText fields won't be sanitized immediately. Instead, they will be added to this array as promises
15
+ * so that you can sanitize them together, after the config has been sanitized.
16
+ */
17
+ richTextSanitizationPromises?: Array<(config: SanitizedConfig) => Promise<void>>;
13
18
  /**
14
19
  * If not null, will validate that upload and relationship fields do not relate to a collection that is not in this array.
15
20
  * This validation will be skipped if validRelationships is null.
16
21
  */
17
22
  validRelationships: null | string[];
18
23
  };
19
- export declare const sanitizeFields: ({ config, existingFieldNames, fields, requireFieldLevelRichTextEditor, validRelationships, }: Args) => Field[];
24
+ export declare const sanitizeFields: ({ config, existingFieldNames, fields, requireFieldLevelRichTextEditor, richTextSanitizationPromises, validRelationships, }: Args) => Promise<Field[]>;
20
25
  export {};
21
26
  //# sourceMappingURL=sanitize.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../../src/fields/config/sanitize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAgBvC,KAAK,IAAI,GAAG;IACV,MAAM,EAAE,MAAM,CAAA;IACd,kBAAkB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAChC,MAAM,EAAE,KAAK,EAAE,CAAA;IACf;;;;OAIG;IACH,+BAA+B,CAAC,EAAE,OAAO,CAAA;IACzC;;;OAGG;IACH,kBAAkB,EAAE,IAAI,GAAG,MAAM,EAAE,CAAA;CACpC,CAAA;AAED,eAAO,MAAM,cAAc,iGAMxB,IAAI,KAAG,KAAK,EAkKd,CAAA"}
1
+ {"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../../src/fields/config/sanitize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACpE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAgBvC,KAAK,IAAI,GAAG;IACV,MAAM,EAAE,MAAM,CAAA;IACd,kBAAkB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAChC,MAAM,EAAE,KAAK,EAAE,CAAA;IACf;;;;OAIG;IACH,+BAA+B,CAAC,EAAE,OAAO,CAAA;IACzC;;;OAGG;IACH,4BAA4B,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;IAEhF;;;OAGG;IACH,kBAAkB,EAAE,IAAI,GAAG,MAAM,EAAE,CAAA;CACpC,CAAA;AAED,eAAO,MAAM,cAAc,+HAOxB,IAAI,KAAG,QAAQ,KAAK,EAAE,CAoMxB,CAAA"}
@@ -1,4 +1,4 @@
1
- import MissingEditorProp from '../../errors/MissingEditorProp.js';
1
+ import { MissingEditorProp } from '../../errors/MissingEditorProp.js';
2
2
  import { DuplicateFieldName, InvalidFieldName, InvalidFieldRelationship, MissingFieldType } from '../../errors/index.js';
3
3
  import { formatLabels, toWords } from '../../utilities/formatLabels.js';
4
4
  import { baseBlockFields } from '../baseFields/baseBlockFields.js';
@@ -6,25 +6,15 @@ import { baseIDField } from '../baseFields/baseIDField.js';
6
6
  import { setDefaultBeforeDuplicate } from '../setDefaultBeforeDuplicate.js';
7
7
  import validations from '../validations.js';
8
8
  import { fieldAffectsData, tabHasName } from './types.js';
9
- export const sanitizeFields = ({ config, existingFieldNames = new Set(), fields, requireFieldLevelRichTextEditor = false, validRelationships })=>{
9
+ export const sanitizeFields = async ({ config, existingFieldNames = new Set(), fields, requireFieldLevelRichTextEditor = false, richTextSanitizationPromises, validRelationships })=>{
10
10
  if (!fields) return [];
11
- return fields.map((unsanitizedField)=>{
12
- const field = {
13
- ...unsanitizedField
14
- };
11
+ for(let i = 0; i < fields.length; i++){
12
+ const field = fields[i];
15
13
  if (!field.type) throw new MissingFieldType(field);
16
14
  // assert that field names do not contain forbidden characters
17
15
  if (fieldAffectsData(field) && field.name.includes('.')) {
18
16
  throw new InvalidFieldName(field, field.name);
19
17
  }
20
- // Make sure that the richText field has an editor
21
- if (field.type === 'richText' && !field.editor) {
22
- if (config.editor && !requireFieldLevelRichTextEditor) {
23
- field.editor = config.editor;
24
- } else {
25
- throw new MissingEditorProp(field);
26
- }
27
- }
28
18
  // Auto-label
29
19
  if ('name' in field && field.name && typeof field.label !== 'object' && typeof field.label !== 'string' && field.label !== false) {
30
20
  field.label = toWords(field.name);
@@ -94,51 +84,89 @@ export const sanitizeFields = ({ config, existingFieldNames = new Set(), fields,
94
84
  if (!field.admin) {
95
85
  field.admin = {};
96
86
  }
87
+ // Make sure that the richText field has an editor
88
+ if (field.type === 'richText') {
89
+ const sanitizeRichText = async (_config)=>{
90
+ if (!field.editor) {
91
+ if (_config.editor && !requireFieldLevelRichTextEditor) {
92
+ // config.editor should be sanitized at this point
93
+ field.editor = _config.editor;
94
+ } else {
95
+ throw new MissingEditorProp(field);
96
+ }
97
+ }
98
+ if (typeof field.editor === 'function') {
99
+ field.editor = await field.editor({
100
+ config: _config
101
+ });
102
+ }
103
+ // Add editor adapter hooks to field hooks
104
+ if (!field.hooks) field.hooks = {};
105
+ const mergeHooks = (hookName)=>{
106
+ if (typeof field.editor === 'function') return;
107
+ if (field.editor?.hooks?.[hookName]?.length) {
108
+ field.hooks[hookName] = field.hooks[hookName] ? field.hooks[hookName].concat(field.editor.hooks[hookName]) : [
109
+ ...field.editor.hooks[hookName]
110
+ ];
111
+ }
112
+ };
113
+ mergeHooks('afterRead');
114
+ mergeHooks('afterChange');
115
+ mergeHooks('beforeChange');
116
+ mergeHooks('beforeValidate');
117
+ mergeHooks('beforeDuplicate');
118
+ };
119
+ if (richTextSanitizationPromises) {
120
+ richTextSanitizationPromises.push(sanitizeRichText);
121
+ } else {
122
+ await sanitizeRichText(config);
123
+ }
124
+ }
97
125
  if ('fields' in field && field.fields) {
98
- field.fields = sanitizeFields({
126
+ field.fields = await sanitizeFields({
99
127
  config,
100
128
  existingFieldNames: fieldAffectsData(field) ? new Set() : existingFieldNames,
101
129
  fields: field.fields,
102
130
  requireFieldLevelRichTextEditor,
131
+ richTextSanitizationPromises,
103
132
  validRelationships
104
133
  });
105
134
  }
106
135
  if (field.type === 'tabs') {
107
- field.tabs = field.tabs.map((tab)=>{
108
- const unsanitizedTab = {
109
- ...tab
110
- };
136
+ for(let j = 0; j < field.tabs.length; j++){
137
+ const tab = field.tabs[j];
111
138
  if (tabHasName(tab) && typeof tab.label === 'undefined') {
112
- unsanitizedTab.label = toWords(tab.name);
139
+ tab.label = toWords(tab.name);
113
140
  }
114
- unsanitizedTab.fields = sanitizeFields({
141
+ tab.fields = await sanitizeFields({
115
142
  config,
116
143
  existingFieldNames: tabHasName(tab) ? new Set() : existingFieldNames,
117
144
  fields: tab.fields,
118
145
  requireFieldLevelRichTextEditor,
146
+ richTextSanitizationPromises,
119
147
  validRelationships
120
148
  });
121
- return unsanitizedTab;
122
- });
149
+ field.tabs[j] = tab;
150
+ }
123
151
  }
124
152
  if ('blocks' in field && field.blocks) {
125
- field.blocks = field.blocks.map((block)=>{
126
- const unsanitizedBlock = {
127
- ...block
128
- };
129
- unsanitizedBlock.labels = !unsanitizedBlock.labels ? formatLabels(unsanitizedBlock.slug) : unsanitizedBlock.labels;
130
- unsanitizedBlock.fields = sanitizeFields({
153
+ for(let j = 0; j < field.blocks.length; j++){
154
+ const block = field.blocks[j];
155
+ block.labels = !block.labels ? formatLabels(block.slug) : block.labels;
156
+ block.fields = await sanitizeFields({
131
157
  config,
132
158
  existingFieldNames: new Set(),
133
159
  fields: block.fields,
134
160
  requireFieldLevelRichTextEditor,
161
+ richTextSanitizationPromises,
135
162
  validRelationships
136
163
  });
137
- return unsanitizedBlock;
138
- });
164
+ field.blocks[j] = block;
165
+ }
139
166
  }
140
- return field;
141
- });
167
+ fields[i] = field;
168
+ }
169
+ return fields;
142
170
  };
143
171
 
144
172
  //# sourceMappingURL=sanitize.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/fields/config/sanitize.ts"],"sourcesContent":["import type { Config } from '../../config/types.js'\nimport type { Field } from './types.js'\n\nimport MissingEditorProp from '../../errors/MissingEditorProp.js'\nimport {\n DuplicateFieldName,\n InvalidFieldName,\n InvalidFieldRelationship,\n MissingFieldType,\n} from '../../errors/index.js'\nimport { formatLabels, toWords } from '../../utilities/formatLabels.js'\nimport { baseBlockFields } from '../baseFields/baseBlockFields.js'\nimport { baseIDField } from '../baseFields/baseIDField.js'\nimport { setDefaultBeforeDuplicate } from '../setDefaultBeforeDuplicate.js'\nimport validations from '../validations.js'\nimport { fieldAffectsData, tabHasName } from './types.js'\n\ntype Args = {\n config: Config\n existingFieldNames?: Set<string>\n fields: Field[]\n /**\n * If true, a richText field will require an editor property to be set, as the sanitizeFields function will not add it from the payload config if not present.\n *\n * @default false\n */\n requireFieldLevelRichTextEditor?: boolean\n /**\n * If not null, will validate that upload and relationship fields do not relate to a collection that is not in this array.\n * This validation will be skipped if validRelationships is null.\n */\n validRelationships: null | string[]\n}\n\nexport const sanitizeFields = ({\n config,\n existingFieldNames = new Set(),\n fields,\n requireFieldLevelRichTextEditor = false,\n validRelationships,\n}: Args): Field[] => {\n if (!fields) return []\n\n return fields.map((unsanitizedField) => {\n const field: Field = { ...unsanitizedField }\n\n if (!field.type) throw new MissingFieldType(field)\n\n // assert that field names do not contain forbidden characters\n if (fieldAffectsData(field) && field.name.includes('.')) {\n throw new InvalidFieldName(field, field.name)\n }\n\n // Make sure that the richText field has an editor\n if (field.type === 'richText' && !field.editor) {\n if (config.editor && !requireFieldLevelRichTextEditor) {\n field.editor = config.editor\n } else {\n throw new MissingEditorProp(field)\n }\n }\n\n // Auto-label\n if (\n 'name' in field &&\n field.name &&\n typeof field.label !== 'object' &&\n typeof field.label !== 'string' &&\n field.label !== false\n ) {\n field.label = toWords(field.name)\n }\n\n if (\n field.type === 'checkbox' &&\n typeof field.defaultValue === 'undefined' &&\n field.required === true\n ) {\n field.defaultValue = false\n }\n\n if (field.type === 'relationship' || field.type === 'upload') {\n if (validRelationships) {\n const relationships = Array.isArray(field.relationTo)\n ? field.relationTo\n : [field.relationTo]\n relationships.forEach((relationship: string) => {\n if (!validRelationships.includes(relationship)) {\n throw new InvalidFieldRelationship(field, relationship)\n }\n })\n }\n\n if (field.type === 'relationship') {\n if (field.min && !field.minRows) {\n console.warn(\n `(payload): The \"min\" property is deprecated for the Relationship field \"${field.name}\" and will be removed in a future version. Please use \"minRows\" instead.`,\n )\n }\n if (field.max && !field.maxRows) {\n console.warn(\n `(payload): The \"max\" property is deprecated for the Relationship field \"${field.name}\" and will be removed in a future version. Please use \"maxRows\" instead.`,\n )\n }\n field.minRows = field.minRows || field.min\n field.maxRows = field.maxRows || field.max\n }\n }\n\n if (field.type === 'blocks' && field.blocks) {\n field.blocks = field.blocks.map((block) => ({\n ...block,\n fields: block.fields.concat(baseBlockFields),\n }))\n }\n\n if (field.type === 'array' && field.fields) {\n field.fields.push(baseIDField)\n }\n\n if ((field.type === 'blocks' || field.type === 'array') && field.label) {\n field.labels = field.labels || formatLabels(field.name)\n }\n\n if (fieldAffectsData(field)) {\n if (existingFieldNames.has(field.name)) {\n throw new DuplicateFieldName(field.name)\n } else if (!['blockName', 'id'].includes(field.name)) {\n existingFieldNames.add(field.name)\n }\n\n if (field.localized && !config.localization) delete field.localized\n\n if (typeof field.validate === 'undefined') {\n const defaultValidate = validations[field.type]\n if (defaultValidate) {\n field.validate = (val, options) => defaultValidate(val, { ...field, ...options })\n } else {\n field.validate = () => true\n }\n }\n\n if (!field.hooks) field.hooks = {}\n if (!field.access) field.access = {}\n\n setDefaultBeforeDuplicate(field)\n }\n\n if (!field.admin) {\n field.admin = {}\n }\n\n if ('fields' in field && field.fields) {\n field.fields = sanitizeFields({\n config,\n existingFieldNames: fieldAffectsData(field) ? new Set() : existingFieldNames,\n fields: field.fields,\n requireFieldLevelRichTextEditor,\n validRelationships,\n })\n }\n\n if (field.type === 'tabs') {\n field.tabs = field.tabs.map((tab) => {\n const unsanitizedTab = { ...tab }\n if (tabHasName(tab) && typeof tab.label === 'undefined') {\n unsanitizedTab.label = toWords(tab.name)\n }\n\n unsanitizedTab.fields = sanitizeFields({\n config,\n existingFieldNames: tabHasName(tab) ? new Set() : existingFieldNames,\n fields: tab.fields,\n requireFieldLevelRichTextEditor,\n validRelationships,\n })\n\n return unsanitizedTab\n })\n }\n\n if ('blocks' in field && field.blocks) {\n field.blocks = field.blocks.map((block) => {\n const unsanitizedBlock = { ...block }\n unsanitizedBlock.labels = !unsanitizedBlock.labels\n ? formatLabels(unsanitizedBlock.slug)\n : unsanitizedBlock.labels\n\n unsanitizedBlock.fields = sanitizeFields({\n config,\n existingFieldNames: new Set(),\n fields: block.fields,\n requireFieldLevelRichTextEditor,\n validRelationships,\n })\n\n return unsanitizedBlock\n })\n }\n\n return field\n })\n}\n"],"names":["MissingEditorProp","DuplicateFieldName","InvalidFieldName","InvalidFieldRelationship","MissingFieldType","formatLabels","toWords","baseBlockFields","baseIDField","setDefaultBeforeDuplicate","validations","fieldAffectsData","tabHasName","sanitizeFields","config","existingFieldNames","Set","fields","requireFieldLevelRichTextEditor","validRelationships","map","unsanitizedField","field","type","name","includes","editor","label","defaultValue","required","relationships","Array","isArray","relationTo","forEach","relationship","min","minRows","console","warn","max","maxRows","blocks","block","concat","push","labels","has","add","localized","localization","validate","defaultValidate","val","options","hooks","access","admin","tabs","tab","unsanitizedTab","unsanitizedBlock","slug"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../../src/fields/config/sanitize.ts"],"sourcesContent":["import type { Config, SanitizedConfig } from '../../config/types.js'\nimport type { Field } from './types.js'\n\nimport { MissingEditorProp } from '../../errors/MissingEditorProp.js'\nimport {\n DuplicateFieldName,\n InvalidFieldName,\n InvalidFieldRelationship,\n MissingFieldType,\n} from '../../errors/index.js'\nimport { formatLabels, toWords } from '../../utilities/formatLabels.js'\nimport { baseBlockFields } from '../baseFields/baseBlockFields.js'\nimport { baseIDField } from '../baseFields/baseIDField.js'\nimport { setDefaultBeforeDuplicate } from '../setDefaultBeforeDuplicate.js'\nimport validations from '../validations.js'\nimport { fieldAffectsData, tabHasName } from './types.js'\n\ntype Args = {\n config: Config\n existingFieldNames?: Set<string>\n fields: Field[]\n /**\n * If true, a richText field will require an editor property to be set, as the sanitizeFields function will not add it from the payload config if not present.\n *\n * @default false\n */\n requireFieldLevelRichTextEditor?: boolean\n /**\n * If this property is set, RichText fields won't be sanitized immediately. Instead, they will be added to this array as promises\n * so that you can sanitize them together, after the config has been sanitized.\n */\n richTextSanitizationPromises?: Array<(config: SanitizedConfig) => Promise<void>>\n\n /**\n * If not null, will validate that upload and relationship fields do not relate to a collection that is not in this array.\n * This validation will be skipped if validRelationships is null.\n */\n validRelationships: null | string[]\n}\n\nexport const sanitizeFields = async ({\n config,\n existingFieldNames = new Set(),\n fields,\n requireFieldLevelRichTextEditor = false,\n richTextSanitizationPromises,\n validRelationships,\n}: Args): Promise<Field[]> => {\n if (!fields) return []\n\n for (let i = 0; i < fields.length; i++) {\n const field = fields[i]\n\n if (!field.type) throw new MissingFieldType(field)\n\n // assert that field names do not contain forbidden characters\n if (fieldAffectsData(field) && field.name.includes('.')) {\n throw new InvalidFieldName(field, field.name)\n }\n\n // Auto-label\n if (\n 'name' in field &&\n field.name &&\n typeof field.label !== 'object' &&\n typeof field.label !== 'string' &&\n field.label !== false\n ) {\n field.label = toWords(field.name)\n }\n\n if (\n field.type === 'checkbox' &&\n typeof field.defaultValue === 'undefined' &&\n field.required === true\n ) {\n field.defaultValue = false\n }\n\n if (field.type === 'relationship' || field.type === 'upload') {\n if (validRelationships) {\n const relationships = Array.isArray(field.relationTo)\n ? field.relationTo\n : [field.relationTo]\n relationships.forEach((relationship: string) => {\n if (!validRelationships.includes(relationship)) {\n throw new InvalidFieldRelationship(field, relationship)\n }\n })\n }\n\n if (field.type === 'relationship') {\n if (field.min && !field.minRows) {\n console.warn(\n `(payload): The \"min\" property is deprecated for the Relationship field \"${field.name}\" and will be removed in a future version. Please use \"minRows\" instead.`,\n )\n }\n if (field.max && !field.maxRows) {\n console.warn(\n `(payload): The \"max\" property is deprecated for the Relationship field \"${field.name}\" and will be removed in a future version. Please use \"maxRows\" instead.`,\n )\n }\n field.minRows = field.minRows || field.min\n field.maxRows = field.maxRows || field.max\n }\n }\n\n if (field.type === 'blocks' && field.blocks) {\n field.blocks = field.blocks.map((block) => ({\n ...block,\n fields: block.fields.concat(baseBlockFields),\n }))\n }\n\n if (field.type === 'array' && field.fields) {\n field.fields.push(baseIDField)\n }\n\n if ((field.type === 'blocks' || field.type === 'array') && field.label) {\n field.labels = field.labels || formatLabels(field.name)\n }\n\n if (fieldAffectsData(field)) {\n if (existingFieldNames.has(field.name)) {\n throw new DuplicateFieldName(field.name)\n } else if (!['blockName', 'id'].includes(field.name)) {\n existingFieldNames.add(field.name)\n }\n\n if (field.localized && !config.localization) delete field.localized\n\n if (typeof field.validate === 'undefined') {\n const defaultValidate = validations[field.type]\n if (defaultValidate) {\n field.validate = (val, options) => defaultValidate(val, { ...field, ...options })\n } else {\n field.validate = () => true\n }\n }\n\n if (!field.hooks) field.hooks = {}\n if (!field.access) field.access = {}\n\n setDefaultBeforeDuplicate(field)\n }\n\n if (!field.admin) {\n field.admin = {}\n }\n\n // Make sure that the richText field has an editor\n if (field.type === 'richText') {\n const sanitizeRichText = async (_config: SanitizedConfig) => {\n if (!field.editor) {\n if (_config.editor && !requireFieldLevelRichTextEditor) {\n // config.editor should be sanitized at this point\n field.editor = _config.editor\n } else {\n throw new MissingEditorProp(field)\n }\n }\n\n if (typeof field.editor === 'function') {\n field.editor = await field.editor({ config: _config })\n }\n\n // Add editor adapter hooks to field hooks\n if (!field.hooks) field.hooks = {}\n\n const mergeHooks = (hookName: keyof typeof field.editor.hooks) => {\n if (typeof field.editor === 'function') return\n\n if (field.editor?.hooks?.[hookName]?.length) {\n field.hooks[hookName] = field.hooks[hookName]\n ? field.hooks[hookName].concat(field.editor.hooks[hookName])\n : [...field.editor.hooks[hookName]]\n }\n }\n\n mergeHooks('afterRead')\n mergeHooks('afterChange')\n mergeHooks('beforeChange')\n mergeHooks('beforeValidate')\n mergeHooks('beforeDuplicate')\n }\n if (richTextSanitizationPromises) {\n richTextSanitizationPromises.push(sanitizeRichText)\n } else {\n await sanitizeRichText(config as unknown as SanitizedConfig)\n }\n }\n\n if ('fields' in field && field.fields) {\n field.fields = await sanitizeFields({\n config,\n existingFieldNames: fieldAffectsData(field) ? new Set() : existingFieldNames,\n fields: field.fields,\n requireFieldLevelRichTextEditor,\n richTextSanitizationPromises,\n validRelationships,\n })\n }\n\n if (field.type === 'tabs') {\n for (let j = 0; j < field.tabs.length; j++) {\n const tab = field.tabs[j]\n if (tabHasName(tab) && typeof tab.label === 'undefined') {\n tab.label = toWords(tab.name)\n }\n\n tab.fields = await sanitizeFields({\n config,\n existingFieldNames: tabHasName(tab) ? new Set() : existingFieldNames,\n fields: tab.fields,\n requireFieldLevelRichTextEditor,\n richTextSanitizationPromises,\n validRelationships,\n })\n field.tabs[j] = tab\n }\n }\n\n if ('blocks' in field && field.blocks) {\n for (let j = 0; j < field.blocks.length; j++) {\n const block = field.blocks[j]\n block.labels = !block.labels ? formatLabels(block.slug) : block.labels\n\n block.fields = await sanitizeFields({\n config,\n existingFieldNames: new Set(),\n fields: block.fields,\n requireFieldLevelRichTextEditor,\n richTextSanitizationPromises,\n validRelationships,\n })\n field.blocks[j] = block\n }\n }\n\n fields[i] = field\n }\n\n return fields\n}\n"],"names":["MissingEditorProp","DuplicateFieldName","InvalidFieldName","InvalidFieldRelationship","MissingFieldType","formatLabels","toWords","baseBlockFields","baseIDField","setDefaultBeforeDuplicate","validations","fieldAffectsData","tabHasName","sanitizeFields","config","existingFieldNames","Set","fields","requireFieldLevelRichTextEditor","richTextSanitizationPromises","validRelationships","i","length","field","type","name","includes","label","defaultValue","required","relationships","Array","isArray","relationTo","forEach","relationship","min","minRows","console","warn","max","maxRows","blocks","map","block","concat","push","labels","has","add","localized","localization","validate","defaultValidate","val","options","hooks","access","admin","sanitizeRichText","_config","editor","mergeHooks","hookName","j","tabs","tab","slug"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -1,30 +1,24 @@
1
- import { InvalidFieldName, InvalidFieldRelationship, MissingFieldType } from '../../errors';
2
- import { sanitizeFields } from './sanitize';
3
- const dummyConfig = {
4
- collections: [],
5
- db: ()=>({})
6
- };
1
+ import { InvalidFieldName, InvalidFieldRelationship, MissingFieldType } from '../../errors/index.js';
2
+ import { sanitizeFields } from './sanitize.js';
7
3
  describe('sanitizeFields', ()=>{
8
- it('should throw on missing type field', ()=>{
9
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
10
- // @ts-ignore
4
+ const config = {};
5
+ it('should throw on missing type field', async ()=>{
11
6
  const fields = [
7
+ // @ts-expect-error
12
8
  {
13
9
  label: 'some-collection',
14
10
  name: 'Some Collection'
15
11
  }
16
12
  ];
17
- expect(()=>{
18
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
19
- // @ts-ignore
20
- sanitizeFields({
21
- config: dummyConfig,
13
+ await expect(async ()=>{
14
+ await sanitizeFields({
15
+ config,
22
16
  fields,
23
17
  validRelationships: []
24
18
  });
25
- }).toThrow(MissingFieldType);
19
+ }).rejects.toThrow(MissingFieldType);
26
20
  });
27
- it('should throw on invalid field name', ()=>{
21
+ it('should throw on invalid field name', async ()=>{
28
22
  const fields = [
29
23
  {
30
24
  label: 'some.collection',
@@ -32,32 +26,32 @@ describe('sanitizeFields', ()=>{
32
26
  type: 'text'
33
27
  }
34
28
  ];
35
- expect(()=>{
36
- sanitizeFields({
37
- config: dummyConfig,
29
+ await expect(async ()=>{
30
+ await sanitizeFields({
31
+ config,
38
32
  fields,
39
33
  validRelationships: []
40
34
  });
41
- }).toThrow(InvalidFieldName);
35
+ }).rejects.toThrow(InvalidFieldName);
42
36
  });
43
37
  describe('auto-labeling', ()=>{
44
- it('should populate label if missing', ()=>{
38
+ it('should populate label if missing', async ()=>{
45
39
  const fields = [
46
40
  {
47
41
  name: 'someField',
48
42
  type: 'text'
49
43
  }
50
44
  ];
51
- const sanitizedField = sanitizeFields({
52
- config: dummyConfig,
45
+ const sanitizedField = (await sanitizeFields({
46
+ config,
53
47
  fields,
54
48
  validRelationships: []
55
- })[0];
49
+ }))[0];
56
50
  expect(sanitizedField.name).toStrictEqual('someField');
57
51
  expect(sanitizedField.label).toStrictEqual('Some Field');
58
52
  expect(sanitizedField.type).toStrictEqual('text');
59
53
  });
60
- it('should allow auto-label override', ()=>{
54
+ it('should allow auto-label override', async ()=>{
61
55
  const fields = [
62
56
  {
63
57
  label: 'Do not label',
@@ -65,17 +59,17 @@ describe('sanitizeFields', ()=>{
65
59
  type: 'text'
66
60
  }
67
61
  ];
68
- const sanitizedField = sanitizeFields({
69
- config: dummyConfig,
62
+ const sanitizedField = (await sanitizeFields({
63
+ config,
70
64
  fields,
71
65
  validRelationships: []
72
- })[0];
66
+ }))[0];
73
67
  expect(sanitizedField.name).toStrictEqual('someField');
74
68
  expect(sanitizedField.label).toStrictEqual('Do not label');
75
69
  expect(sanitizedField.type).toStrictEqual('text');
76
70
  });
77
71
  describe('opt-out', ()=>{
78
- it('should allow label opt-out', ()=>{
72
+ it('should allow label opt-out', async ()=>{
79
73
  const fields = [
80
74
  {
81
75
  label: false,
@@ -83,16 +77,16 @@ describe('sanitizeFields', ()=>{
83
77
  type: 'text'
84
78
  }
85
79
  ];
86
- const sanitizedField = sanitizeFields({
87
- config: dummyConfig,
80
+ const sanitizedField = (await sanitizeFields({
81
+ config,
88
82
  fields,
89
83
  validRelationships: []
90
- })[0];
84
+ }))[0];
91
85
  expect(sanitizedField.name).toStrictEqual('someField');
92
86
  expect(sanitizedField.label).toStrictEqual(false);
93
87
  expect(sanitizedField.type).toStrictEqual('text');
94
88
  });
95
- it('should allow label opt-out for arrays', ()=>{
89
+ it('should allow label opt-out for arrays', async ()=>{
96
90
  const arrayField = {
97
91
  fields: [
98
92
  {
@@ -104,19 +98,19 @@ describe('sanitizeFields', ()=>{
104
98
  name: 'items',
105
99
  type: 'array'
106
100
  };
107
- const sanitizedField = sanitizeFields({
108
- config: dummyConfig,
101
+ const sanitizedField = (await sanitizeFields({
102
+ config,
109
103
  fields: [
110
104
  arrayField
111
105
  ],
112
106
  validRelationships: []
113
- })[0];
107
+ }))[0];
114
108
  expect(sanitizedField.name).toStrictEqual('items');
115
109
  expect(sanitizedField.label).toStrictEqual(false);
116
110
  expect(sanitizedField.type).toStrictEqual('array');
117
111
  expect(sanitizedField.labels).toBeUndefined();
118
112
  });
119
- it('should allow label opt-out for blocks', ()=>{
113
+ it('should allow label opt-out for blocks', async ()=>{
120
114
  const fields = [
121
115
  {
122
116
  blocks: [
@@ -135,18 +129,18 @@ describe('sanitizeFields', ()=>{
135
129
  type: 'blocks'
136
130
  }
137
131
  ];
138
- const sanitizedField = sanitizeFields({
139
- config: dummyConfig,
132
+ const sanitizedField = (await sanitizeFields({
133
+ config,
140
134
  fields,
141
135
  validRelationships: []
142
- })[0];
136
+ }))[0];
143
137
  expect(sanitizedField.name).toStrictEqual('noLabelBlock');
144
138
  expect(sanitizedField.label).toStrictEqual(false);
145
139
  expect(sanitizedField.type).toStrictEqual('blocks');
146
140
  expect(sanitizedField.labels).toBeUndefined();
147
141
  });
148
142
  });
149
- it('should label arrays with plural and singular', ()=>{
143
+ it('should label arrays with plural and singular', async ()=>{
150
144
  const fields = [
151
145
  {
152
146
  fields: [
@@ -159,11 +153,11 @@ describe('sanitizeFields', ()=>{
159
153
  type: 'array'
160
154
  }
161
155
  ];
162
- const sanitizedField = sanitizeFields({
163
- config: dummyConfig,
156
+ const sanitizedField = (await sanitizeFields({
157
+ config,
164
158
  fields,
165
159
  validRelationships: []
166
- })[0];
160
+ }))[0];
167
161
  expect(sanitizedField.name).toStrictEqual('items');
168
162
  expect(sanitizedField.label).toStrictEqual('Items');
169
163
  expect(sanitizedField.type).toStrictEqual('array');
@@ -172,7 +166,7 @@ describe('sanitizeFields', ()=>{
172
166
  singular: 'Item'
173
167
  });
174
168
  });
175
- it('should label blocks with plural and singular', ()=>{
169
+ it('should label blocks with plural and singular', async ()=>{
176
170
  const fields = [
177
171
  {
178
172
  blocks: [
@@ -190,11 +184,11 @@ describe('sanitizeFields', ()=>{
190
184
  type: 'blocks'
191
185
  }
192
186
  ];
193
- const sanitizedField = sanitizeFields({
194
- config: dummyConfig,
187
+ const sanitizedField = (await sanitizeFields({
188
+ config,
195
189
  fields,
196
190
  validRelationships: []
197
- })[0];
191
+ }))[0];
198
192
  expect(sanitizedField.name).toStrictEqual('specialBlock');
199
193
  expect(sanitizedField.label).toStrictEqual('Special Block');
200
194
  expect(sanitizedField.type).toStrictEqual('blocks');
@@ -206,7 +200,7 @@ describe('sanitizeFields', ()=>{
206
200
  });
207
201
  });
208
202
  describe('relationships', ()=>{
209
- it('should not throw on valid relationship', ()=>{
203
+ it('should not throw on valid relationship', async ()=>{
210
204
  const validRelationships = [
211
205
  'some-collection'
212
206
  ];
@@ -218,15 +212,15 @@ describe('sanitizeFields', ()=>{
218
212
  type: 'relationship'
219
213
  }
220
214
  ];
221
- expect(()=>{
222
- sanitizeFields({
223
- config: dummyConfig,
215
+ await expect(async ()=>{
216
+ await sanitizeFields({
217
+ config,
224
218
  fields,
225
219
  validRelationships
226
220
  });
227
221
  }).not.toThrow();
228
222
  });
229
- it('should not throw on valid relationship - multiple', ()=>{
223
+ it('should not throw on valid relationship - multiple', async ()=>{
230
224
  const validRelationships = [
231
225
  'some-collection',
232
226
  'another-collection'
@@ -242,15 +236,15 @@ describe('sanitizeFields', ()=>{
242
236
  type: 'relationship'
243
237
  }
244
238
  ];
245
- expect(()=>{
246
- sanitizeFields({
247
- config: dummyConfig,
239
+ await expect(async ()=>{
240
+ await sanitizeFields({
241
+ config,
248
242
  fields,
249
243
  validRelationships
250
244
  });
251
245
  }).not.toThrow();
252
246
  });
253
- it('should not throw on valid relationship inside blocks', ()=>{
247
+ it('should not throw on valid relationship inside blocks', async ()=>{
254
248
  const validRelationships = [
255
249
  'some-collection'
256
250
  ];
@@ -275,15 +269,15 @@ describe('sanitizeFields', ()=>{
275
269
  type: 'blocks'
276
270
  }
277
271
  ];
278
- expect(()=>{
279
- sanitizeFields({
280
- config: dummyConfig,
272
+ await expect(async ()=>{
273
+ await sanitizeFields({
274
+ config,
281
275
  fields,
282
276
  validRelationships
283
277
  });
284
278
  }).not.toThrow();
285
279
  });
286
- it('should throw on invalid relationship', ()=>{
280
+ it('should throw on invalid relationship', async ()=>{
287
281
  const validRelationships = [
288
282
  'some-collection'
289
283
  ];
@@ -295,15 +289,15 @@ describe('sanitizeFields', ()=>{
295
289
  type: 'relationship'
296
290
  }
297
291
  ];
298
- expect(()=>{
299
- sanitizeFields({
300
- config: dummyConfig,
292
+ await expect(async ()=>{
293
+ await sanitizeFields({
294
+ config,
301
295
  fields,
302
296
  validRelationships
303
297
  });
304
- }).toThrow(InvalidFieldRelationship);
298
+ }).rejects.toThrow(InvalidFieldRelationship);
305
299
  });
306
- it('should throw on invalid relationship - multiple', ()=>{
300
+ it('should throw on invalid relationship - multiple', async ()=>{
307
301
  const validRelationships = [
308
302
  'some-collection',
309
303
  'another-collection'
@@ -319,15 +313,15 @@ describe('sanitizeFields', ()=>{
319
313
  type: 'relationship'
320
314
  }
321
315
  ];
322
- expect(()=>{
323
- sanitizeFields({
324
- config: dummyConfig,
316
+ await expect(async ()=>{
317
+ await sanitizeFields({
318
+ config,
325
319
  fields,
326
320
  validRelationships
327
321
  });
328
- }).toThrow(InvalidFieldRelationship);
322
+ }).rejects.toThrow(InvalidFieldRelationship);
329
323
  });
330
- it('should throw on invalid relationship inside blocks', ()=>{
324
+ it('should throw on invalid relationship inside blocks', async ()=>{
331
325
  const validRelationships = [
332
326
  'some-collection'
333
327
  ];
@@ -352,15 +346,15 @@ describe('sanitizeFields', ()=>{
352
346
  type: 'blocks'
353
347
  }
354
348
  ];
355
- expect(()=>{
356
- sanitizeFields({
357
- config: dummyConfig,
349
+ await expect(async ()=>{
350
+ await sanitizeFields({
351
+ config,
358
352
  fields,
359
353
  validRelationships
360
354
  });
361
- }).toThrow(InvalidFieldRelationship);
355
+ }).rejects.toThrow(InvalidFieldRelationship);
362
356
  });
363
- it('should defaultValue of checkbox to false if required and undefined', ()=>{
357
+ it('should defaultValue of checkbox to false if required and undefined', async ()=>{
364
358
  const fields = [
365
359
  {
366
360
  name: 'My Checkbox',
@@ -368,16 +362,16 @@ describe('sanitizeFields', ()=>{
368
362
  type: 'checkbox'
369
363
  }
370
364
  ];
371
- const sanitizedField = sanitizeFields({
372
- config: dummyConfig,
365
+ const sanitizedField = (await sanitizeFields({
366
+ config,
373
367
  fields,
374
368
  validRelationships: []
375
- })[0];
369
+ }))[0];
376
370
  expect(sanitizedField.defaultValue).toStrictEqual(false);
377
371
  });
378
- it('should return empty field array if no fields', ()=>{
379
- const sanitizedFields = sanitizeFields({
380
- config: dummyConfig,
372
+ it('should return empty field array if no fields', async ()=>{
373
+ const sanitizedFields = await sanitizeFields({
374
+ config,
381
375
  fields: [],
382
376
  validRelationships: []
383
377
  });