payload 3.0.0-alpha.60 → 3.0.0-alpha.62

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 (706) hide show
  1. package/dist/admin/RichText.d.ts +5 -0
  2. package/dist/admin/RichText.d.ts.map +1 -1
  3. package/dist/admin/RichText.js.map +1 -1
  4. package/dist/admin/elements/Cell.js.map +1 -1
  5. package/dist/admin/elements/DatePicker.js.map +1 -1
  6. package/dist/admin/elements/PreviewButton.d.ts +2 -1
  7. package/dist/admin/elements/PreviewButton.d.ts.map +1 -1
  8. package/dist/admin/elements/PreviewButton.js.map +1 -1
  9. package/dist/admin/elements/PublishButton.d.ts +2 -1
  10. package/dist/admin/elements/PublishButton.d.ts.map +1 -1
  11. package/dist/admin/elements/PublishButton.js.map +1 -1
  12. package/dist/admin/elements/SaveButton.d.ts +2 -1
  13. package/dist/admin/elements/SaveButton.d.ts.map +1 -1
  14. package/dist/admin/elements/SaveButton.js.map +1 -1
  15. package/dist/admin/elements/SaveDraftButton.d.ts +2 -1
  16. package/dist/admin/elements/SaveDraftButton.d.ts.map +1 -1
  17. package/dist/admin/elements/SaveDraftButton.js.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/Error.js.map +1 -1
  24. package/dist/admin/forms/FieldDescription.d.ts +5 -2
  25. package/dist/admin/forms/FieldDescription.d.ts.map +1 -1
  26. package/dist/admin/forms/FieldDescription.js.map +1 -1
  27. package/dist/admin/forms/FieldTypes.js.map +1 -1
  28. package/dist/admin/forms/Form.js.map +1 -1
  29. package/dist/admin/forms/Label.d.ts +2 -1
  30. package/dist/admin/forms/Label.d.ts.map +1 -1
  31. package/dist/admin/forms/Label.js.map +1 -1
  32. package/dist/admin/forms/RowLabel.d.ts +2 -1
  33. package/dist/admin/forms/RowLabel.d.ts.map +1 -1
  34. package/dist/admin/forms/RowLabel.js.map +1 -1
  35. package/dist/admin/types.d.ts +1 -0
  36. package/dist/admin/types.d.ts.map +1 -1
  37. package/dist/admin/types.js.map +1 -1
  38. package/dist/admin/views/types.d.ts +2 -2
  39. package/dist/admin/views/types.d.ts.map +1 -1
  40. package/dist/admin/views/types.js.map +1 -1
  41. package/dist/assets/assets.d.js.map +1 -1
  42. package/dist/auth/baseFields/accountLock.js.map +1 -1
  43. package/dist/auth/baseFields/apiKey.d.ts.map +1 -1
  44. package/dist/auth/baseFields/apiKey.js +3 -7
  45. package/dist/auth/baseFields/apiKey.js.map +1 -1
  46. package/dist/auth/baseFields/auth.d.ts.map +1 -1
  47. package/dist/auth/baseFields/auth.js +1 -5
  48. package/dist/auth/baseFields/auth.js.map +1 -1
  49. package/dist/auth/baseFields/verification.d.ts.map +1 -1
  50. package/dist/auth/baseFields/verification.js +1 -5
  51. package/dist/auth/baseFields/verification.js.map +1 -1
  52. package/dist/auth/cookies.d.ts +16 -4
  53. package/dist/auth/cookies.d.ts.map +1 -1
  54. package/dist/auth/cookies.js +45 -14
  55. package/dist/auth/cookies.js.map +1 -1
  56. package/dist/auth/crypto.js.map +1 -1
  57. package/dist/auth/defaultAccess.js.map +1 -1
  58. package/dist/auth/defaultUser.d.ts.map +1 -1
  59. package/dist/auth/defaultUser.js +2 -7
  60. package/dist/auth/defaultUser.js.map +1 -1
  61. package/dist/auth/executeAccess.js.map +1 -1
  62. package/dist/auth/executeAuthStrategies.d.ts +3 -2
  63. package/dist/auth/executeAuthStrategies.d.ts.map +1 -1
  64. package/dist/auth/executeAuthStrategies.js.map +1 -1
  65. package/dist/auth/extractJWT.js.map +1 -1
  66. package/dist/auth/getAccessResults.js.map +1 -1
  67. package/dist/auth/getFieldsToSign.d.ts +2 -2
  68. package/dist/auth/getFieldsToSign.d.ts.map +1 -1
  69. package/dist/auth/getFieldsToSign.js.map +1 -1
  70. package/dist/auth/index.js.map +1 -1
  71. package/dist/auth/isLocked.js.map +1 -1
  72. package/dist/auth/operations/access.js.map +1 -1
  73. package/dist/auth/operations/auth.d.ts +5 -4
  74. package/dist/auth/operations/auth.d.ts.map +1 -1
  75. package/dist/auth/operations/auth.js.map +1 -1
  76. package/dist/auth/operations/forgotPassword.js +3 -3
  77. package/dist/auth/operations/forgotPassword.js.map +1 -1
  78. package/dist/auth/operations/init.js.map +1 -1
  79. package/dist/auth/operations/local/auth.js +1 -1
  80. package/dist/auth/operations/local/auth.js.map +1 -1
  81. package/dist/auth/operations/local/forgotPassword.js.map +1 -1
  82. package/dist/auth/operations/local/index.js.map +1 -1
  83. package/dist/auth/operations/local/login.js.map +1 -1
  84. package/dist/auth/operations/local/resetPassword.js.map +1 -1
  85. package/dist/auth/operations/local/unlock.js.map +1 -1
  86. package/dist/auth/operations/local/verifyEmail.js.map +1 -1
  87. package/dist/auth/operations/login.d.ts.map +1 -1
  88. package/dist/auth/operations/login.js +17 -1
  89. package/dist/auth/operations/login.js.map +1 -1
  90. package/dist/auth/operations/logout.js.map +1 -1
  91. package/dist/auth/operations/me.js.map +1 -1
  92. package/dist/auth/operations/refresh.js.map +1 -1
  93. package/dist/auth/operations/registerFirstUser.js.map +1 -1
  94. package/dist/auth/operations/resetPassword.js.map +1 -1
  95. package/dist/auth/operations/unlock.js.map +1 -1
  96. package/dist/auth/operations/verifyEmail.js.map +1 -1
  97. package/dist/auth/sendVerificationEmail.d.ts +5 -6
  98. package/dist/auth/sendVerificationEmail.d.ts.map +1 -1
  99. package/dist/auth/sendVerificationEmail.js +4 -5
  100. package/dist/auth/sendVerificationEmail.js.map +1 -1
  101. package/dist/auth/strategies/apiKey.js.map +1 -1
  102. package/dist/auth/strategies/jwt.js.map +1 -1
  103. package/dist/auth/strategies/local/authenticate.js.map +1 -1
  104. package/dist/auth/strategies/local/generatePasswordSaltHash.js.map +1 -1
  105. package/dist/auth/strategies/local/incrementLoginAttempts.js.map +1 -1
  106. package/dist/auth/strategies/local/register.js.map +1 -1
  107. package/dist/auth/strategies/local/resetLoginAttempts.js.map +1 -1
  108. package/dist/auth/types.js.map +1 -1
  109. package/dist/bin/generateTypes.js.map +1 -1
  110. package/dist/bin/index.js.map +1 -1
  111. package/dist/bin/loadEnv.js.map +1 -1
  112. package/dist/bin/loader/clientExtensions.js.map +1 -1
  113. package/dist/bin/loader/compile.js.map +1 -1
  114. package/dist/bin/loader/index.d.ts.map +1 -1
  115. package/dist/bin/loader/index.js +4 -1
  116. package/dist/bin/loader/index.js.map +1 -1
  117. package/dist/bin/loader/read-default-tsconfig.js.map +1 -1
  118. package/dist/bin/migrate.js.map +1 -1
  119. package/dist/collections/config/build.js.map +1 -1
  120. package/dist/collections/config/client.d.ts +26 -16
  121. package/dist/collections/config/client.d.ts.map +1 -1
  122. package/dist/collections/config/client.js +21 -4
  123. package/dist/collections/config/client.js.map +1 -1
  124. package/dist/collections/config/defaults.d.ts +1 -0
  125. package/dist/collections/config/defaults.d.ts.map +1 -1
  126. package/dist/collections/config/defaults.js +1 -0
  127. package/dist/collections/config/defaults.js.map +1 -1
  128. package/dist/collections/config/sanitize.d.ts.map +1 -1
  129. package/dist/collections/config/sanitize.js +2 -7
  130. package/dist/collections/config/sanitize.js.map +1 -1
  131. package/dist/collections/config/schema.d.ts.map +1 -1
  132. package/dist/collections/config/schema.js +4 -2
  133. package/dist/collections/config/schema.js.map +1 -1
  134. package/dist/collections/config/types.d.ts +14 -10
  135. package/dist/collections/config/types.d.ts.map +1 -1
  136. package/dist/collections/config/types.js.map +1 -1
  137. package/dist/collections/dataloader.d.ts.map +1 -1
  138. package/dist/collections/dataloader.js +3 -5
  139. package/dist/collections/dataloader.js.map +1 -1
  140. package/dist/collections/operations/count.d.ts +13 -0
  141. package/dist/collections/operations/count.d.ts.map +1 -0
  142. package/dist/collections/operations/count.js +75 -0
  143. package/dist/collections/operations/count.js.map +1 -0
  144. package/dist/collections/operations/create.d.ts.map +1 -1
  145. package/dist/collections/operations/create.js +4 -8
  146. package/dist/collections/operations/create.js.map +1 -1
  147. package/dist/collections/operations/delete.js.map +1 -1
  148. package/dist/collections/operations/deleteByID.js.map +1 -1
  149. package/dist/collections/operations/docAccess.js.map +1 -1
  150. package/dist/collections/operations/duplicate.js.map +1 -1
  151. package/dist/collections/operations/find.js.map +1 -1
  152. package/dist/collections/operations/findByID.js.map +1 -1
  153. package/dist/collections/operations/findVersionByID.js.map +1 -1
  154. package/dist/collections/operations/findVersions.js.map +1 -1
  155. package/dist/collections/operations/local/count.d.ts +20 -0
  156. package/dist/collections/operations/local/count.d.ts.map +1 -0
  157. package/dist/collections/operations/local/count.js +19 -0
  158. package/dist/collections/operations/local/count.js.map +1 -0
  159. package/dist/collections/operations/local/create.d.ts +2 -2
  160. package/dist/collections/operations/local/create.d.ts.map +1 -1
  161. package/dist/collections/operations/local/create.js +2 -1
  162. package/dist/collections/operations/local/create.js.map +1 -1
  163. package/dist/collections/operations/local/delete.d.ts +2 -2
  164. package/dist/collections/operations/local/delete.d.ts.map +1 -1
  165. package/dist/collections/operations/local/delete.js.map +1 -1
  166. package/dist/collections/operations/local/duplicate.d.ts +2 -2
  167. package/dist/collections/operations/local/duplicate.d.ts.map +1 -1
  168. package/dist/collections/operations/local/duplicate.js +1 -1
  169. package/dist/collections/operations/local/duplicate.js.map +1 -1
  170. package/dist/collections/operations/local/find.d.ts +2 -2
  171. package/dist/collections/operations/local/find.d.ts.map +1 -1
  172. package/dist/collections/operations/local/find.js.map +1 -1
  173. package/dist/collections/operations/local/findByID.d.ts +2 -2
  174. package/dist/collections/operations/local/findByID.d.ts.map +1 -1
  175. package/dist/collections/operations/local/findByID.js.map +1 -1
  176. package/dist/collections/operations/local/findVersionByID.d.ts +2 -2
  177. package/dist/collections/operations/local/findVersionByID.d.ts.map +1 -1
  178. package/dist/collections/operations/local/findVersionByID.js.map +1 -1
  179. package/dist/collections/operations/local/findVersions.d.ts +2 -2
  180. package/dist/collections/operations/local/findVersions.d.ts.map +1 -1
  181. package/dist/collections/operations/local/findVersions.js.map +1 -1
  182. package/dist/collections/operations/local/index.d.ts +2 -0
  183. package/dist/collections/operations/local/index.d.ts.map +1 -1
  184. package/dist/collections/operations/local/index.js +2 -0
  185. package/dist/collections/operations/local/index.js.map +1 -1
  186. package/dist/collections/operations/local/restoreVersion.d.ts +2 -2
  187. package/dist/collections/operations/local/restoreVersion.d.ts.map +1 -1
  188. package/dist/collections/operations/local/restoreVersion.js.map +1 -1
  189. package/dist/collections/operations/local/update.d.ts +2 -2
  190. package/dist/collections/operations/local/update.d.ts.map +1 -1
  191. package/dist/collections/operations/local/update.js.map +1 -1
  192. package/dist/collections/operations/restoreVersion.js.map +1 -1
  193. package/dist/collections/operations/update.d.ts.map +1 -1
  194. package/dist/collections/operations/update.js +2 -2
  195. package/dist/collections/operations/update.js.map +1 -1
  196. package/dist/collections/operations/updateByID.js +1 -1
  197. package/dist/collections/operations/updateByID.js.map +1 -1
  198. package/dist/collections/operations/utils.d.ts +6 -0
  199. package/dist/collections/operations/utils.d.ts.map +1 -1
  200. package/dist/collections/operations/utils.js.map +1 -1
  201. package/dist/config/build.js.map +1 -1
  202. package/dist/config/client.d.ts +7 -2
  203. package/dist/config/client.d.ts.map +1 -1
  204. package/dist/config/client.js +11 -5
  205. package/dist/config/client.js.map +1 -1
  206. package/dist/config/defaults.d.ts.map +1 -1
  207. package/dist/config/defaults.js +1 -0
  208. package/dist/config/defaults.js.map +1 -1
  209. package/dist/config/find.d.ts.map +1 -1
  210. package/dist/config/find.js +20 -9
  211. package/dist/config/find.js.map +1 -1
  212. package/dist/config/sanitize.d.ts.map +1 -1
  213. package/dist/config/sanitize.js +5 -3
  214. package/dist/config/sanitize.js.map +1 -1
  215. package/dist/config/schema.d.ts.map +1 -1
  216. package/dist/config/schema.js +1 -0
  217. package/dist/config/schema.js.map +1 -1
  218. package/dist/config/shared/adminViewSchema.js.map +1 -1
  219. package/dist/config/shared/componentSchema.js.map +1 -1
  220. package/dist/config/types.d.ts +33 -52
  221. package/dist/config/types.d.ts.map +1 -1
  222. package/dist/config/types.js +3 -12
  223. package/dist/config/types.js.map +1 -1
  224. package/dist/config/validate.js.map +1 -1
  225. package/dist/database/combineQueries.js.map +1 -1
  226. package/dist/database/createDatabaseAdapter.js.map +1 -1
  227. package/dist/database/flattenWhereToOperators.js.map +1 -1
  228. package/dist/database/getLocalizedPaths.js.map +1 -1
  229. package/dist/database/migrations/createMigration.js.map +1 -1
  230. package/dist/database/migrations/getMigrations.js.map +1 -1
  231. package/dist/database/migrations/migrate.js.map +1 -1
  232. package/dist/database/migrations/migrateDown.js.map +1 -1
  233. package/dist/database/migrations/migrateRefresh.js.map +1 -1
  234. package/dist/database/migrations/migrateReset.js.map +1 -1
  235. package/dist/database/migrations/migrateStatus.js.map +1 -1
  236. package/dist/database/migrations/migrationTemplate.js.map +1 -1
  237. package/dist/database/migrations/migrationsCollection.js.map +1 -1
  238. package/dist/database/migrations/readMigrationFiles.js.map +1 -1
  239. package/dist/database/queryValidation/types.js.map +1 -1
  240. package/dist/database/queryValidation/validateQueryPaths.js.map +1 -1
  241. package/dist/database/queryValidation/validateSearchParams.js.map +1 -1
  242. package/dist/database/types.d.ts +10 -0
  243. package/dist/database/types.d.ts.map +1 -1
  244. package/dist/database/types.js.map +1 -1
  245. package/dist/email/consoleEmailAdapter.d.ts +3 -0
  246. package/dist/email/consoleEmailAdapter.d.ts.map +1 -0
  247. package/dist/email/consoleEmailAdapter.js +16 -0
  248. package/dist/email/consoleEmailAdapter.js.map +1 -0
  249. package/dist/email/defaults.d.ts +2 -2
  250. package/dist/email/defaults.d.ts.map +1 -1
  251. package/dist/email/defaults.js +3 -3
  252. package/dist/email/defaults.js.map +1 -1
  253. package/dist/email/getStringifiedToAddress.d.ts +3 -0
  254. package/dist/email/getStringifiedToAddress.d.ts.map +1 -0
  255. package/dist/email/getStringifiedToAddress.js +20 -0
  256. package/dist/email/getStringifiedToAddress.js.map +1 -0
  257. package/dist/email/sendEmail.d.ts +3 -2
  258. package/dist/email/sendEmail.d.ts.map +1 -1
  259. package/dist/email/sendEmail.js +8 -4
  260. package/dist/email/sendEmail.js.map +1 -1
  261. package/dist/email/types.d.ts +25 -18
  262. package/dist/email/types.d.ts.map +1 -1
  263. package/dist/email/types.js +5 -1
  264. package/dist/email/types.js.map +1 -1
  265. package/dist/errors/APIError.js.map +1 -1
  266. package/dist/errors/AuthenticationError.js +2 -2
  267. package/dist/errors/AuthenticationError.js.map +1 -1
  268. package/dist/errors/DuplicateCollection.js.map +1 -1
  269. package/dist/errors/DuplicateFieldName.js.map +1 -1
  270. package/dist/errors/DuplicateGlobal.js.map +1 -1
  271. package/dist/errors/ErrorDeletingFile.js +2 -2
  272. package/dist/errors/ErrorDeletingFile.js.map +1 -1
  273. package/dist/errors/FileUploadError.js +2 -2
  274. package/dist/errors/FileUploadError.js.map +1 -1
  275. package/dist/errors/Forbidden.js +2 -2
  276. package/dist/errors/Forbidden.js.map +1 -1
  277. package/dist/errors/InvalidConfiguration.js.map +1 -1
  278. package/dist/errors/InvalidFieldName.js.map +1 -1
  279. package/dist/errors/InvalidFieldRelationship.js.map +1 -1
  280. package/dist/errors/InvalidSchema.js.map +1 -1
  281. package/dist/errors/LockedAuth.js +2 -2
  282. package/dist/errors/LockedAuth.js.map +1 -1
  283. package/dist/errors/MissingCollectionLabel.js.map +1 -1
  284. package/dist/errors/MissingEditorProp.js.map +1 -1
  285. package/dist/errors/MissingFieldInputOptions.js.map +1 -1
  286. package/dist/errors/MissingFieldType.js.map +1 -1
  287. package/dist/errors/MissingFile.js +2 -2
  288. package/dist/errors/MissingFile.js.map +1 -1
  289. package/dist/errors/NotFound.js +2 -2
  290. package/dist/errors/NotFound.js.map +1 -1
  291. package/dist/errors/QueryError.js.map +1 -1
  292. package/dist/errors/TimestampsRequired.js.map +1 -1
  293. package/dist/errors/UnathorizedError.js +2 -2
  294. package/dist/errors/UnathorizedError.js.map +1 -1
  295. package/dist/errors/ValidationError.js +2 -2
  296. package/dist/errors/ValidationError.js.map +1 -1
  297. package/dist/errors/index.js.map +1 -1
  298. package/dist/errors/types.js.map +1 -1
  299. package/dist/exports/auth.d.ts +1 -0
  300. package/dist/exports/auth.d.ts.map +1 -1
  301. package/dist/exports/auth.js +1 -0
  302. package/dist/exports/auth.js.map +1 -1
  303. package/dist/exports/components/utilities.js.map +1 -1
  304. package/dist/exports/config.js.map +1 -1
  305. package/dist/exports/database.d.ts +1 -1
  306. package/dist/exports/database.d.ts.map +1 -1
  307. package/dist/exports/database.js.map +1 -1
  308. package/dist/exports/errors.js.map +1 -1
  309. package/dist/exports/fields/index.js.map +1 -1
  310. package/dist/exports/fields/validations.js.map +1 -1
  311. package/dist/exports/i18n/ar.d.ts +2 -0
  312. package/dist/exports/i18n/ar.d.ts.map +1 -0
  313. package/dist/exports/i18n/ar.js +3 -0
  314. package/dist/exports/i18n/ar.js.map +1 -0
  315. package/dist/exports/i18n/az.d.ts +2 -0
  316. package/dist/exports/i18n/az.d.ts.map +1 -0
  317. package/dist/exports/i18n/az.js +3 -0
  318. package/dist/exports/i18n/az.js.map +1 -0
  319. package/dist/exports/i18n/bg.d.ts +2 -0
  320. package/dist/exports/i18n/bg.d.ts.map +1 -0
  321. package/dist/exports/i18n/bg.js +3 -0
  322. package/dist/exports/i18n/bg.js.map +1 -0
  323. package/dist/exports/i18n/cs.d.ts +2 -0
  324. package/dist/exports/i18n/cs.d.ts.map +1 -0
  325. package/dist/exports/i18n/cs.js +3 -0
  326. package/dist/exports/i18n/cs.js.map +1 -0
  327. package/dist/exports/i18n/de.d.ts +2 -0
  328. package/dist/exports/i18n/de.d.ts.map +1 -0
  329. package/dist/exports/i18n/de.js +3 -0
  330. package/dist/exports/i18n/de.js.map +1 -0
  331. package/dist/exports/i18n/en.d.ts +2 -0
  332. package/dist/exports/i18n/en.d.ts.map +1 -0
  333. package/dist/exports/i18n/en.js +3 -0
  334. package/dist/exports/i18n/en.js.map +1 -0
  335. package/dist/exports/i18n/es.d.ts +2 -0
  336. package/dist/exports/i18n/es.d.ts.map +1 -0
  337. package/dist/exports/i18n/es.js +3 -0
  338. package/dist/exports/i18n/es.js.map +1 -0
  339. package/dist/exports/i18n/fa.d.ts +2 -0
  340. package/dist/exports/i18n/fa.d.ts.map +1 -0
  341. package/dist/exports/i18n/fa.js +3 -0
  342. package/dist/exports/i18n/fa.js.map +1 -0
  343. package/dist/exports/i18n/fr.d.ts +2 -0
  344. package/dist/exports/i18n/fr.d.ts.map +1 -0
  345. package/dist/exports/i18n/fr.js +3 -0
  346. package/dist/exports/i18n/fr.js.map +1 -0
  347. package/dist/exports/i18n/hr.d.ts +2 -0
  348. package/dist/exports/i18n/hr.d.ts.map +1 -0
  349. package/dist/exports/i18n/hr.js +3 -0
  350. package/dist/exports/i18n/hr.js.map +1 -0
  351. package/dist/exports/i18n/hu.d.ts +2 -0
  352. package/dist/exports/i18n/hu.d.ts.map +1 -0
  353. package/dist/exports/i18n/hu.js +3 -0
  354. package/dist/exports/i18n/hu.js.map +1 -0
  355. package/dist/exports/i18n/it.d.ts +2 -0
  356. package/dist/exports/i18n/it.d.ts.map +1 -0
  357. package/dist/exports/i18n/it.js +3 -0
  358. package/dist/exports/i18n/it.js.map +1 -0
  359. package/dist/exports/i18n/ja.d.ts +2 -0
  360. package/dist/exports/i18n/ja.d.ts.map +1 -0
  361. package/dist/exports/i18n/ja.js +3 -0
  362. package/dist/exports/i18n/ja.js.map +1 -0
  363. package/dist/exports/i18n/ko.d.ts +2 -0
  364. package/dist/exports/i18n/ko.d.ts.map +1 -0
  365. package/dist/exports/i18n/ko.js +3 -0
  366. package/dist/exports/i18n/ko.js.map +1 -0
  367. package/dist/exports/i18n/my.d.ts +2 -0
  368. package/dist/exports/i18n/my.d.ts.map +1 -0
  369. package/dist/exports/i18n/my.js +3 -0
  370. package/dist/exports/i18n/my.js.map +1 -0
  371. package/dist/exports/i18n/nb.d.ts +2 -0
  372. package/dist/exports/i18n/nb.d.ts.map +1 -0
  373. package/dist/exports/i18n/nb.js +3 -0
  374. package/dist/exports/i18n/nb.js.map +1 -0
  375. package/dist/exports/i18n/nl.d.ts +2 -0
  376. package/dist/exports/i18n/nl.d.ts.map +1 -0
  377. package/dist/exports/i18n/nl.js +3 -0
  378. package/dist/exports/i18n/nl.js.map +1 -0
  379. package/dist/exports/i18n/pl.d.ts +2 -0
  380. package/dist/exports/i18n/pl.d.ts.map +1 -0
  381. package/dist/exports/i18n/pl.js +3 -0
  382. package/dist/exports/i18n/pl.js.map +1 -0
  383. package/dist/exports/i18n/pt.d.ts +2 -0
  384. package/dist/exports/i18n/pt.d.ts.map +1 -0
  385. package/dist/exports/i18n/pt.js +3 -0
  386. package/dist/exports/i18n/pt.js.map +1 -0
  387. package/dist/exports/i18n/ro.d.ts +2 -0
  388. package/dist/exports/i18n/ro.d.ts.map +1 -0
  389. package/dist/exports/i18n/ro.js +3 -0
  390. package/dist/exports/i18n/ro.js.map +1 -0
  391. package/dist/exports/i18n/rs.d.ts +2 -0
  392. package/dist/exports/i18n/rs.d.ts.map +1 -0
  393. package/dist/exports/i18n/rs.js +3 -0
  394. package/dist/exports/i18n/rs.js.map +1 -0
  395. package/dist/exports/i18n/rsLatin.d.ts +2 -0
  396. package/dist/exports/i18n/rsLatin.d.ts.map +1 -0
  397. package/dist/exports/i18n/rsLatin.js +3 -0
  398. package/dist/exports/i18n/rsLatin.js.map +1 -0
  399. package/dist/exports/i18n/ru.d.ts +2 -0
  400. package/dist/exports/i18n/ru.d.ts.map +1 -0
  401. package/dist/exports/i18n/ru.js +3 -0
  402. package/dist/exports/i18n/ru.js.map +1 -0
  403. package/dist/exports/i18n/sv.d.ts +2 -0
  404. package/dist/exports/i18n/sv.d.ts.map +1 -0
  405. package/dist/exports/i18n/sv.js +3 -0
  406. package/dist/exports/i18n/sv.js.map +1 -0
  407. package/dist/exports/i18n/th.d.ts +2 -0
  408. package/dist/exports/i18n/th.d.ts.map +1 -0
  409. package/dist/exports/i18n/th.js +3 -0
  410. package/dist/exports/i18n/th.js.map +1 -0
  411. package/dist/exports/i18n/tr.d.ts +2 -0
  412. package/dist/exports/i18n/tr.d.ts.map +1 -0
  413. package/dist/exports/i18n/tr.js +3 -0
  414. package/dist/exports/i18n/tr.js.map +1 -0
  415. package/dist/exports/i18n/uk.d.ts +2 -0
  416. package/dist/exports/i18n/uk.d.ts.map +1 -0
  417. package/dist/exports/i18n/uk.js +3 -0
  418. package/dist/exports/i18n/uk.js.map +1 -0
  419. package/dist/exports/i18n/vi.d.ts +2 -0
  420. package/dist/exports/i18n/vi.d.ts.map +1 -0
  421. package/dist/exports/i18n/vi.js +3 -0
  422. package/dist/exports/i18n/vi.js.map +1 -0
  423. package/dist/exports/i18n/zh.d.ts +2 -0
  424. package/dist/exports/i18n/zh.d.ts.map +1 -0
  425. package/dist/exports/i18n/zh.js +3 -0
  426. package/dist/exports/i18n/zh.js.map +1 -0
  427. package/dist/exports/i18n/zhTw.d.ts +2 -0
  428. package/dist/exports/i18n/zhTw.d.ts.map +1 -0
  429. package/dist/exports/i18n/zhTw.js +3 -0
  430. package/dist/exports/i18n/zhTw.js.map +1 -0
  431. package/dist/exports/node.d.ts +4 -0
  432. package/dist/exports/node.d.ts.map +1 -1
  433. package/dist/exports/node.js +3 -0
  434. package/dist/exports/node.js.map +1 -1
  435. package/dist/exports/operations.d.ts +1 -0
  436. package/dist/exports/operations.d.ts.map +1 -1
  437. package/dist/exports/operations.js +1 -0
  438. package/dist/exports/operations.js.map +1 -1
  439. package/dist/exports/types.d.ts +1 -0
  440. package/dist/exports/types.d.ts.map +1 -1
  441. package/dist/exports/types.js.map +1 -1
  442. package/dist/exports/uploads.js.map +1 -1
  443. package/dist/exports/utilities.d.ts +4 -3
  444. package/dist/exports/utilities.d.ts.map +1 -1
  445. package/dist/exports/utilities.js +4 -4
  446. package/dist/exports/utilities.js.map +1 -1
  447. package/dist/exports/versions.js.map +1 -1
  448. package/dist/fields/baseFields/baseBlockFields.d.ts +2 -2
  449. package/dist/fields/baseFields/baseBlockFields.d.ts.map +1 -1
  450. package/dist/fields/baseFields/baseBlockFields.js.map +1 -1
  451. package/dist/fields/baseFields/baseIDField.js.map +1 -1
  452. package/dist/fields/config/client.d.ts +160 -128
  453. package/dist/fields/config/client.d.ts.map +1 -1
  454. package/dist/fields/config/client.js +33 -7
  455. package/dist/fields/config/client.js.map +1 -1
  456. package/dist/fields/config/sanitize.js.map +1 -1
  457. package/dist/fields/config/sanitize.spec.js +4 -1
  458. package/dist/fields/config/sanitize.spec.js.map +1 -1
  459. package/dist/fields/config/schema.d.ts.map +1 -1
  460. package/dist/fields/config/schema.js +10 -4
  461. package/dist/fields/config/schema.js.map +1 -1
  462. package/dist/fields/config/types.d.ts +62 -53
  463. package/dist/fields/config/types.d.ts.map +1 -1
  464. package/dist/fields/config/types.js.map +1 -1
  465. package/dist/fields/getDefaultValue.d.ts +2 -2
  466. package/dist/fields/getDefaultValue.d.ts.map +1 -1
  467. package/dist/fields/getDefaultValue.js.map +1 -1
  468. package/dist/fields/hooks/afterChange/index.js.map +1 -1
  469. package/dist/fields/hooks/afterChange/promise.js.map +1 -1
  470. package/dist/fields/hooks/afterChange/traverseFields.js.map +1 -1
  471. package/dist/fields/hooks/afterRead/index.js.map +1 -1
  472. package/dist/fields/hooks/afterRead/promise.js.map +1 -1
  473. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.js.map +1 -1
  474. package/dist/fields/hooks/afterRead/traverseFields.js.map +1 -1
  475. package/dist/fields/hooks/beforeChange/beforeDuplicate.js.map +1 -1
  476. package/dist/fields/hooks/beforeChange/cloneDataFromOriginalDoc.js.map +1 -1
  477. package/dist/fields/hooks/beforeChange/getExistingRowDoc.js.map +1 -1
  478. package/dist/fields/hooks/beforeChange/index.js.map +1 -1
  479. package/dist/fields/hooks/beforeChange/promise.js.map +1 -1
  480. package/dist/fields/hooks/beforeChange/traverseFields.js.map +1 -1
  481. package/dist/fields/hooks/beforeValidate/index.js.map +1 -1
  482. package/dist/fields/hooks/beforeValidate/promise.js.map +1 -1
  483. package/dist/fields/hooks/beforeValidate/traverseFields.js.map +1 -1
  484. package/dist/fields/mergeBaseFields.js.map +1 -1
  485. package/dist/fields/setDefaultBeforeDuplicate.d.ts.map +1 -1
  486. package/dist/fields/setDefaultBeforeDuplicate.js +2 -6
  487. package/dist/fields/setDefaultBeforeDuplicate.js.map +1 -1
  488. package/dist/fields/sortableFieldTypes.js.map +1 -1
  489. package/dist/fields/validations.d.ts +6 -4
  490. package/dist/fields/validations.d.ts.map +1 -1
  491. package/dist/fields/validations.js +49 -10
  492. package/dist/fields/validations.js.map +1 -1
  493. package/dist/fields/validations.spec.js +6 -1
  494. package/dist/fields/validations.spec.js.map +1 -1
  495. package/dist/globals/config/client.d.ts +10 -3
  496. package/dist/globals/config/client.d.ts.map +1 -1
  497. package/dist/globals/config/client.js +11 -4
  498. package/dist/globals/config/client.js.map +1 -1
  499. package/dist/globals/config/sanitize.d.ts.map +1 -1
  500. package/dist/globals/config/sanitize.js +2 -7
  501. package/dist/globals/config/sanitize.js.map +1 -1
  502. package/dist/globals/config/schema.d.ts.map +1 -1
  503. package/dist/globals/config/schema.js +2 -1
  504. package/dist/globals/config/schema.js.map +1 -1
  505. package/dist/globals/config/types.d.ts +4 -3
  506. package/dist/globals/config/types.d.ts.map +1 -1
  507. package/dist/globals/config/types.js.map +1 -1
  508. package/dist/globals/operations/docAccess.js.map +1 -1
  509. package/dist/globals/operations/findOne.d.ts +0 -1
  510. package/dist/globals/operations/findOne.d.ts.map +1 -1
  511. package/dist/globals/operations/findOne.js.map +1 -1
  512. package/dist/globals/operations/findVersionByID.js.map +1 -1
  513. package/dist/globals/operations/findVersions.js.map +1 -1
  514. package/dist/globals/operations/local/findOne.d.ts +2 -2
  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 +2 -2
  518. package/dist/globals/operations/local/findVersionByID.d.ts.map +1 -1
  519. package/dist/globals/operations/local/findVersionByID.js +1 -0
  520. package/dist/globals/operations/local/findVersionByID.js.map +1 -1
  521. package/dist/globals/operations/local/findVersions.d.ts +2 -2
  522. package/dist/globals/operations/local/findVersions.d.ts.map +1 -1
  523. package/dist/globals/operations/local/findVersions.js.map +1 -1
  524. package/dist/globals/operations/local/index.js.map +1 -1
  525. package/dist/globals/operations/local/restoreVersion.d.ts +2 -2
  526. package/dist/globals/operations/local/restoreVersion.d.ts.map +1 -1
  527. package/dist/globals/operations/local/restoreVersion.js.map +1 -1
  528. package/dist/globals/operations/local/update.d.ts +2 -2
  529. package/dist/globals/operations/local/update.d.ts.map +1 -1
  530. package/dist/globals/operations/local/update.js.map +1 -1
  531. package/dist/globals/operations/restoreVersion.js.map +1 -1
  532. package/dist/globals/operations/update.js.map +1 -1
  533. package/dist/index.d.ts +17 -6
  534. package/dist/index.d.ts.map +1 -1
  535. package/dist/index.js +32 -14
  536. package/dist/index.js.map +1 -1
  537. package/dist/preferences/deleteUserPreferences.js.map +1 -1
  538. package/dist/preferences/operations/delete.js.map +1 -1
  539. package/dist/preferences/operations/findOne.js.map +1 -1
  540. package/dist/preferences/operations/update.d.ts +1 -1
  541. package/dist/preferences/operations/update.js.map +1 -1
  542. package/dist/preferences/preferencesCollection.js.map +1 -1
  543. package/dist/preferences/requestHandlers/delete.js.map +1 -1
  544. package/dist/preferences/requestHandlers/findOne.js.map +1 -1
  545. package/dist/preferences/requestHandlers/update.js.map +1 -1
  546. package/dist/preferences/types.d.ts +1 -2
  547. package/dist/preferences/types.d.ts.map +1 -1
  548. package/dist/preferences/types.js.map +1 -1
  549. package/dist/translations/getLocalI18n.d.ts +3 -2
  550. package/dist/translations/getLocalI18n.d.ts.map +1 -1
  551. package/dist/translations/getLocalI18n.js +2 -4
  552. package/dist/translations/getLocalI18n.js.map +1 -1
  553. package/dist/types/constants.js.map +1 -1
  554. package/dist/types/index.d.ts +5 -5
  555. package/dist/types/index.d.ts.map +1 -1
  556. package/dist/types/index.js.map +1 -1
  557. package/dist/uploads/canResizeImage.js.map +1 -1
  558. package/dist/uploads/cropImage.js.map +1 -1
  559. package/dist/uploads/deleteAssociatedFiles.js.map +1 -1
  560. package/dist/uploads/docWithFilenameExists.js.map +1 -1
  561. package/dist/uploads/fileExists.js.map +1 -1
  562. package/dist/uploads/formatFilesize.js.map +1 -1
  563. package/dist/uploads/generateFileData.d.ts.map +1 -1
  564. package/dist/uploads/generateFileData.js +3 -2
  565. package/dist/uploads/generateFileData.js.map +1 -1
  566. package/dist/uploads/getBaseFields.d.ts.map +1 -1
  567. package/dist/uploads/getBaseFields.js +5 -13
  568. package/dist/uploads/getBaseFields.js.map +1 -1
  569. package/dist/uploads/getExternalFile.d.ts +3 -2
  570. package/dist/uploads/getExternalFile.d.ts.map +1 -1
  571. package/dist/uploads/getExternalFile.js +5 -4
  572. package/dist/uploads/getExternalFile.js.map +1 -1
  573. package/dist/uploads/getFileByPath.js.map +1 -1
  574. package/dist/uploads/getImageSize.d.ts +1 -1
  575. package/dist/uploads/getImageSize.d.ts.map +1 -1
  576. package/dist/uploads/getImageSize.js +19 -5
  577. package/dist/uploads/getImageSize.js.map +1 -1
  578. package/dist/uploads/getSafeFilename.js.map +1 -1
  579. package/dist/uploads/imageResizer.js.map +1 -1
  580. package/dist/uploads/isImage.js.map +1 -1
  581. package/dist/uploads/mimeTypeValidator.js.map +1 -1
  582. package/dist/uploads/mimeTypeValidator.spec.js.map +1 -1
  583. package/dist/uploads/saveBufferToFile.js.map +1 -1
  584. package/dist/uploads/tempFile.d.ts +7 -0
  585. package/dist/uploads/tempFile.d.ts.map +1 -0
  586. package/dist/uploads/tempFile.js +39 -0
  587. package/dist/uploads/tempFile.js.map +1 -0
  588. package/dist/uploads/types.d.ts +6 -0
  589. package/dist/uploads/types.d.ts.map +1 -1
  590. package/dist/uploads/types.js.map +1 -1
  591. package/dist/uploads/unlinkTempFiles.js.map +1 -1
  592. package/dist/uploads/uploadFiles.js.map +1 -1
  593. package/dist/utilities/checkDuplicateCollections.js.map +1 -1
  594. package/dist/utilities/combineMerge.js.map +1 -1
  595. package/dist/utilities/commitTransaction.js.map +1 -1
  596. package/dist/utilities/configToJSONSchema.d.ts.map +1 -1
  597. package/dist/utilities/configToJSONSchema.js +53 -1
  598. package/dist/utilities/configToJSONSchema.js.map +1 -1
  599. package/dist/utilities/configToJSONSchema.spec.js.map +1 -1
  600. package/dist/utilities/convertData.js.map +1 -1
  601. package/dist/utilities/createArrayFromCommaDelineated.js.map +1 -1
  602. package/dist/utilities/createLocalReq.d.ts +1 -1
  603. package/dist/utilities/createLocalReq.d.ts.map +1 -1
  604. package/dist/utilities/createLocalReq.js +2 -2
  605. package/dist/utilities/createLocalReq.js.map +1 -1
  606. package/dist/utilities/deepCopyObject.js.map +1 -1
  607. package/dist/utilities/deepMerge.js.map +1 -1
  608. package/dist/utilities/fieldSchemaToJSON.js.map +1 -1
  609. package/dist/utilities/flattenTopLevelFields.js.map +1 -1
  610. package/dist/utilities/formatLabels.js.map +1 -1
  611. package/dist/utilities/formatLabels.spec.js.map +1 -1
  612. package/dist/utilities/getCSSVariable.js.map +1 -1
  613. package/dist/utilities/getCollectionIDFieldTypes.js.map +1 -1
  614. package/dist/utilities/getEntityPolicies.js.map +1 -1
  615. package/dist/utilities/getObjectDotNotation.js.map +1 -1
  616. package/dist/utilities/getUniqueListBy.js.map +1 -1
  617. package/dist/utilities/importWithoutClientFiles.d.ts.map +1 -1
  618. package/dist/utilities/importWithoutClientFiles.js +8 -5
  619. package/dist/utilities/importWithoutClientFiles.js.map +1 -1
  620. package/dist/utilities/initTransaction.js.map +1 -1
  621. package/dist/utilities/isEntityHidden.d.ts +2 -2
  622. package/dist/utilities/isEntityHidden.d.ts.map +1 -1
  623. package/dist/utilities/isEntityHidden.js.map +1 -1
  624. package/dist/utilities/isNumber.js.map +1 -1
  625. package/dist/utilities/isPlainObject.js.map +1 -1
  626. package/dist/utilities/isReactComponent.d.ts +2 -0
  627. package/dist/utilities/isReactComponent.d.ts.map +1 -1
  628. package/dist/utilities/isReactComponent.js +8 -2
  629. package/dist/utilities/isReactComponent.js.map +1 -1
  630. package/dist/utilities/isValidID.js.map +1 -1
  631. package/dist/utilities/isolateObjectProperty.js.map +1 -1
  632. package/dist/utilities/killTransaction.js.map +1 -1
  633. package/dist/utilities/logger.js.map +1 -1
  634. package/dist/utilities/mapAsync.js.map +1 -1
  635. package/dist/utilities/mergeListSearchAndWhere.js.map +1 -1
  636. package/dist/utilities/overwriteMerge.js.map +1 -1
  637. package/dist/utilities/parseCookies.js.map +1 -1
  638. package/dist/utilities/sanitizeInternalFields.js.map +1 -1
  639. package/dist/utilities/setsAreEqual.js.map +1 -1
  640. package/dist/utilities/telemetry/events/adminInit.d.ts +2 -2
  641. package/dist/utilities/telemetry/events/adminInit.d.ts.map +1 -1
  642. package/dist/utilities/telemetry/events/adminInit.js.map +1 -1
  643. package/dist/utilities/telemetry/events/serverInit.js.map +1 -1
  644. package/dist/utilities/telemetry/index.d.ts +3 -0
  645. package/dist/utilities/telemetry/index.d.ts.map +1 -1
  646. package/dist/utilities/telemetry/index.js +32 -6
  647. package/dist/utilities/telemetry/index.js.map +1 -1
  648. package/dist/utilities/telemetry/oneWayHash.js.map +1 -1
  649. package/dist/utilities/timestamp.js.map +1 -1
  650. package/dist/utilities/toKebabCase.js.map +1 -1
  651. package/dist/utilities/wait.js.map +1 -1
  652. package/dist/utilities/wordBoundariesRegex.js.map +1 -1
  653. package/dist/versions/baseFields.d.ts +3 -1
  654. package/dist/versions/baseFields.d.ts.map +1 -1
  655. package/dist/versions/baseFields.js +3 -9
  656. package/dist/versions/baseFields.js.map +1 -1
  657. package/dist/versions/buildCollectionFields.js.map +1 -1
  658. package/dist/versions/buildGlobalFields.js.map +1 -1
  659. package/dist/versions/deleteCollectionVersions.js.map +1 -1
  660. package/dist/versions/drafts/appendVersionToQueryKey.js.map +1 -1
  661. package/dist/versions/drafts/getQueryDraftsSort.js.map +1 -1
  662. package/dist/versions/drafts/replaceWithDraftIfAvailable.js.map +1 -1
  663. package/dist/versions/enforceMaxVersions.js.map +1 -1
  664. package/dist/versions/getLatestCollectionVersion.js.map +1 -1
  665. package/dist/versions/getLatestGlobalVersion.js.map +1 -1
  666. package/dist/versions/saveVersion.js +1 -1
  667. package/dist/versions/saveVersion.js.map +1 -1
  668. package/dist/versions/types.js.map +1 -1
  669. package/package.json +15 -6
  670. package/src/index.ts +42 -18
  671. package/auth.d.ts +0 -6
  672. package/auth.js +0 -6
  673. package/config.d.ts +0 -14
  674. package/config.js +0 -14
  675. package/database.d.ts +0 -23
  676. package/database.js +0 -22
  677. package/dist/email/build.d.ts +0 -5
  678. package/dist/email/build.d.ts.map +0 -1
  679. package/dist/email/build.js +0 -63
  680. package/dist/email/build.js.map +0 -1
  681. package/dist/email/mockHandler.d.ts +0 -5
  682. package/dist/email/mockHandler.d.ts.map +0 -1
  683. package/dist/email/mockHandler.js +0 -24
  684. package/dist/email/mockHandler.js.map +0 -1
  685. package/dist/translations/extractTranslations.d.ts +0 -2
  686. package/dist/translations/extractTranslations.d.ts.map +0 -1
  687. package/dist/translations/extractTranslations.js +0 -20
  688. package/dist/translations/extractTranslations.js.map +0 -1
  689. package/dist/utilities/getIDType.d.ts +0 -4
  690. package/dist/utilities/getIDType.d.ts.map +0 -1
  691. package/dist/utilities/getIDType.js +0 -8
  692. package/dist/utilities/getIDType.js.map +0 -1
  693. package/errors.d.ts +0 -2
  694. package/errors.js +0 -3
  695. package/node.d.ts +0 -2
  696. package/node.js +0 -3
  697. package/operations.d.ts +0 -30
  698. package/operations.js +0 -31
  699. package/types.d.ts +0 -17
  700. package/types.js +0 -5
  701. package/uploads.d.ts +0 -2
  702. package/uploads.js +0 -3
  703. package/utilities.d.ts +0 -33
  704. package/utilities.js +0 -34
  705. package/versions.d.ts +0 -9
  706. package/versions.js +0 -9
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/fields/setDefaultBeforeDuplicate.ts"],"sourcesContent":["// default beforeDuplicate hook for required and unique fields\nimport type { FieldAffectingData, FieldHook } from './config/types.js'\n\nimport { extractTranslations } from '../translations/extractTranslations.js'\n\nconst copyTranslations = extractTranslations(['general:copy'])\n\nconst unique: FieldHook = ({ value }) => (typeof value === 'string' ? `${value} - Copy` : undefined)\nconst localizedUnique: FieldHook = ({ req, value }) =>\n value ? `${value} - ${copyTranslations?.[req.locale]?.['general:copy'] ?? 'Copy'}` : undefined\nconst uniqueRequired: FieldHook = ({ value }) => `${value} - Copy`\nconst localizedUniqueRequired: FieldHook = ({ req, value }) =>\n `${value} - ${copyTranslations?.[req.locale]?.['general:copy'] ?? 'Copy'}`\n\nexport const setDefaultBeforeDuplicate = (field: FieldAffectingData) => {\n if (\n (('required' in field && field.required) || field.unique) &&\n (!field.hooks?.beforeDuplicate ||\n (Array.isArray(field.hooks.beforeDuplicate) && field.hooks.beforeDuplicate.length === 0))\n ) {\n if ((field.type === 'text' || field.type === 'textarea') && field.required && field.unique) {\n field.hooks.beforeDuplicate = [field.localized ? localizedUniqueRequired : uniqueRequired]\n } else if (field.unique) {\n field.hooks.beforeDuplicate = [field.localized ? localizedUnique : unique]\n }\n }\n}\n"],"names":["extractTranslations","copyTranslations","unique","value","undefined","localizedUnique","req","locale","uniqueRequired","localizedUniqueRequired","setDefaultBeforeDuplicate","field","required","hooks","beforeDuplicate","Array","isArray","length","type","localized"],"mappings":"AAAA,8DAA8D;AAG9D,SAASA,mBAAmB,QAAQ,yCAAwC;AAE5E,MAAMC,mBAAmBD,oBAAoB;IAAC;CAAe;AAE7D,MAAME,SAAoB,CAAC,EAAEC,KAAK,EAAE,GAAM,OAAOA,UAAU,WAAW,CAAC,EAAEA,MAAM,OAAO,CAAC,GAAGC;AAC1F,MAAMC,kBAA6B,CAAC,EAAEC,GAAG,EAAEH,KAAK,EAAE,GAChDA,QAAQ,CAAC,EAAEA,MAAM,GAAG,EAAEF,kBAAkB,CAACK,IAAIC,MAAM,CAAC,EAAE,CAAC,eAAe,IAAI,OAAO,CAAC,GAAGH;AACvF,MAAMI,iBAA4B,CAAC,EAAEL,KAAK,EAAE,GAAK,CAAC,EAAEA,MAAM,OAAO,CAAC;AAClE,MAAMM,0BAAqC,CAAC,EAAEH,GAAG,EAAEH,KAAK,EAAE,GACxD,CAAC,EAAEA,MAAM,GAAG,EAAEF,kBAAkB,CAACK,IAAIC,MAAM,CAAC,EAAE,CAAC,eAAe,IAAI,OAAO,CAAC;AAE5E,OAAO,MAAMG,4BAA4B,CAACC;IACxC,IACE,AAAC,CAAA,AAAC,cAAcA,SAASA,MAAMC,QAAQ,IAAKD,MAAMT,MAAM,AAAD,KACtD,CAAA,CAACS,MAAME,KAAK,EAAEC,mBACZC,MAAMC,OAAO,CAACL,MAAME,KAAK,CAACC,eAAe,KAAKH,MAAME,KAAK,CAACC,eAAe,CAACG,MAAM,KAAK,CAAC,GACzF;QACA,IAAI,AAACN,CAAAA,MAAMO,IAAI,KAAK,UAAUP,MAAMO,IAAI,KAAK,UAAS,KAAMP,MAAMC,QAAQ,IAAID,MAAMT,MAAM,EAAE;YAC1FS,MAAME,KAAK,CAACC,eAAe,GAAG;gBAACH,MAAMQ,SAAS,GAAGV,0BAA0BD;aAAe;QAC5F,OAAO,IAAIG,MAAMT,MAAM,EAAE;YACvBS,MAAME,KAAK,CAACC,eAAe,GAAG;gBAACH,MAAMQ,SAAS,GAAGd,kBAAkBH;aAAO;QAC5E;IACF;AACF,EAAC"}
1
+ {"version":3,"sources":["../../src/fields/setDefaultBeforeDuplicate.ts"],"sourcesContent":["// default beforeDuplicate hook for required and unique fields\nimport type { FieldAffectingData, FieldHook } from './config/types.js'\n\nconst unique: FieldHook = ({ value }) => (typeof value === 'string' ? `${value} - Copy` : undefined)\nconst localizedUnique: FieldHook = ({ req, value }) =>\n value ? `${value} - ${req?.t('general:copy') ?? 'Copy'}` : undefined\nconst uniqueRequired: FieldHook = ({ value }) => `${value} - Copy`\nconst localizedUniqueRequired: FieldHook = ({ req, value }) =>\n `${value} - ${req?.t('general:copy') ?? 'Copy'}`\n\nexport const setDefaultBeforeDuplicate = (field: FieldAffectingData) => {\n if (\n (('required' in field && field.required) || field.unique) &&\n (!field.hooks?.beforeDuplicate ||\n (Array.isArray(field.hooks.beforeDuplicate) && field.hooks.beforeDuplicate.length === 0))\n ) {\n if ((field.type === 'text' || field.type === 'textarea') && field.required && field.unique) {\n field.hooks.beforeDuplicate = [field.localized ? localizedUniqueRequired : uniqueRequired]\n } else if (field.unique) {\n field.hooks.beforeDuplicate = [field.localized ? localizedUnique : unique]\n }\n }\n}\n"],"names":["unique","value","undefined","localizedUnique","req","t","uniqueRequired","localizedUniqueRequired","setDefaultBeforeDuplicate","field","required","hooks","beforeDuplicate","Array","isArray","length","type","localized"],"rangeMappings":";;;;;;;;;;;;;;;;;","mappings":"AAAA,8DAA8D;AAG9D,MAAMA,SAAoB,CAAC,EAAEC,KAAK,EAAE,GAAM,OAAOA,UAAU,WAAW,CAAC,EAAEA,MAAM,OAAO,CAAC,GAAGC;AAC1F,MAAMC,kBAA6B,CAAC,EAAEC,GAAG,EAAEH,KAAK,EAAE,GAChDA,QAAQ,CAAC,EAAEA,MAAM,GAAG,EAAEG,KAAKC,EAAE,mBAAmB,OAAO,CAAC,GAAGH;AAC7D,MAAMI,iBAA4B,CAAC,EAAEL,KAAK,EAAE,GAAK,CAAC,EAAEA,MAAM,OAAO,CAAC;AAClE,MAAMM,0BAAqC,CAAC,EAAEH,GAAG,EAAEH,KAAK,EAAE,GACxD,CAAC,EAAEA,MAAM,GAAG,EAAEG,KAAKC,EAAE,mBAAmB,OAAO,CAAC;AAElD,OAAO,MAAMG,4BAA4B,CAACC;IACxC,IACE,AAAC,CAAA,AAAC,cAAcA,SAASA,MAAMC,QAAQ,IAAKD,MAAMT,MAAM,AAAD,KACtD,CAAA,CAACS,MAAME,KAAK,EAAEC,mBACZC,MAAMC,OAAO,CAACL,MAAME,KAAK,CAACC,eAAe,KAAKH,MAAME,KAAK,CAACC,eAAe,CAACG,MAAM,KAAK,CAAC,GACzF;QACA,IAAI,AAACN,CAAAA,MAAMO,IAAI,KAAK,UAAUP,MAAMO,IAAI,KAAK,UAAS,KAAMP,MAAMC,QAAQ,IAAID,MAAMT,MAAM,EAAE;YAC1FS,MAAME,KAAK,CAACC,eAAe,GAAG;gBAACH,MAAMQ,SAAS,GAAGV,0BAA0BD;aAAe;QAC5F,OAAO,IAAIG,MAAMT,MAAM,EAAE;YACvBS,MAAME,KAAK,CAACC,eAAe,GAAG;gBAACH,MAAMQ,SAAS,GAAGd,kBAAkBH;aAAO;QAC5E;IACF;AACF,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/fields/sortableFieldTypes.ts"],"sourcesContent":["export default ['text', 'textarea', 'code', 'json', 'number', 'email', 'radio', 'select', 'date']\n"],"names":[],"mappings":"AAAA,eAAe;IAAC;IAAQ;IAAY;IAAQ;IAAQ;IAAU;IAAS;IAAS;IAAU;CAAO,CAAA"}
1
+ {"version":3,"sources":["../../src/fields/sortableFieldTypes.ts"],"sourcesContent":["export default ['text', 'textarea', 'code', 'json', 'number', 'email', 'radio', 'select', 'date']\n"],"names":[],"rangeMappings":";;;;;;;;;;","mappings":"AAAA,eAAe;IAAC;IAAQ;IAAY;IAAQ;IAAQ;IAAU;IAAS;IAAS;IAAU;CAAO,CAAA"}
@@ -29,11 +29,12 @@ declare const _default: {
29
29
  admin?: {
30
30
  className?: string;
31
31
  components?: {
32
- Cell?: import("react").ComponentType<any>;
33
- Field?: import("react").ComponentType<any>;
32
+ Cell?: import("../config/types.js").CustomComponent;
33
+ Field?: import("../config/types.js").CustomComponent;
34
34
  Filter?: import("react").ComponentType<any>;
35
35
  };
36
36
  condition?: import("./config/types.js").Condition<any, any>;
37
+ custom?: Record<string, any>;
37
38
  description?: import("../admin/types.js").Description;
38
39
  disableBulkEdit?: boolean;
39
40
  disabled?: boolean;
@@ -44,11 +45,12 @@ declare const _default: {
44
45
  width?: string;
45
46
  } & {
46
47
  components?: {
47
- Error?: import("react").ComponentType<import("../admin/types.js").ErrorProps>;
48
- Label?: import("react").ComponentType<import("../admin/types.js").LabelProps>;
48
+ Error?: import("../config/types.js").CustomComponent<import("../admin/types.js").ErrorProps>;
49
+ Label?: import("../config/types.js").CustomComponent<import("../admin/types.js").LabelProps>;
49
50
  };
50
51
  editorOptions?: import("monaco-editor").editor.IStandaloneEditorConstructionOptions;
51
52
  };
53
+ jsonSchema?: Record<string, unknown>;
52
54
  type: "json";
53
55
  } & {
54
56
  jsonError?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"validations.d.ts","sourceRoot":"","sources":["../../src/fields/validations.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,aAAa,EACb,SAAS,EACT,SAAS,EACT,UAAU,EACV,SAAS,EACT,WAAW,EACX,UAAU,EACV,UAAU,EACV,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,SAAS,EACT,aAAa,EACb,WAAW,EACX,QAAQ,EACT,MAAM,mBAAmB,CAAA;AAO1B,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,MAAM,GAAG,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAkDzE,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CA8BlE,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAShE,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,CA6BtE,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAS9D,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAavF,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,CASvE,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAkB5D,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,CAOtE,CAAA;AAgCD,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,MAAM,GAAG,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,CAgC7E,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAKnE,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAKlE,CAAA;AA0HD,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,CAqBnE,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,QAAQ,CACjC,iBAAiB,EACjB,OAAO,EACP,OAAO,EACP,iBAAiB,CA8ElB,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,CAmCnE,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAYjE,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAqB5F,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAED,wBAkBC"}
1
+ {"version":3,"file":"validations.d.ts","sourceRoot":"","sources":["../../src/fields/validations.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,aAAa,EACb,SAAS,EACT,SAAS,EACT,UAAU,EACV,SAAS,EACT,WAAW,EACX,UAAU,EACV,UAAU,EACV,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,SAAS,EACT,aAAa,EACb,WAAW,EACX,QAAQ,EACT,MAAM,mBAAmB,CAAA;AAK1B,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,MAAM,GAAG,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAkDzE,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CA8BlE,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAShE,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,CA6BtE,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAS9D,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAgEvF,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,CASvE,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAkB5D,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,CAOtE,CAAA;AAgCD,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,MAAM,GAAG,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,CAgC7E,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAKnE,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAKlE,CAAA;AA0HD,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,CAmBnE,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,QAAQ,CACjC,iBAAiB,EACjB,OAAO,EACP,OAAO,EACP,iBAAiB,CAuElB,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,CAmCnE,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAYjE,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAqB5F,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAED,wBAkBC"}
@@ -1,7 +1,6 @@
1
- import { getIDType } from '../utilities/getIDType.js';
1
+ import Ajv from 'ajv';
2
2
  import { isNumber } from '../utilities/isNumber.js';
3
3
  import { isValidID } from '../utilities/isValidID.js';
4
- import { fieldAffectsData } from './config/types.js';
5
4
  export const text = (value, { hasMany, maxLength: fieldMaxLength, maxRows, minLength, minRows, req: { payload: { config }, t }, required })=>{
6
5
  let maxLength;
7
6
  if (!required) {
@@ -95,13 +94,55 @@ export const code = (value, { req: { t }, required })=>{
95
94
  }
96
95
  return true;
97
96
  };
98
- export const json = (value, { jsonError, req: { t }, required })=>{
97
+ export const json = async (value, { jsonError, jsonSchema, req: { t }, required })=>{
98
+ const isNotEmpty = (value)=>{
99
+ if (value === undefined || value === null) {
100
+ return false;
101
+ }
102
+ if (Array.isArray(value) && value.length === 0) {
103
+ return false;
104
+ }
105
+ if (typeof value === 'object' && Object.keys(value).length === 0) {
106
+ return false;
107
+ }
108
+ return true;
109
+ };
110
+ const fetchSchema = ({ schema, uri })=>{
111
+ if (uri && schema) return schema;
112
+ // @ts-expect-error
113
+ return fetch(uri).then((response)=>{
114
+ if (!response.ok) {
115
+ throw new Error('Network response was not ok');
116
+ }
117
+ return response.json();
118
+ }).then((json)=>{
119
+ const jsonSchemaSanitizations = {
120
+ id: undefined,
121
+ $id: json.id,
122
+ $schema: 'http://json-schema.org/draft-07/schema#'
123
+ };
124
+ return Object.assign(json, jsonSchemaSanitizations);
125
+ });
126
+ };
99
127
  if (required && !value) {
100
128
  return t('validation:required');
101
129
  }
102
130
  if (jsonError !== undefined) {
103
131
  return t('validation:invalidInput');
104
132
  }
133
+ if (jsonSchema && isNotEmpty(value)) {
134
+ try {
135
+ jsonSchema.schema = await fetchSchema(jsonSchema);
136
+ const { schema } = jsonSchema;
137
+ // @ts-expect-error
138
+ const ajv = new Ajv();
139
+ if (!ajv.validate(schema, value)) {
140
+ return t(ajv.errorsText());
141
+ }
142
+ } catch (error) {
143
+ return t(error.message);
144
+ }
145
+ }
105
146
  return true;
106
147
  };
107
148
  export const checkbox = (value, { req: { t }, required })=>{
@@ -304,16 +345,15 @@ export const upload = (value, options)=>{
304
345
  return options?.req?.t('validation:required');
305
346
  }
306
347
  if (typeof value !== 'undefined' && value !== null) {
307
- const idField = options?.req?.payload?.config?.collections?.find((collection)=>collection.slug === options.relationTo)?.fields?.find((field)=>fieldAffectsData(field) && field.name === 'id');
308
- const type = getIDType(idField, options?.req?.payload?.db?.defaultIDType);
309
- if (!isValidID(value, type)) {
348
+ const idType = options?.req?.payload?.collections[options.relationTo]?.customIDType || options?.req?.payload?.db?.defaultIDType;
349
+ if (!isValidID(value, idType)) {
310
350
  return options.req?.t('validation:validUploadID');
311
351
  }
312
352
  }
313
353
  return validateFilterOptions(value, options);
314
354
  };
315
355
  export const relationship = async (value, options)=>{
316
- const { maxRows, minRows, relationTo, req: { payload, payload: { config }, t }, required } = options;
356
+ const { maxRows, minRows, relationTo, req: { payload, t }, required } = options;
317
357
  if ((!value || Array.isArray(value) && value.length === 0) && required) {
318
358
  return t('validation:required');
319
359
  }
@@ -352,9 +392,8 @@ export const relationship = async (value, options)=>{
352
392
  requestedID = val.value;
353
393
  }
354
394
  if (requestedID === null) return false;
355
- const idField = config?.collections?.find((collection)=>collection.slug === collectionSlug)?.fields?.find((field)=>fieldAffectsData(field) && field.name === 'id');
356
- const type = getIDType(idField, payload?.db?.defaultIDType);
357
- return !isValidID(requestedID, type);
395
+ const idType = payload.collections[collectionSlug]?.customIDType || payload?.db?.defaultIDType || 'text';
396
+ return !isValidID(requestedID, idType);
358
397
  });
359
398
  if (invalidRelationships.length > 0) {
360
399
  return `This relationship field has the following invalid relationships: ${invalidRelationships.map((err, invalid)=>{
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/fields/validations.ts"],"sourcesContent":["import type { RichTextAdapter } from '../admin/types.js'\nimport type { Where } from '../types/index.js'\nimport type {\n ArrayField,\n BlockField,\n CheckboxField,\n CodeField,\n DateField,\n EmailField,\n JSONField,\n NumberField,\n PointField,\n RadioField,\n RelationshipField,\n RelationshipValue,\n RichTextField,\n SelectField,\n TextField,\n TextareaField,\n UploadField,\n Validate,\n} from './config/types.js'\n\nimport { getIDType } from '../utilities/getIDType.js'\nimport { isNumber } from '../utilities/isNumber.js'\nimport { isValidID } from '../utilities/isValidID.js'\nimport { fieldAffectsData } from './config/types.js'\n\nexport const text: Validate<string | string[], unknown, unknown, TextField> = (\n value,\n {\n hasMany,\n maxLength: fieldMaxLength,\n maxRows,\n minLength,\n minRows,\n req: {\n payload: { config },\n t,\n },\n required,\n },\n) => {\n let maxLength: number\n\n if (!required) {\n if (!value) return true\n }\n\n if (hasMany === true) {\n const lengthValidationResult = validateArrayLength(value, { maxRows, minRows, required, t })\n if (typeof lengthValidationResult === 'string') return lengthValidationResult\n }\n\n if (typeof config?.defaultMaxTextLength === 'number') maxLength = config.defaultMaxTextLength\n if (typeof fieldMaxLength === 'number') maxLength = fieldMaxLength\n\n const stringsToValidate: string[] = Array.isArray(value) ? value : [value]\n\n for (const stringValue of stringsToValidate) {\n const length = stringValue?.length || 0\n\n if (typeof maxLength === 'number' && length > maxLength) {\n return t('validation:shorterThanMax', { label: t('value'), maxLength, stringValue })\n }\n\n if (typeof minLength === 'number' && length < minLength) {\n return t('validation:longerThanMin', { label: t('value'), minLength, stringValue })\n }\n }\n\n if (required) {\n if (!(typeof value === 'string' || Array.isArray(value)) || value?.length === 0) {\n return t('validation:required')\n }\n }\n\n return true\n}\n\nexport const password: Validate<string, unknown, unknown, TextField> = (\n value,\n {\n maxLength: fieldMaxLength,\n minLength,\n req: {\n payload: { config },\n t,\n },\n required,\n },\n) => {\n let maxLength: number\n\n if (typeof config?.defaultMaxTextLength === 'number') maxLength = config.defaultMaxTextLength\n if (typeof fieldMaxLength === 'number') maxLength = fieldMaxLength\n\n if (value && maxLength && value.length > maxLength) {\n return t('validation:shorterThanMax', { maxLength })\n }\n\n if (value && minLength && value.length < minLength) {\n return t('validation:longerThanMin', { minLength })\n }\n\n if (required && !value) {\n return t('validation:required')\n }\n\n return true\n}\n\nexport const email: Validate<string, unknown, unknown, EmailField> = (\n value,\n { req: { t }, required },\n) => {\n if ((value && !/\\S[^\\s@]*@\\S+\\.\\S+/.test(value)) || (!value && required)) {\n return t('validation:emailAddress')\n }\n\n return true\n}\n\nexport const textarea: Validate<string, unknown, unknown, TextareaField> = (\n value,\n {\n maxLength: fieldMaxLength,\n minLength,\n req: {\n payload: { config },\n t,\n },\n required,\n },\n) => {\n let maxLength: number\n\n if (typeof config?.defaultMaxTextLength === 'number') maxLength = config.defaultMaxTextLength\n if (typeof fieldMaxLength === 'number') maxLength = fieldMaxLength\n if (value && maxLength && value.length > maxLength) {\n return t('validation:shorterThanMax', { maxLength })\n }\n\n if (value && minLength && value.length < minLength) {\n return t('validation:longerThanMin', { minLength })\n }\n\n if (required && !value) {\n return t('validation:required')\n }\n\n return true\n}\n\nexport const code: Validate<string, unknown, unknown, CodeField> = (\n value,\n { req: { t }, required },\n) => {\n if (required && value === undefined) {\n return t('validation:required')\n }\n\n return true\n}\n\nexport const json: Validate<string, unknown, unknown, JSONField & { jsonError?: string }> = (\n value,\n { jsonError, req: { t }, required },\n) => {\n if (required && !value) {\n return t('validation:required')\n }\n\n if (jsonError !== undefined) {\n return t('validation:invalidInput')\n }\n\n return true\n}\n\nexport const checkbox: Validate<boolean, unknown, unknown, CheckboxField> = (\n value,\n { req: { t }, required },\n) => {\n if ((value && typeof value !== 'boolean') || (required && typeof value !== 'boolean')) {\n return t('validation:trueOrFalse')\n }\n\n return true\n}\n\nexport const date: Validate<Date, unknown, unknown, DateField> = (\n value,\n { req: { t }, required },\n) => {\n if (value && !isNaN(Date.parse(value.toString()))) {\n /* eslint-disable-line */\n return true\n }\n\n if (value) {\n return t('validation:notValidDate', { value })\n }\n\n if (required) {\n return t('validation:required')\n }\n\n return true\n}\n\nexport const richText: Validate<object, unknown, unknown, RichTextField> = async (\n value,\n options,\n) => {\n const editor: RichTextAdapter = options?.editor\n\n return editor.validate(value, options)\n}\n\nconst validateArrayLength = (\n value,\n options: {\n maxRows?: number\n minRows?: number\n required?: boolean\n t: (key: string, options?: { [key: string]: number | string }) => string\n },\n) => {\n const { maxRows, minRows, required, t } = options\n\n const arrayLength = Array.isArray(value) ? value.length : value || 0\n\n if (!required && arrayLength === 0) return true\n\n if (minRows && arrayLength < minRows) {\n return t('validation:requiresAtLeast', { count: minRows, label: t('general:rows') })\n }\n\n if (maxRows && arrayLength > maxRows) {\n return t('validation:requiresNoMoreThan', { count: maxRows, label: t('general:rows') })\n }\n\n if (required && !arrayLength) {\n return t('validation:requiresAtLeast', { count: 1, label: t('general:row') })\n }\n\n return true\n}\n\nexport const number: Validate<number | number[], unknown, unknown, NumberField> = (\n value,\n { hasMany, max, maxRows, min, minRows, req: { t }, required },\n) => {\n if (hasMany === true) {\n const lengthValidationResult = validateArrayLength(value, { maxRows, minRows, required, t })\n if (typeof lengthValidationResult === 'string') return lengthValidationResult\n }\n\n if (!value && !isNumber(value)) {\n // if no value is present, validate based on required\n if (required) return t('validation:required')\n if (!required) return true\n }\n\n const numbersToValidate: number[] = Array.isArray(value) ? value : [value]\n\n for (const number of numbersToValidate) {\n if (!isNumber(number)) return t('validation:enterNumber')\n\n const numberValue = parseFloat(number as unknown as string)\n\n if (typeof max === 'number' && numberValue > max) {\n return t('validation:greaterThanMax', { label: t('general:value'), max, value })\n }\n\n if (typeof min === 'number' && numberValue < min) {\n return t('validation:lessThanMin', { label: t('general:value'), min, value })\n }\n }\n\n return true\n}\n\nexport const array: Validate<unknown[], unknown, unknown, ArrayField> = (\n value,\n { maxRows, minRows, req: { t }, required },\n) => {\n return validateArrayLength(value, { maxRows, minRows, required, t })\n}\n\nexport const blocks: Validate<unknown, unknown, unknown, BlockField> = (\n value,\n { maxRows, minRows, req: { t }, required },\n) => {\n return validateArrayLength(value, { maxRows, minRows, required, t })\n}\n\nconst validateFilterOptions: Validate<\n unknown,\n unknown,\n unknown,\n RelationshipField | UploadField\n> = async (\n value,\n { id, data, filterOptions, relationTo, req, req: { payload, t, user }, siblingData },\n) => {\n if (typeof filterOptions !== 'undefined' && value) {\n const options: {\n [collection: string]: (number | string)[]\n } = {}\n\n const falseCollections: string[] = []\n const collections = typeof relationTo === 'string' ? [relationTo] : relationTo\n const values = Array.isArray(value) ? value : [value]\n\n for (const collection of collections) {\n try {\n let optionFilter =\n typeof filterOptions === 'function'\n ? await filterOptions({\n id,\n data,\n relationTo: collection,\n siblingData,\n user,\n })\n : filterOptions\n\n if (optionFilter === true) {\n optionFilter = null\n }\n\n const valueIDs: (number | string)[] = []\n\n values.forEach((val) => {\n if (typeof val === 'object' && val?.value) {\n valueIDs.push(val.value)\n }\n\n if (typeof val === 'string' || typeof val === 'number') {\n valueIDs.push(val)\n }\n })\n\n if (valueIDs.length > 0) {\n const findWhere: Where = {\n and: [{ id: { in: valueIDs } }],\n }\n\n if (optionFilter && optionFilter !== true) findWhere.and.push(optionFilter)\n\n if (optionFilter === false) {\n falseCollections.push(collection)\n }\n\n const result = await payload.find({\n collection,\n depth: 0,\n limit: 0,\n pagination: false,\n req,\n where: findWhere,\n })\n\n options[collection] = result.docs.map((doc) => doc.id)\n } else {\n options[collection] = []\n }\n } catch (err) {\n req.payload.logger.error({\n err,\n msg: `Error validating filter options for collection ${collection}`,\n })\n options[collection] = []\n }\n }\n\n const invalidRelationships = values.filter((val) => {\n let collection: string\n let requestedID: number | string\n\n if (typeof relationTo === 'string') {\n collection = relationTo\n\n if (typeof val === 'string' || typeof val === 'number') {\n requestedID = val\n }\n }\n\n if (Array.isArray(relationTo) && typeof val === 'object' && val?.relationTo) {\n collection = val.relationTo\n requestedID = val.value\n }\n\n if (falseCollections.find((slug) => relationTo === slug)) {\n return true\n }\n\n if (!options[collection]) return true\n\n return options[collection].indexOf(requestedID) === -1\n })\n\n if (invalidRelationships.length > 0) {\n return invalidRelationships.reduce((err, invalid, i) => {\n return `${err} ${JSON.stringify(invalid)}${\n invalidRelationships.length === i + 1 ? ',' : ''\n } `\n }, t('validation:invalidSelections')) as string\n }\n\n return true\n }\n\n return true\n}\n\nexport const upload: Validate<unknown, unknown, unknown, UploadField> = (\n value: string,\n options,\n) => {\n if (!value && options.required) {\n return options?.req?.t('validation:required')\n }\n\n if (typeof value !== 'undefined' && value !== null) {\n const idField = options?.req?.payload?.config?.collections\n ?.find((collection) => collection.slug === options.relationTo)\n ?.fields?.find((field) => fieldAffectsData(field) && field.name === 'id')\n\n const type = getIDType(idField, options?.req?.payload?.db?.defaultIDType)\n\n if (!isValidID(value, type)) {\n return options.req?.t('validation:validUploadID')\n }\n }\n\n return validateFilterOptions(value, options)\n}\n\nexport const relationship: Validate<\n RelationshipValue,\n unknown,\n unknown,\n RelationshipField\n> = async (value, options) => {\n const {\n maxRows,\n minRows,\n relationTo,\n req: {\n payload,\n payload: { config },\n t,\n },\n required,\n } = options\n\n if ((!value || (Array.isArray(value) && value.length === 0)) && required) {\n return t('validation:required')\n }\n\n if (Array.isArray(value) && value.length > 0) {\n if (minRows && value.length < minRows) {\n return t('validation:lessThanMin', {\n label: t('general:rows'),\n min: minRows,\n value: value.length,\n })\n }\n\n if (maxRows && value.length > maxRows) {\n return t('validation:greaterThanMax', {\n label: t('general:rows'),\n max: maxRows,\n value: value.length,\n })\n }\n }\n\n if (typeof value !== 'undefined' && value !== null) {\n const values = Array.isArray(value) ? value : [value]\n\n const invalidRelationships = values.filter((val) => {\n let collectionSlug: string\n let requestedID\n\n if (typeof relationTo === 'string') {\n collectionSlug = relationTo\n\n // custom id\n if (val) {\n requestedID = val\n }\n }\n\n if (Array.isArray(relationTo) && typeof val === 'object' && val?.relationTo) {\n collectionSlug = val.relationTo\n requestedID = val.value\n }\n\n if (requestedID === null) return false\n\n const idField = config?.collections\n ?.find((collection) => collection.slug === collectionSlug)\n ?.fields?.find((field) => fieldAffectsData(field) && field.name === 'id')\n\n const type = getIDType(idField, payload?.db?.defaultIDType)\n\n return !isValidID(requestedID, type)\n })\n\n if (invalidRelationships.length > 0) {\n return `This relationship field has the following invalid relationships: ${invalidRelationships\n .map((err, invalid) => {\n return `${err} ${JSON.stringify(invalid)}`\n })\n .join(', ')}`\n }\n }\n\n return validateFilterOptions(value, options)\n}\n\nexport const select: Validate<unknown, unknown, unknown, SelectField> = (\n value,\n { hasMany, options, req: { t }, required },\n) => {\n if (\n Array.isArray(value) &&\n value.some(\n (input) =>\n !options.some(\n (option) => option === input || (typeof option !== 'string' && option?.value === input),\n ),\n )\n ) {\n return t('validation:invalidSelection')\n }\n\n if (\n typeof value === 'string' &&\n !options.some(\n (option) => option === value || (typeof option !== 'string' && option.value === value),\n )\n ) {\n return t('validation:invalidSelection')\n }\n\n if (\n required &&\n (typeof value === 'undefined' ||\n value === null ||\n (hasMany && Array.isArray(value) && (value as [])?.length === 0))\n ) {\n return t('validation:required')\n }\n\n return true\n}\n\nexport const radio: Validate<unknown, unknown, unknown, RadioField> = (\n value,\n { options, req: { t }, required },\n) => {\n if (value) {\n const valueMatchesOption = options.some(\n (option) => option === value || (typeof option !== 'string' && option.value === value),\n )\n return valueMatchesOption || t('validation:invalidSelection')\n }\n\n return required ? t('validation:required') : true\n}\n\nexport const point: Validate<[number | string, number | string], unknown, unknown, PointField> = (\n value = ['', ''],\n { req: { t }, required },\n) => {\n const lng = parseFloat(String(value[0]))\n const lat = parseFloat(String(value[1]))\n if (\n required &&\n ((value[0] && value[1] && typeof lng !== 'number' && typeof lat !== 'number') ||\n Number.isNaN(lng) ||\n Number.isNaN(lat) ||\n (Array.isArray(value) && value.length !== 2))\n ) {\n return t('validation:requiresTwoNumbers')\n }\n\n if ((value[1] && Number.isNaN(lng)) || (value[0] && Number.isNaN(lat))) {\n return t('validation:invalidInput')\n }\n\n return true\n}\n\nexport default {\n array,\n blocks,\n checkbox,\n code,\n date,\n email,\n json,\n number,\n password,\n point,\n radio,\n relationship,\n richText,\n select,\n text,\n textarea,\n upload,\n}\n"],"names":["getIDType","isNumber","isValidID","fieldAffectsData","text","value","hasMany","maxLength","fieldMaxLength","maxRows","minLength","minRows","req","payload","config","t","required","lengthValidationResult","validateArrayLength","defaultMaxTextLength","stringsToValidate","Array","isArray","stringValue","length","label","password","email","test","textarea","code","undefined","json","jsonError","checkbox","date","isNaN","Date","parse","toString","richText","options","editor","validate","arrayLength","count","number","max","min","numbersToValidate","numberValue","parseFloat","array","blocks","validateFilterOptions","id","data","filterOptions","relationTo","user","siblingData","falseCollections","collections","values","collection","optionFilter","valueIDs","forEach","val","push","findWhere","and","in","result","find","depth","limit","pagination","where","docs","map","doc","err","logger","error","msg","invalidRelationships","filter","requestedID","slug","indexOf","reduce","invalid","i","JSON","stringify","upload","idField","fields","field","name","type","db","defaultIDType","relationship","collectionSlug","join","select","some","input","option","radio","valueMatchesOption","point","lng","String","lat","Number"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/fields/validations.ts"],"sourcesContent":["import Ajv from 'ajv'\n\nimport type { RichTextAdapter } from '../admin/types.js'\nimport type { Where } from '../types/index.js'\nimport type {\n ArrayField,\n BlockField,\n CheckboxField,\n CodeField,\n DateField,\n EmailField,\n JSONField,\n NumberField,\n PointField,\n RadioField,\n RelationshipField,\n RelationshipValue,\n RichTextField,\n SelectField,\n TextField,\n TextareaField,\n UploadField,\n Validate,\n} from './config/types.js'\n\nimport { isNumber } from '../utilities/isNumber.js'\nimport { isValidID } from '../utilities/isValidID.js'\n\nexport const text: Validate<string | string[], unknown, unknown, TextField> = (\n value,\n {\n hasMany,\n maxLength: fieldMaxLength,\n maxRows,\n minLength,\n minRows,\n req: {\n payload: { config },\n t,\n },\n required,\n },\n) => {\n let maxLength: number\n\n if (!required) {\n if (!value) return true\n }\n\n if (hasMany === true) {\n const lengthValidationResult = validateArrayLength(value, { maxRows, minRows, required, t })\n if (typeof lengthValidationResult === 'string') return lengthValidationResult\n }\n\n if (typeof config?.defaultMaxTextLength === 'number') maxLength = config.defaultMaxTextLength\n if (typeof fieldMaxLength === 'number') maxLength = fieldMaxLength\n\n const stringsToValidate: string[] = Array.isArray(value) ? value : [value]\n\n for (const stringValue of stringsToValidate) {\n const length = stringValue?.length || 0\n\n if (typeof maxLength === 'number' && length > maxLength) {\n return t('validation:shorterThanMax', { label: t('value'), maxLength, stringValue })\n }\n\n if (typeof minLength === 'number' && length < minLength) {\n return t('validation:longerThanMin', { label: t('value'), minLength, stringValue })\n }\n }\n\n if (required) {\n if (!(typeof value === 'string' || Array.isArray(value)) || value?.length === 0) {\n return t('validation:required')\n }\n }\n\n return true\n}\n\nexport const password: Validate<string, unknown, unknown, TextField> = (\n value,\n {\n maxLength: fieldMaxLength,\n minLength,\n req: {\n payload: { config },\n t,\n },\n required,\n },\n) => {\n let maxLength: number\n\n if (typeof config?.defaultMaxTextLength === 'number') maxLength = config.defaultMaxTextLength\n if (typeof fieldMaxLength === 'number') maxLength = fieldMaxLength\n\n if (value && maxLength && value.length > maxLength) {\n return t('validation:shorterThanMax', { maxLength })\n }\n\n if (value && minLength && value.length < minLength) {\n return t('validation:longerThanMin', { minLength })\n }\n\n if (required && !value) {\n return t('validation:required')\n }\n\n return true\n}\n\nexport const email: Validate<string, unknown, unknown, EmailField> = (\n value,\n { req: { t }, required },\n) => {\n if ((value && !/\\S[^\\s@]*@\\S+\\.\\S+/.test(value)) || (!value && required)) {\n return t('validation:emailAddress')\n }\n\n return true\n}\n\nexport const textarea: Validate<string, unknown, unknown, TextareaField> = (\n value,\n {\n maxLength: fieldMaxLength,\n minLength,\n req: {\n payload: { config },\n t,\n },\n required,\n },\n) => {\n let maxLength: number\n\n if (typeof config?.defaultMaxTextLength === 'number') maxLength = config.defaultMaxTextLength\n if (typeof fieldMaxLength === 'number') maxLength = fieldMaxLength\n if (value && maxLength && value.length > maxLength) {\n return t('validation:shorterThanMax', { maxLength })\n }\n\n if (value && minLength && value.length < minLength) {\n return t('validation:longerThanMin', { minLength })\n }\n\n if (required && !value) {\n return t('validation:required')\n }\n\n return true\n}\n\nexport const code: Validate<string, unknown, unknown, CodeField> = (\n value,\n { req: { t }, required },\n) => {\n if (required && value === undefined) {\n return t('validation:required')\n }\n\n return true\n}\n\nexport const json: Validate<string, unknown, unknown, JSONField & { jsonError?: string }> = async (\n value,\n { jsonError, jsonSchema, req: { t }, required },\n) => {\n const isNotEmpty = (value) => {\n if (value === undefined || value === null) {\n return false\n }\n\n if (Array.isArray(value) && value.length === 0) {\n return false\n }\n\n if (typeof value === 'object' && Object.keys(value).length === 0) {\n return false\n }\n\n return true\n }\n\n const fetchSchema = ({ schema, uri }: Record<string, unknown>) => {\n if (uri && schema) return schema\n // @ts-expect-error\n return fetch(uri)\n .then((response) => {\n if (!response.ok) {\n throw new Error('Network response was not ok')\n }\n return response.json()\n })\n .then((json) => {\n const jsonSchemaSanitizations = {\n id: undefined,\n $id: json.id,\n $schema: 'http://json-schema.org/draft-07/schema#',\n }\n\n return Object.assign(json, jsonSchemaSanitizations)\n })\n }\n\n if (required && !value) {\n return t('validation:required')\n }\n\n if (jsonError !== undefined) {\n return t('validation:invalidInput')\n }\n\n if (jsonSchema && isNotEmpty(value)) {\n try {\n jsonSchema.schema = await fetchSchema(jsonSchema)\n const { schema } = jsonSchema\n // @ts-expect-error\n const ajv = new Ajv()\n\n if (!ajv.validate(schema, value)) {\n return t(ajv.errorsText())\n }\n } catch (error) {\n return t(error.message)\n }\n }\n return true\n}\n\nexport const checkbox: Validate<boolean, unknown, unknown, CheckboxField> = (\n value,\n { req: { t }, required },\n) => {\n if ((value && typeof value !== 'boolean') || (required && typeof value !== 'boolean')) {\n return t('validation:trueOrFalse')\n }\n\n return true\n}\n\nexport const date: Validate<Date, unknown, unknown, DateField> = (\n value,\n { req: { t }, required },\n) => {\n if (value && !isNaN(Date.parse(value.toString()))) {\n /* eslint-disable-line */\n return true\n }\n\n if (value) {\n return t('validation:notValidDate', { value })\n }\n\n if (required) {\n return t('validation:required')\n }\n\n return true\n}\n\nexport const richText: Validate<object, unknown, unknown, RichTextField> = async (\n value,\n options,\n) => {\n const editor: RichTextAdapter = options?.editor\n\n return editor.validate(value, options)\n}\n\nconst validateArrayLength = (\n value,\n options: {\n maxRows?: number\n minRows?: number\n required?: boolean\n t: (key: string, options?: { [key: string]: number | string }) => string\n },\n) => {\n const { maxRows, minRows, required, t } = options\n\n const arrayLength = Array.isArray(value) ? value.length : value || 0\n\n if (!required && arrayLength === 0) return true\n\n if (minRows && arrayLength < minRows) {\n return t('validation:requiresAtLeast', { count: minRows, label: t('general:rows') })\n }\n\n if (maxRows && arrayLength > maxRows) {\n return t('validation:requiresNoMoreThan', { count: maxRows, label: t('general:rows') })\n }\n\n if (required && !arrayLength) {\n return t('validation:requiresAtLeast', { count: 1, label: t('general:row') })\n }\n\n return true\n}\n\nexport const number: Validate<number | number[], unknown, unknown, NumberField> = (\n value,\n { hasMany, max, maxRows, min, minRows, req: { t }, required },\n) => {\n if (hasMany === true) {\n const lengthValidationResult = validateArrayLength(value, { maxRows, minRows, required, t })\n if (typeof lengthValidationResult === 'string') return lengthValidationResult\n }\n\n if (!value && !isNumber(value)) {\n // if no value is present, validate based on required\n if (required) return t('validation:required')\n if (!required) return true\n }\n\n const numbersToValidate: number[] = Array.isArray(value) ? value : [value]\n\n for (const number of numbersToValidate) {\n if (!isNumber(number)) return t('validation:enterNumber')\n\n const numberValue = parseFloat(number as unknown as string)\n\n if (typeof max === 'number' && numberValue > max) {\n return t('validation:greaterThanMax', { label: t('general:value'), max, value })\n }\n\n if (typeof min === 'number' && numberValue < min) {\n return t('validation:lessThanMin', { label: t('general:value'), min, value })\n }\n }\n\n return true\n}\n\nexport const array: Validate<unknown[], unknown, unknown, ArrayField> = (\n value,\n { maxRows, minRows, req: { t }, required },\n) => {\n return validateArrayLength(value, { maxRows, minRows, required, t })\n}\n\nexport const blocks: Validate<unknown, unknown, unknown, BlockField> = (\n value,\n { maxRows, minRows, req: { t }, required },\n) => {\n return validateArrayLength(value, { maxRows, minRows, required, t })\n}\n\nconst validateFilterOptions: Validate<\n unknown,\n unknown,\n unknown,\n RelationshipField | UploadField\n> = async (\n value,\n { id, data, filterOptions, relationTo, req, req: { payload, t, user }, siblingData },\n) => {\n if (typeof filterOptions !== 'undefined' && value) {\n const options: {\n [collection: string]: (number | string)[]\n } = {}\n\n const falseCollections: string[] = []\n const collections = typeof relationTo === 'string' ? [relationTo] : relationTo\n const values = Array.isArray(value) ? value : [value]\n\n for (const collection of collections) {\n try {\n let optionFilter =\n typeof filterOptions === 'function'\n ? await filterOptions({\n id,\n data,\n relationTo: collection,\n siblingData,\n user,\n })\n : filterOptions\n\n if (optionFilter === true) {\n optionFilter = null\n }\n\n const valueIDs: (number | string)[] = []\n\n values.forEach((val) => {\n if (typeof val === 'object' && val?.value) {\n valueIDs.push(val.value)\n }\n\n if (typeof val === 'string' || typeof val === 'number') {\n valueIDs.push(val)\n }\n })\n\n if (valueIDs.length > 0) {\n const findWhere: Where = {\n and: [{ id: { in: valueIDs } }],\n }\n\n if (optionFilter && optionFilter !== true) findWhere.and.push(optionFilter)\n\n if (optionFilter === false) {\n falseCollections.push(collection)\n }\n\n const result = await payload.find({\n collection,\n depth: 0,\n limit: 0,\n pagination: false,\n req,\n where: findWhere,\n })\n\n options[collection] = result.docs.map((doc) => doc.id)\n } else {\n options[collection] = []\n }\n } catch (err) {\n req.payload.logger.error({\n err,\n msg: `Error validating filter options for collection ${collection}`,\n })\n options[collection] = []\n }\n }\n\n const invalidRelationships = values.filter((val) => {\n let collection: string\n let requestedID: number | string\n\n if (typeof relationTo === 'string') {\n collection = relationTo\n\n if (typeof val === 'string' || typeof val === 'number') {\n requestedID = val\n }\n }\n\n if (Array.isArray(relationTo) && typeof val === 'object' && val?.relationTo) {\n collection = val.relationTo\n requestedID = val.value\n }\n\n if (falseCollections.find((slug) => relationTo === slug)) {\n return true\n }\n\n if (!options[collection]) return true\n\n return options[collection].indexOf(requestedID) === -1\n })\n\n if (invalidRelationships.length > 0) {\n return invalidRelationships.reduce((err, invalid, i) => {\n return `${err} ${JSON.stringify(invalid)}${\n invalidRelationships.length === i + 1 ? ',' : ''\n } `\n }, t('validation:invalidSelections')) as string\n }\n\n return true\n }\n\n return true\n}\n\nexport const upload: Validate<unknown, unknown, unknown, UploadField> = (\n value: string,\n options,\n) => {\n if (!value && options.required) {\n return options?.req?.t('validation:required')\n }\n\n if (typeof value !== 'undefined' && value !== null) {\n const idType =\n options?.req?.payload?.collections[options.relationTo]?.customIDType ||\n options?.req?.payload?.db?.defaultIDType\n\n if (!isValidID(value, idType)) {\n return options.req?.t('validation:validUploadID')\n }\n }\n\n return validateFilterOptions(value, options)\n}\n\nexport const relationship: Validate<\n RelationshipValue,\n unknown,\n unknown,\n RelationshipField\n> = async (value, options) => {\n const {\n maxRows,\n minRows,\n relationTo,\n req: { payload, t },\n required,\n } = options\n\n if ((!value || (Array.isArray(value) && value.length === 0)) && required) {\n return t('validation:required')\n }\n\n if (Array.isArray(value) && value.length > 0) {\n if (minRows && value.length < minRows) {\n return t('validation:lessThanMin', {\n label: t('general:rows'),\n min: minRows,\n value: value.length,\n })\n }\n\n if (maxRows && value.length > maxRows) {\n return t('validation:greaterThanMax', {\n label: t('general:rows'),\n max: maxRows,\n value: value.length,\n })\n }\n }\n\n if (typeof value !== 'undefined' && value !== null) {\n const values = Array.isArray(value) ? value : [value]\n\n const invalidRelationships = values.filter((val) => {\n let collectionSlug: string\n let requestedID\n\n if (typeof relationTo === 'string') {\n collectionSlug = relationTo\n\n // custom id\n if (val) {\n requestedID = val\n }\n }\n\n if (Array.isArray(relationTo) && typeof val === 'object' && val?.relationTo) {\n collectionSlug = val.relationTo\n requestedID = val.value\n }\n\n if (requestedID === null) return false\n\n const idType =\n payload.collections[collectionSlug]?.customIDType || payload?.db?.defaultIDType || 'text'\n\n return !isValidID(requestedID, idType)\n })\n\n if (invalidRelationships.length > 0) {\n return `This relationship field has the following invalid relationships: ${invalidRelationships\n .map((err, invalid) => {\n return `${err} ${JSON.stringify(invalid)}`\n })\n .join(', ')}`\n }\n }\n\n return validateFilterOptions(value, options)\n}\n\nexport const select: Validate<unknown, unknown, unknown, SelectField> = (\n value,\n { hasMany, options, req: { t }, required },\n) => {\n if (\n Array.isArray(value) &&\n value.some(\n (input) =>\n !options.some(\n (option) => option === input || (typeof option !== 'string' && option?.value === input),\n ),\n )\n ) {\n return t('validation:invalidSelection')\n }\n\n if (\n typeof value === 'string' &&\n !options.some(\n (option) => option === value || (typeof option !== 'string' && option.value === value),\n )\n ) {\n return t('validation:invalidSelection')\n }\n\n if (\n required &&\n (typeof value === 'undefined' ||\n value === null ||\n (hasMany && Array.isArray(value) && (value as [])?.length === 0))\n ) {\n return t('validation:required')\n }\n\n return true\n}\n\nexport const radio: Validate<unknown, unknown, unknown, RadioField> = (\n value,\n { options, req: { t }, required },\n) => {\n if (value) {\n const valueMatchesOption = options.some(\n (option) => option === value || (typeof option !== 'string' && option.value === value),\n )\n return valueMatchesOption || t('validation:invalidSelection')\n }\n\n return required ? t('validation:required') : true\n}\n\nexport const point: Validate<[number | string, number | string], unknown, unknown, PointField> = (\n value = ['', ''],\n { req: { t }, required },\n) => {\n const lng = parseFloat(String(value[0]))\n const lat = parseFloat(String(value[1]))\n if (\n required &&\n ((value[0] && value[1] && typeof lng !== 'number' && typeof lat !== 'number') ||\n Number.isNaN(lng) ||\n Number.isNaN(lat) ||\n (Array.isArray(value) && value.length !== 2))\n ) {\n return t('validation:requiresTwoNumbers')\n }\n\n if ((value[1] && Number.isNaN(lng)) || (value[0] && Number.isNaN(lat))) {\n return t('validation:invalidInput')\n }\n\n return true\n}\n\nexport default {\n array,\n blocks,\n checkbox,\n code,\n date,\n email,\n json,\n number,\n password,\n point,\n radio,\n relationship,\n richText,\n select,\n text,\n textarea,\n upload,\n}\n"],"names":["Ajv","isNumber","isValidID","text","value","hasMany","maxLength","fieldMaxLength","maxRows","minLength","minRows","req","payload","config","t","required","lengthValidationResult","validateArrayLength","defaultMaxTextLength","stringsToValidate","Array","isArray","stringValue","length","label","password","email","test","textarea","code","undefined","json","jsonError","jsonSchema","isNotEmpty","Object","keys","fetchSchema","schema","uri","fetch","then","response","ok","Error","jsonSchemaSanitizations","id","$id","$schema","assign","ajv","validate","errorsText","error","message","checkbox","date","isNaN","Date","parse","toString","richText","options","editor","arrayLength","count","number","max","min","numbersToValidate","numberValue","parseFloat","array","blocks","validateFilterOptions","data","filterOptions","relationTo","user","siblingData","falseCollections","collections","values","collection","optionFilter","valueIDs","forEach","val","push","findWhere","and","in","result","find","depth","limit","pagination","where","docs","map","doc","err","logger","msg","invalidRelationships","filter","requestedID","slug","indexOf","reduce","invalid","i","JSON","stringify","upload","idType","customIDType","db","defaultIDType","relationship","collectionSlug","join","select","some","input","option","radio","valueMatchesOption","point","lng","String","lat","Number"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -8,7 +8,12 @@ let options = {
8
8
  t,
9
9
  context: {},
10
10
  payload: {
11
- config: {}
11
+ config: {
12
+ db: {
13
+ defaultIDType: 'text',
14
+ init: ()=>null
15
+ }
16
+ }
12
17
  }
13
18
  }
14
19
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/fields/validations.spec.ts"],"sourcesContent":["import type { ValidateOptions } from './config/types.js'\n\nimport { number, password, point, relationship, select, text, textarea } from './validations.js'\n\nconst t = jest.fn((string) => string)\n\nlet options: ValidateOptions<any, any> = {\n data: undefined,\n operation: 'create',\n siblingData: undefined,\n req: {\n t,\n context: {},\n payload: {\n config: {},\n },\n },\n}\n\ndescribe('Field Validations', () => {\n describe('text', () => {\n it('should validate', () => {\n const val = 'test'\n const result = text(val, options)\n expect(result).toBe(true)\n })\n it('should show required message', () => {\n const val = undefined\n const result = text(val, { ...options, required: true })\n expect(result).toBe('validation:required')\n })\n it('should handle undefined', () => {\n const val = undefined\n const result = text(val, options)\n expect(result).toBe(true)\n })\n it('should validate maxLength', () => {\n const val = 'toolong'\n const result = text(val, { ...options, maxLength: 5 })\n expect(result).toBe('validation:shorterThanMax')\n })\n it('should validate minLength', () => {\n const val = 'short'\n const result = text(val, { ...options, minLength: 10 })\n expect(result).toBe('validation:longerThanMin')\n })\n it('should validate maxLength with no value', () => {\n const val = undefined\n const result = text(val, { ...options, maxLength: 5 })\n expect(result).toBe(true)\n })\n it('should validate minLength with no value', () => {\n const val = undefined\n const result = text(val, { ...options, minLength: 10 })\n expect(result).toBe(true)\n })\n it('should validate an array of texts', async () => {\n const val = ['test']\n const result = text(val, { ...options, hasMany: true })\n expect(result).toBe(true)\n })\n it('should handle required array of texts', async () => {\n const val = ['test']\n const result = text(val, { ...options, hasMany: true, required: true })\n expect(result).toBe(true)\n })\n })\n\n describe('textarea', () => {\n options = { ...options, field: { name: 'test', type: 'textarea' } }\n it('should validate', () => {\n const val = 'test'\n const result = textarea(val, options)\n expect(result).toBe(true)\n })\n it('should show required message', () => {\n const val = undefined\n const result = textarea(val, { ...options, required: true })\n expect(result).toBe('validation:required')\n })\n\n it('should handle undefined', () => {\n const val = undefined\n const result = textarea(val, options)\n expect(result).toBe(true)\n })\n it('should validate maxLength', () => {\n const val = 'toolong'\n const result = textarea(val, { ...options, maxLength: 5 })\n expect(result).toBe('validation:shorterThanMax')\n })\n\n it('should validate minLength', () => {\n const val = 'short'\n const result = textarea(val, { ...options, minLength: 10 })\n expect(result).toBe('validation:longerThanMin')\n })\n it('should validate maxLength with no value', () => {\n const val = undefined\n const result = textarea(val, { ...options, maxLength: 5 })\n expect(result).toBe(true)\n })\n it('should validate minLength with no value', () => {\n const val = undefined\n const result = textarea(val, { ...options, minLength: 10 })\n expect(result).toBe(true)\n })\n })\n\n describe('password', () => {\n const passwordOptions = {\n ...options,\n name: 'test',\n type: 'password',\n }\n it('should validate', () => {\n const val = 'test'\n const result = password(val, passwordOptions)\n expect(result).toBe(true)\n })\n it('should show required message', () => {\n const val = undefined\n const result = password(val, { ...passwordOptions, required: true })\n expect(result).toBe('validation:required')\n })\n it('should handle undefined', () => {\n const val = undefined\n const result = password(val, passwordOptions)\n expect(result).toBe(true)\n })\n it('should validate maxLength', () => {\n const val = 'toolong'\n const result = password(val, { ...passwordOptions, maxLength: 5 })\n expect(result).toBe('validation:shorterThanMax')\n })\n it('should validate minLength', () => {\n const val = 'short'\n const result = password(val, { ...passwordOptions, minLength: 10 })\n expect(result).toBe('validation:longerThanMin')\n })\n it('should validate maxLength with no value', () => {\n const val = undefined\n const result = password(val, { ...passwordOptions, maxLength: 5 })\n expect(result).toBe(true)\n })\n it('should validate minLength with no value', () => {\n const val = undefined\n const result = password(val, { ...passwordOptions, minLength: 10 })\n expect(result).toBe(true)\n })\n })\n\n describe('point', () => {\n const pointOptions = {\n ...options,\n name: 'point',\n type: 'point',\n }\n it('should validate numbers', () => {\n const val = ['0.1', '0.2']\n const result = point(val, pointOptions)\n expect(result).toBe(true)\n })\n it('should validate strings that could be numbers', () => {\n const val = ['0.1', '0.2']\n const result = point(val, pointOptions)\n expect(result).toBe(true)\n })\n it('should show required message when undefined', () => {\n const val = undefined\n const result = point(val, { ...pointOptions, required: true })\n expect(result).not.toBe(true)\n })\n it('should show required message when array', () => {\n const val = []\n const result = point(val, { ...pointOptions, required: true })\n expect(result).not.toBe(true)\n })\n it('should show required message when array of undefined', () => {\n const val = [undefined, undefined]\n const result = point(val, { ...pointOptions, required: true })\n expect(result).not.toBe(true)\n })\n it('should handle undefined not required', () => {\n const val = undefined\n const result = password(val, pointOptions)\n expect(result).toBe(true)\n })\n it('should handle empty array not required', () => {\n const val = []\n const result = point(val, pointOptions)\n expect(result).toBe(true)\n })\n it('should handle array of undefined not required', () => {\n const val = [undefined, undefined]\n const result = point(val, pointOptions)\n expect(result).toBe(true)\n })\n it('should prevent text input', () => {\n const val = ['bad', 'input']\n const result = point(val, pointOptions)\n expect(result).not.toBe(true)\n })\n it('should prevent missing value', () => {\n const val = [0.1]\n const result = point(val, pointOptions)\n expect(result).not.toBe(true)\n })\n })\n\n describe('relationship', () => {\n const relationCollection = {\n fields: [\n {\n name: 'id',\n type: 'text',\n },\n ],\n slug: 'relation',\n }\n\n const relationshipOptions = {\n ...options,\n req: {\n ...options.req,\n payload: {\n ...options.req.payload,\n config: {\n collections: [relationCollection],\n },\n collections: {\n relation: {\n config: relationCollection,\n },\n },\n },\n },\n relationTo: 'relation',\n }\n it('should handle required', async () => {\n const val = undefined\n const result = await relationship(val, { ...relationshipOptions, required: true })\n expect(result).not.toBe(true)\n })\n it('should handle required with hasMany', async () => {\n const val = []\n const result = await relationship(val, {\n ...relationshipOptions,\n hasMany: true,\n required: true,\n })\n expect(result).not.toBe(true)\n })\n it('should enforce hasMany min', async () => {\n const minOptions = {\n ...relationshipOptions,\n hasMany: true,\n minRows: 2,\n }\n\n const val = ['a']\n\n const result = await relationship(val, minOptions)\n expect(result).not.toBe(true)\n\n const allowed = await relationship(['a', 'b'], minOptions)\n expect(allowed).toStrictEqual(true)\n })\n it('should enforce hasMany max', async () => {\n const maxOptions = {\n ...relationshipOptions,\n hasMany: true,\n maxRows: 2,\n }\n let val = ['a', 'b', 'c']\n\n const result = await relationship(val, maxOptions)\n expect(result).not.toBe(true)\n\n val = ['a']\n const allowed = await relationship(val, maxOptions)\n expect(allowed).toStrictEqual(true)\n })\n })\n\n describe('select', () => {\n const selectOptions = {\n ...options,\n options: ['one', 'two', 'three'],\n type: 'select',\n }\n const optionsRequired = {\n ...selectOptions,\n options: [\n {\n label: 'One',\n value: 'one',\n },\n {\n label: 'two',\n value: 'two',\n },\n {\n label: 'three',\n value: 'three',\n },\n ],\n required: true,\n }\n const optionsWithEmptyString = {\n ...selectOptions,\n options: [\n {\n label: 'None',\n value: '',\n },\n {\n label: 'Option',\n value: 'option',\n },\n ],\n }\n it('should allow valid input', () => {\n const val = 'one'\n const result = select(val, selectOptions)\n expect(result).toStrictEqual(true)\n })\n it('should prevent invalid input', () => {\n const val = 'bad'\n const result = select(val, selectOptions)\n expect(result).not.toStrictEqual(true)\n })\n it('should allow null input', () => {\n const val = null\n const result = select(val, selectOptions)\n expect(result).toStrictEqual(true)\n })\n it('should allow undefined input', () => {\n let val\n const result = select(val, selectOptions)\n expect(result).toStrictEqual(true)\n })\n it('should prevent empty string input', () => {\n const val = ''\n const result = select(val, selectOptions)\n expect(result).not.toStrictEqual(true)\n })\n it('should prevent undefined input with required', () => {\n let val\n const result = select(val, optionsRequired)\n expect(result).not.toStrictEqual(true)\n })\n it('should prevent empty string input with required', () => {\n const result = select('', optionsRequired)\n expect(result).not.toStrictEqual(true)\n })\n it('should prevent undefined input with required and hasMany', () => {\n let val\n options.hasMany = true\n const result = select(val, optionsRequired)\n expect(result).not.toStrictEqual(true)\n })\n it('should prevent empty array input with required and hasMany', () => {\n optionsRequired.hasMany = true\n const result = select([], optionsRequired)\n expect(result).not.toStrictEqual(true)\n })\n it('should prevent empty string array input with required and hasMany', () => {\n options.hasMany = true\n const result = select([''], optionsRequired)\n expect(result).not.toStrictEqual(true)\n })\n it('should prevent null input with required and hasMany', () => {\n const val = null\n options.hasMany = true\n const result = select(val, optionsRequired)\n expect(result).not.toStrictEqual(true)\n })\n it('should allow valid input with option objects', () => {\n const val = 'one'\n options.hasMany = false\n const result = select(val, optionsRequired)\n expect(result).toStrictEqual(true)\n })\n it('should prevent invalid input with option objects', () => {\n const val = 'bad'\n options.hasMany = false\n const result = select(val, optionsRequired)\n expect(result).not.toStrictEqual(true)\n })\n it('should allow empty string input with option object', () => {\n const val = ''\n const result = select(val, optionsWithEmptyString)\n expect(result).toStrictEqual(true)\n })\n it('should allow empty string input with option object and required', () => {\n const val = ''\n optionsWithEmptyString.required = true\n const result = select(val, optionsWithEmptyString)\n expect(result).toStrictEqual(true)\n })\n it('should allow valid input with hasMany', () => {\n const val = ['one', 'two']\n const result = select(val, selectOptions)\n expect(result).toStrictEqual(true)\n })\n it('should prevent invalid input with hasMany', () => {\n const val = ['one', 'bad']\n const result = select(val, selectOptions)\n expect(result).not.toStrictEqual(true)\n })\n it('should allow valid input with hasMany option objects', () => {\n const val = ['one', 'three']\n optionsRequired.hasMany = true\n const result = select(val, optionsRequired)\n expect(result).toStrictEqual(true)\n })\n it('should prevent invalid input with hasMany option objects', () => {\n const val = ['three', 'bad']\n optionsRequired.hasMany = true\n const result = select(val, optionsRequired)\n expect(result).not.toStrictEqual(true)\n })\n })\n describe('number', () => {\n const numberOptions = {\n ...options,\n name: 'test',\n type: 'number',\n }\n it('should validate', () => {\n const val = 1\n const result = number(val, numberOptions)\n expect(result).toBe(true)\n })\n it('should validate 0', () => {\n const val = 0\n const result = number(val, { ...numberOptions, required: true })\n expect(result).toBe(true)\n })\n it('should validate 2', () => {\n const val = 1.5\n const result = number(val, numberOptions)\n expect(result).toBe(true)\n })\n it('should show invalid number message', () => {\n const val = 'test'\n const result = number(val, { ...numberOptions })\n expect(result).toBe('validation:enterNumber')\n })\n it('should handle empty value', () => {\n const val = ''\n const result = number(val, { ...numberOptions })\n expect(result).toBe(true)\n })\n it('should handle required value', () => {\n const val = ''\n const result = number(val, { ...numberOptions, required: true })\n expect(result).toBe('validation:required')\n })\n it('should validate minValue', () => {\n const val = 2.4\n const result = number(val, { ...numberOptions, min: 2.5 })\n expect(result).toBe('validation:lessThanMin')\n })\n it('should validate maxValue', () => {\n const val = 1.25\n const result = number(val, { ...numberOptions, max: 1 })\n expect(result).toBe('validation:greaterThanMax')\n })\n it('should validate an array of numbers', async () => {\n const val = [1.25, 2.5]\n const result = number(val, { ...numberOptions, hasMany: true })\n expect(result).toBe(true)\n })\n it('should validate an array of numbers using min', async () => {\n const val = [1.25, 2.5]\n const result = number(val, { ...numberOptions, hasMany: true, min: 3 })\n expect(result).toBe('validation:lessThanMin')\n })\n it('should validate an array of numbers using max', async () => {\n const val = [1.25, 2.5]\n const result = number(val, { ...numberOptions, hasMany: true, max: 1 })\n expect(result).toBe('validation:greaterThanMax')\n })\n it('should validate an array of numbers using minRows', async () => {\n const val = [1.25, 2.5]\n const result = number(val, { ...numberOptions, hasMany: true, minRows: 4 })\n expect(result).toBe('validation:requiresAtLeast')\n })\n it('should validate an array of numbers using maxRows', async () => {\n const val = [1.25, 2.5, 3.5]\n const result = number(val, { ...numberOptions, hasMany: true, maxRows: 2 })\n expect(result).toBe('validation:requiresNoMoreThan')\n })\n })\n})\n"],"names":["number","password","point","relationship","select","text","textarea","t","jest","fn","string","options","data","undefined","operation","siblingData","req","context","payload","config","describe","it","val","result","expect","toBe","required","maxLength","minLength","hasMany","field","name","type","passwordOptions","pointOptions","not","relationCollection","fields","slug","relationshipOptions","collections","relation","relationTo","minOptions","minRows","allowed","toStrictEqual","maxOptions","maxRows","selectOptions","optionsRequired","label","value","optionsWithEmptyString","numberOptions","min","max"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/fields/validations.spec.ts"],"sourcesContent":["import type { ValidateOptions } from './config/types.js'\n\nimport { number, password, point, relationship, select, text, textarea } from './validations.js'\n\nconst t = jest.fn((string) => string)\n\nlet options: ValidateOptions<any, any> = {\n data: undefined,\n operation: 'create',\n siblingData: undefined,\n req: {\n t,\n context: {},\n payload: {\n config: {\n db: {\n defaultIDType: 'text',\n init: () => null,\n },\n },\n },\n },\n}\n\ndescribe('Field Validations', () => {\n describe('text', () => {\n it('should validate', () => {\n const val = 'test'\n const result = text(val, options)\n expect(result).toBe(true)\n })\n it('should show required message', () => {\n const val = undefined\n const result = text(val, { ...options, required: true })\n expect(result).toBe('validation:required')\n })\n it('should handle undefined', () => {\n const val = undefined\n const result = text(val, options)\n expect(result).toBe(true)\n })\n it('should validate maxLength', () => {\n const val = 'toolong'\n const result = text(val, { ...options, maxLength: 5 })\n expect(result).toBe('validation:shorterThanMax')\n })\n it('should validate minLength', () => {\n const val = 'short'\n const result = text(val, { ...options, minLength: 10 })\n expect(result).toBe('validation:longerThanMin')\n })\n it('should validate maxLength with no value', () => {\n const val = undefined\n const result = text(val, { ...options, maxLength: 5 })\n expect(result).toBe(true)\n })\n it('should validate minLength with no value', () => {\n const val = undefined\n const result = text(val, { ...options, minLength: 10 })\n expect(result).toBe(true)\n })\n it('should validate an array of texts', async () => {\n const val = ['test']\n const result = text(val, { ...options, hasMany: true })\n expect(result).toBe(true)\n })\n it('should handle required array of texts', async () => {\n const val = ['test']\n const result = text(val, { ...options, hasMany: true, required: true })\n expect(result).toBe(true)\n })\n })\n\n describe('textarea', () => {\n options = { ...options, field: { name: 'test', type: 'textarea' } }\n it('should validate', () => {\n const val = 'test'\n const result = textarea(val, options)\n expect(result).toBe(true)\n })\n it('should show required message', () => {\n const val = undefined\n const result = textarea(val, { ...options, required: true })\n expect(result).toBe('validation:required')\n })\n\n it('should handle undefined', () => {\n const val = undefined\n const result = textarea(val, options)\n expect(result).toBe(true)\n })\n it('should validate maxLength', () => {\n const val = 'toolong'\n const result = textarea(val, { ...options, maxLength: 5 })\n expect(result).toBe('validation:shorterThanMax')\n })\n\n it('should validate minLength', () => {\n const val = 'short'\n const result = textarea(val, { ...options, minLength: 10 })\n expect(result).toBe('validation:longerThanMin')\n })\n it('should validate maxLength with no value', () => {\n const val = undefined\n const result = textarea(val, { ...options, maxLength: 5 })\n expect(result).toBe(true)\n })\n it('should validate minLength with no value', () => {\n const val = undefined\n const result = textarea(val, { ...options, minLength: 10 })\n expect(result).toBe(true)\n })\n })\n\n describe('password', () => {\n const passwordOptions = {\n ...options,\n name: 'test',\n type: 'password',\n }\n it('should validate', () => {\n const val = 'test'\n const result = password(val, passwordOptions)\n expect(result).toBe(true)\n })\n it('should show required message', () => {\n const val = undefined\n const result = password(val, { ...passwordOptions, required: true })\n expect(result).toBe('validation:required')\n })\n it('should handle undefined', () => {\n const val = undefined\n const result = password(val, passwordOptions)\n expect(result).toBe(true)\n })\n it('should validate maxLength', () => {\n const val = 'toolong'\n const result = password(val, { ...passwordOptions, maxLength: 5 })\n expect(result).toBe('validation:shorterThanMax')\n })\n it('should validate minLength', () => {\n const val = 'short'\n const result = password(val, { ...passwordOptions, minLength: 10 })\n expect(result).toBe('validation:longerThanMin')\n })\n it('should validate maxLength with no value', () => {\n const val = undefined\n const result = password(val, { ...passwordOptions, maxLength: 5 })\n expect(result).toBe(true)\n })\n it('should validate minLength with no value', () => {\n const val = undefined\n const result = password(val, { ...passwordOptions, minLength: 10 })\n expect(result).toBe(true)\n })\n })\n\n describe('point', () => {\n const pointOptions = {\n ...options,\n name: 'point',\n type: 'point',\n }\n it('should validate numbers', () => {\n const val = ['0.1', '0.2']\n const result = point(val, pointOptions)\n expect(result).toBe(true)\n })\n it('should validate strings that could be numbers', () => {\n const val = ['0.1', '0.2']\n const result = point(val, pointOptions)\n expect(result).toBe(true)\n })\n it('should show required message when undefined', () => {\n const val = undefined\n const result = point(val, { ...pointOptions, required: true })\n expect(result).not.toBe(true)\n })\n it('should show required message when array', () => {\n const val = []\n const result = point(val, { ...pointOptions, required: true })\n expect(result).not.toBe(true)\n })\n it('should show required message when array of undefined', () => {\n const val = [undefined, undefined]\n const result = point(val, { ...pointOptions, required: true })\n expect(result).not.toBe(true)\n })\n it('should handle undefined not required', () => {\n const val = undefined\n const result = password(val, pointOptions)\n expect(result).toBe(true)\n })\n it('should handle empty array not required', () => {\n const val = []\n const result = point(val, pointOptions)\n expect(result).toBe(true)\n })\n it('should handle array of undefined not required', () => {\n const val = [undefined, undefined]\n const result = point(val, pointOptions)\n expect(result).toBe(true)\n })\n it('should prevent text input', () => {\n const val = ['bad', 'input']\n const result = point(val, pointOptions)\n expect(result).not.toBe(true)\n })\n it('should prevent missing value', () => {\n const val = [0.1]\n const result = point(val, pointOptions)\n expect(result).not.toBe(true)\n })\n })\n\n describe('relationship', () => {\n const relationCollection = {\n fields: [\n {\n name: 'id',\n type: 'text',\n },\n ],\n slug: 'relation',\n }\n\n const relationshipOptions = {\n ...options,\n req: {\n ...options.req,\n payload: {\n ...options.req.payload,\n config: {\n collections: [relationCollection],\n },\n collections: {\n relation: {\n config: relationCollection,\n },\n },\n },\n },\n relationTo: 'relation',\n }\n it('should handle required', async () => {\n const val = undefined\n const result = await relationship(val, { ...relationshipOptions, required: true })\n expect(result).not.toBe(true)\n })\n it('should handle required with hasMany', async () => {\n const val = []\n const result = await relationship(val, {\n ...relationshipOptions,\n hasMany: true,\n required: true,\n })\n expect(result).not.toBe(true)\n })\n it('should enforce hasMany min', async () => {\n const minOptions = {\n ...relationshipOptions,\n hasMany: true,\n minRows: 2,\n }\n\n const val = ['a']\n\n const result = await relationship(val, minOptions)\n expect(result).not.toBe(true)\n\n const allowed = await relationship(['a', 'b'], minOptions)\n expect(allowed).toStrictEqual(true)\n })\n it('should enforce hasMany max', async () => {\n const maxOptions = {\n ...relationshipOptions,\n hasMany: true,\n maxRows: 2,\n }\n let val = ['a', 'b', 'c']\n\n const result = await relationship(val, maxOptions)\n expect(result).not.toBe(true)\n\n val = ['a']\n const allowed = await relationship(val, maxOptions)\n expect(allowed).toStrictEqual(true)\n })\n })\n\n describe('select', () => {\n const selectOptions = {\n ...options,\n options: ['one', 'two', 'three'],\n type: 'select',\n }\n const optionsRequired = {\n ...selectOptions,\n options: [\n {\n label: 'One',\n value: 'one',\n },\n {\n label: 'two',\n value: 'two',\n },\n {\n label: 'three',\n value: 'three',\n },\n ],\n required: true,\n }\n const optionsWithEmptyString = {\n ...selectOptions,\n options: [\n {\n label: 'None',\n value: '',\n },\n {\n label: 'Option',\n value: 'option',\n },\n ],\n }\n it('should allow valid input', () => {\n const val = 'one'\n const result = select(val, selectOptions)\n expect(result).toStrictEqual(true)\n })\n it('should prevent invalid input', () => {\n const val = 'bad'\n const result = select(val, selectOptions)\n expect(result).not.toStrictEqual(true)\n })\n it('should allow null input', () => {\n const val = null\n const result = select(val, selectOptions)\n expect(result).toStrictEqual(true)\n })\n it('should allow undefined input', () => {\n let val\n const result = select(val, selectOptions)\n expect(result).toStrictEqual(true)\n })\n it('should prevent empty string input', () => {\n const val = ''\n const result = select(val, selectOptions)\n expect(result).not.toStrictEqual(true)\n })\n it('should prevent undefined input with required', () => {\n let val\n const result = select(val, optionsRequired)\n expect(result).not.toStrictEqual(true)\n })\n it('should prevent empty string input with required', () => {\n const result = select('', optionsRequired)\n expect(result).not.toStrictEqual(true)\n })\n it('should prevent undefined input with required and hasMany', () => {\n let val\n options.hasMany = true\n const result = select(val, optionsRequired)\n expect(result).not.toStrictEqual(true)\n })\n it('should prevent empty array input with required and hasMany', () => {\n optionsRequired.hasMany = true\n const result = select([], optionsRequired)\n expect(result).not.toStrictEqual(true)\n })\n it('should prevent empty string array input with required and hasMany', () => {\n options.hasMany = true\n const result = select([''], optionsRequired)\n expect(result).not.toStrictEqual(true)\n })\n it('should prevent null input with required and hasMany', () => {\n const val = null\n options.hasMany = true\n const result = select(val, optionsRequired)\n expect(result).not.toStrictEqual(true)\n })\n it('should allow valid input with option objects', () => {\n const val = 'one'\n options.hasMany = false\n const result = select(val, optionsRequired)\n expect(result).toStrictEqual(true)\n })\n it('should prevent invalid input with option objects', () => {\n const val = 'bad'\n options.hasMany = false\n const result = select(val, optionsRequired)\n expect(result).not.toStrictEqual(true)\n })\n it('should allow empty string input with option object', () => {\n const val = ''\n const result = select(val, optionsWithEmptyString)\n expect(result).toStrictEqual(true)\n })\n it('should allow empty string input with option object and required', () => {\n const val = ''\n optionsWithEmptyString.required = true\n const result = select(val, optionsWithEmptyString)\n expect(result).toStrictEqual(true)\n })\n it('should allow valid input with hasMany', () => {\n const val = ['one', 'two']\n const result = select(val, selectOptions)\n expect(result).toStrictEqual(true)\n })\n it('should prevent invalid input with hasMany', () => {\n const val = ['one', 'bad']\n const result = select(val, selectOptions)\n expect(result).not.toStrictEqual(true)\n })\n it('should allow valid input with hasMany option objects', () => {\n const val = ['one', 'three']\n optionsRequired.hasMany = true\n const result = select(val, optionsRequired)\n expect(result).toStrictEqual(true)\n })\n it('should prevent invalid input with hasMany option objects', () => {\n const val = ['three', 'bad']\n optionsRequired.hasMany = true\n const result = select(val, optionsRequired)\n expect(result).not.toStrictEqual(true)\n })\n })\n describe('number', () => {\n const numberOptions = {\n ...options,\n name: 'test',\n type: 'number',\n }\n it('should validate', () => {\n const val = 1\n const result = number(val, numberOptions)\n expect(result).toBe(true)\n })\n it('should validate 0', () => {\n const val = 0\n const result = number(val, { ...numberOptions, required: true })\n expect(result).toBe(true)\n })\n it('should validate 2', () => {\n const val = 1.5\n const result = number(val, numberOptions)\n expect(result).toBe(true)\n })\n it('should show invalid number message', () => {\n const val = 'test'\n const result = number(val, { ...numberOptions })\n expect(result).toBe('validation:enterNumber')\n })\n it('should handle empty value', () => {\n const val = ''\n const result = number(val, { ...numberOptions })\n expect(result).toBe(true)\n })\n it('should handle required value', () => {\n const val = ''\n const result = number(val, { ...numberOptions, required: true })\n expect(result).toBe('validation:required')\n })\n it('should validate minValue', () => {\n const val = 2.4\n const result = number(val, { ...numberOptions, min: 2.5 })\n expect(result).toBe('validation:lessThanMin')\n })\n it('should validate maxValue', () => {\n const val = 1.25\n const result = number(val, { ...numberOptions, max: 1 })\n expect(result).toBe('validation:greaterThanMax')\n })\n it('should validate an array of numbers', async () => {\n const val = [1.25, 2.5]\n const result = number(val, { ...numberOptions, hasMany: true })\n expect(result).toBe(true)\n })\n it('should validate an array of numbers using min', async () => {\n const val = [1.25, 2.5]\n const result = number(val, { ...numberOptions, hasMany: true, min: 3 })\n expect(result).toBe('validation:lessThanMin')\n })\n it('should validate an array of numbers using max', async () => {\n const val = [1.25, 2.5]\n const result = number(val, { ...numberOptions, hasMany: true, max: 1 })\n expect(result).toBe('validation:greaterThanMax')\n })\n it('should validate an array of numbers using minRows', async () => {\n const val = [1.25, 2.5]\n const result = number(val, { ...numberOptions, hasMany: true, minRows: 4 })\n expect(result).toBe('validation:requiresAtLeast')\n })\n it('should validate an array of numbers using maxRows', async () => {\n const val = [1.25, 2.5, 3.5]\n const result = number(val, { ...numberOptions, hasMany: true, maxRows: 2 })\n expect(result).toBe('validation:requiresNoMoreThan')\n })\n })\n})\n"],"names":["number","password","point","relationship","select","text","textarea","t","jest","fn","string","options","data","undefined","operation","siblingData","req","context","payload","config","db","defaultIDType","init","describe","it","val","result","expect","toBe","required","maxLength","minLength","hasMany","field","name","type","passwordOptions","pointOptions","not","relationCollection","fields","slug","relationshipOptions","collections","relation","relationTo","minOptions","minRows","allowed","toStrictEqual","maxOptions","maxRows","selectOptions","optionsRequired","label","value","optionsWithEmptyString","numberOptions","min","max"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -1,7 +1,8 @@
1
+ import type { TFunction } from '@payloadcms/translations';
1
2
  import type { LivePreviewConfig, SanitizedConfig, ServerOnlyLivePreviewProperties } from '../../config/types.js';
2
3
  import type { ClientFieldConfig } from '../../fields/config/client.js';
3
4
  import type { SanitizedGlobalConfig } from './types.js';
4
- export type ServerOnlyGlobalProperties = keyof Pick<SanitizedGlobalConfig, 'access' | 'admin' | 'endpoints' | 'fields' | 'hooks'>;
5
+ export type ServerOnlyGlobalProperties = keyof Pick<SanitizedGlobalConfig, 'access' | 'admin' | 'custom' | 'endpoints' | 'fields' | 'hooks'>;
5
6
  export type ServerOnlyGlobalAdminProperties = keyof Pick<SanitizedGlobalConfig['admin'], 'components' | 'hidden' | 'preview'>;
6
7
  export type ClientGlobalConfig = Omit<SanitizedGlobalConfig, 'admin' | 'fields' | ServerOnlyGlobalProperties> & {
7
8
  admin: Omit<SanitizedGlobalConfig['admin'], ServerOnlyGlobalAdminProperties & 'fields' & 'livePreview'> & {
@@ -9,6 +10,12 @@ export type ClientGlobalConfig = Omit<SanitizedGlobalConfig, 'admin' | 'fields'
9
10
  };
10
11
  fields: ClientFieldConfig[];
11
12
  };
12
- export declare const createClientGlobalConfig: (global: SanitizedConfig['globals'][0]) => ClientGlobalConfig;
13
- export declare const createClientGlobalConfigs: (globals: SanitizedConfig['globals']) => ClientGlobalConfig[];
13
+ export declare const createClientGlobalConfig: ({ global, t, }: {
14
+ global: SanitizedConfig['globals'][0];
15
+ t: TFunction;
16
+ }) => ClientGlobalConfig;
17
+ export declare const createClientGlobalConfigs: ({ globals, t, }: {
18
+ globals: SanitizedConfig['globals'];
19
+ t: TFunction;
20
+ }) => ClientGlobalConfig[];
14
21
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/globals/config/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EACf,+BAA+B,EAChC,MAAM,uBAAuB,CAAA;AAC9B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AACtE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAIvD,MAAM,MAAM,0BAA0B,GAAG,MAAM,IAAI,CACjD,qBAAqB,EACrB,QAAQ,GAAG,OAAO,GAAG,WAAW,GAAG,QAAQ,GAAG,OAAO,CACtD,CAAA;AACD,MAAM,MAAM,+BAA+B,GAAG,MAAM,IAAI,CACtD,qBAAqB,CAAC,OAAO,CAAC,EAC9B,YAAY,GAAG,QAAQ,GAAG,SAAS,CACpC,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG,IAAI,CACnC,qBAAqB,EACrB,OAAO,GAAG,QAAQ,GAAG,0BAA0B,CAChD,GAAG;IACF,KAAK,EAAE,IAAI,CACT,qBAAqB,CAAC,OAAO,CAAC,EAC9B,+BAA+B,GAAG,QAAQ,GAAG,aAAa,CAC3D,GAAG;QACF,WAAW,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,+BAA+B,CAAC,CAAA;KACvE,CAAA;IACD,MAAM,EAAE,iBAAiB,EAAE,CAAA;CAC5B,CAAA;AAED,eAAO,MAAM,wBAAwB,WAC3B,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KACpC,kBAuCF,CAAA;AAED,eAAO,MAAM,yBAAyB,YAC3B,eAAe,CAAC,SAAS,CAAC,KAClC,kBAAkB,EAA+D,CAAA"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/globals/config/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AAEzD,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EACf,+BAA+B,EAChC,MAAM,uBAAuB,CAAA;AAC9B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AACtE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAIvD,MAAM,MAAM,0BAA0B,GAAG,MAAM,IAAI,CACjD,qBAAqB,EACrB,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,OAAO,CACjE,CAAA;AACD,MAAM,MAAM,+BAA+B,GAAG,MAAM,IAAI,CACtD,qBAAqB,CAAC,OAAO,CAAC,EAC9B,YAAY,GAAG,QAAQ,GAAG,SAAS,CACpC,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG,IAAI,CACnC,qBAAqB,EACrB,OAAO,GAAG,QAAQ,GAAG,0BAA0B,CAChD,GAAG;IACF,KAAK,EAAE,IAAI,CACT,qBAAqB,CAAC,OAAO,CAAC,EAC9B,+BAA+B,GAAG,QAAQ,GAAG,aAAa,CAC3D,GAAG;QACF,WAAW,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,+BAA+B,CAAC,CAAA;KACvE,CAAA;IACD,MAAM,EAAE,iBAAiB,EAAE,CAAA;CAC5B,CAAA;AAED,eAAO,MAAM,wBAAwB,mBAGlC;IACD,MAAM,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;IACrC,CAAC,EAAE,SAAS,CAAA;CACb,KAAG,kBAwCH,CAAA;AAED,eAAO,MAAM,yBAAyB,oBAGnC;IACD,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,CAAA;IACnC,CAAC,EAAE,SAAS,CAAA;CACb,KAAG,kBAAkB,EAAsE,CAAA"}
@@ -1,13 +1,17 @@
1
1
  import { createClientFieldConfigs } from '../../fields/config/client.js';
2
- export const createClientGlobalConfig = (global)=>{
2
+ export const createClientGlobalConfig = ({ global, t })=>{
3
3
  const sanitized = {
4
4
  ...global
5
5
  };
6
- sanitized.fields = createClientFieldConfigs(sanitized.fields);
6
+ sanitized.fields = createClientFieldConfigs({
7
+ fields: sanitized.fields,
8
+ t
9
+ });
7
10
  const serverOnlyProperties = [
8
11
  'hooks',
9
12
  'access',
10
- 'endpoints'
13
+ 'endpoints',
14
+ 'custom'
11
15
  ];
12
16
  serverOnlyProperties.forEach((key)=>{
13
17
  if (key in sanitized) {
@@ -37,6 +41,9 @@ export const createClientGlobalConfig = (global)=>{
37
41
  }
38
42
  return sanitized;
39
43
  };
40
- export const createClientGlobalConfigs = (globals)=>globals.map((global)=>createClientGlobalConfig(global));
44
+ export const createClientGlobalConfigs = ({ globals, t })=>globals.map((global)=>createClientGlobalConfig({
45
+ global,
46
+ t
47
+ }));
41
48
 
42
49
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/globals/config/client.ts"],"sourcesContent":["import type {\n LivePreviewConfig,\n SanitizedConfig,\n ServerOnlyLivePreviewProperties,\n} from '../../config/types.js'\nimport type { ClientFieldConfig } from '../../fields/config/client.js'\nimport type { SanitizedGlobalConfig } from './types.js'\n\nimport { createClientFieldConfigs } from '../../fields/config/client.js'\n\nexport type ServerOnlyGlobalProperties = keyof Pick<\n SanitizedGlobalConfig,\n 'access' | 'admin' | 'endpoints' | 'fields' | 'hooks'\n>\nexport type ServerOnlyGlobalAdminProperties = keyof Pick<\n SanitizedGlobalConfig['admin'],\n 'components' | 'hidden' | 'preview'\n>\n\nexport type ClientGlobalConfig = Omit<\n SanitizedGlobalConfig,\n 'admin' | 'fields' | ServerOnlyGlobalProperties\n> & {\n admin: Omit<\n SanitizedGlobalConfig['admin'],\n ServerOnlyGlobalAdminProperties & 'fields' & 'livePreview'\n > & {\n livePreview?: Omit<LivePreviewConfig, ServerOnlyLivePreviewProperties>\n }\n fields: ClientFieldConfig[]\n}\n\nexport const createClientGlobalConfig = (\n global: SanitizedConfig['globals'][0],\n): ClientGlobalConfig => {\n const sanitized = { ...global }\n sanitized.fields = createClientFieldConfigs(sanitized.fields)\n\n const serverOnlyProperties: Partial<ServerOnlyGlobalProperties>[] = [\n 'hooks',\n 'access',\n 'endpoints',\n // `admin` is handled separately\n ]\n\n serverOnlyProperties.forEach((key) => {\n if (key in sanitized) {\n delete sanitized[key]\n }\n })\n\n if ('admin' in sanitized) {\n sanitized.admin = { ...sanitized.admin }\n\n const serverOnlyGlobalAdminProperties: Partial<ServerOnlyGlobalAdminProperties>[] = [\n 'components',\n 'hidden',\n 'preview',\n ]\n\n serverOnlyGlobalAdminProperties.forEach((key) => {\n if (key in sanitized.admin) {\n delete sanitized.admin[key]\n }\n })\n\n if ('livePreview' in sanitized.admin) {\n sanitized.admin.livePreview = { ...sanitized.admin.livePreview }\n delete sanitized.admin.livePreview.url\n }\n }\n\n return sanitized\n}\n\nexport const createClientGlobalConfigs = (\n globals: SanitizedConfig['globals'],\n): ClientGlobalConfig[] => globals.map((global) => createClientGlobalConfig(global))\n"],"names":["createClientFieldConfigs","createClientGlobalConfig","global","sanitized","fields","serverOnlyProperties","forEach","key","admin","serverOnlyGlobalAdminProperties","livePreview","url","createClientGlobalConfigs","globals","map"],"mappings":"AAQA,SAASA,wBAAwB,QAAQ,gCAA+B;AAwBxE,OAAO,MAAMC,2BAA2B,CACtCC;IAEA,MAAMC,YAAY;QAAE,GAAGD,MAAM;IAAC;IAC9BC,UAAUC,MAAM,GAAGJ,yBAAyBG,UAAUC,MAAM;IAE5D,MAAMC,uBAA8D;QAClE;QACA;QACA;KAED;IAEDA,qBAAqBC,OAAO,CAAC,CAACC;QAC5B,IAAIA,OAAOJ,WAAW;YACpB,OAAOA,SAAS,CAACI,IAAI;QACvB;IACF;IAEA,IAAI,WAAWJ,WAAW;QACxBA,UAAUK,KAAK,GAAG;YAAE,GAAGL,UAAUK,KAAK;QAAC;QAEvC,MAAMC,kCAA8E;YAClF;YACA;YACA;SACD;QAEDA,gCAAgCH,OAAO,CAAC,CAACC;YACvC,IAAIA,OAAOJ,UAAUK,KAAK,EAAE;gBAC1B,OAAOL,UAAUK,KAAK,CAACD,IAAI;YAC7B;QACF;QAEA,IAAI,iBAAiBJ,UAAUK,KAAK,EAAE;YACpCL,UAAUK,KAAK,CAACE,WAAW,GAAG;gBAAE,GAAGP,UAAUK,KAAK,CAACE,WAAW;YAAC;YAC/D,OAAOP,UAAUK,KAAK,CAACE,WAAW,CAACC,GAAG;QACxC;IACF;IAEA,OAAOR;AACT,EAAC;AAED,OAAO,MAAMS,4BAA4B,CACvCC,UACyBA,QAAQC,GAAG,CAAC,CAACZ,SAAWD,yBAAyBC,SAAQ"}
1
+ {"version":3,"sources":["../../../src/globals/config/client.ts"],"sourcesContent":["import type { TFunction } from '@payloadcms/translations'\n\nimport type {\n LivePreviewConfig,\n SanitizedConfig,\n ServerOnlyLivePreviewProperties,\n} from '../../config/types.js'\nimport type { ClientFieldConfig } from '../../fields/config/client.js'\nimport type { SanitizedGlobalConfig } from './types.js'\n\nimport { createClientFieldConfigs } from '../../fields/config/client.js'\n\nexport type ServerOnlyGlobalProperties = keyof Pick<\n SanitizedGlobalConfig,\n 'access' | 'admin' | 'custom' | 'endpoints' | 'fields' | 'hooks'\n>\nexport type ServerOnlyGlobalAdminProperties = keyof Pick<\n SanitizedGlobalConfig['admin'],\n 'components' | 'hidden' | 'preview'\n>\n\nexport type ClientGlobalConfig = Omit<\n SanitizedGlobalConfig,\n 'admin' | 'fields' | ServerOnlyGlobalProperties\n> & {\n admin: Omit<\n SanitizedGlobalConfig['admin'],\n ServerOnlyGlobalAdminProperties & 'fields' & 'livePreview'\n > & {\n livePreview?: Omit<LivePreviewConfig, ServerOnlyLivePreviewProperties>\n }\n fields: ClientFieldConfig[]\n}\n\nexport const createClientGlobalConfig = ({\n global,\n t,\n}: {\n global: SanitizedConfig['globals'][0]\n t: TFunction\n}): ClientGlobalConfig => {\n const sanitized = { ...global }\n sanitized.fields = createClientFieldConfigs({ fields: sanitized.fields, t })\n\n const serverOnlyProperties: Partial<ServerOnlyGlobalProperties>[] = [\n 'hooks',\n 'access',\n 'endpoints',\n 'custom',\n // `admin` is handled separately\n ]\n\n serverOnlyProperties.forEach((key) => {\n if (key in sanitized) {\n delete sanitized[key]\n }\n })\n\n if ('admin' in sanitized) {\n sanitized.admin = { ...sanitized.admin }\n\n const serverOnlyGlobalAdminProperties: Partial<ServerOnlyGlobalAdminProperties>[] = [\n 'components',\n 'hidden',\n 'preview',\n ]\n\n serverOnlyGlobalAdminProperties.forEach((key) => {\n if (key in sanitized.admin) {\n delete sanitized.admin[key]\n }\n })\n\n if ('livePreview' in sanitized.admin) {\n sanitized.admin.livePreview = { ...sanitized.admin.livePreview }\n delete sanitized.admin.livePreview.url\n }\n }\n\n return sanitized\n}\n\nexport const createClientGlobalConfigs = ({\n globals,\n t,\n}: {\n globals: SanitizedConfig['globals']\n t: TFunction\n}): ClientGlobalConfig[] => globals.map((global) => createClientGlobalConfig({ global, t }))\n"],"names":["createClientFieldConfigs","createClientGlobalConfig","global","t","sanitized","fields","serverOnlyProperties","forEach","key","admin","serverOnlyGlobalAdminProperties","livePreview","url","createClientGlobalConfigs","globals","map"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAUA,SAASA,wBAAwB,QAAQ,gCAA+B;AAwBxE,OAAO,MAAMC,2BAA2B,CAAC,EACvCC,MAAM,EACNC,CAAC,EAIF;IACC,MAAMC,YAAY;QAAE,GAAGF,MAAM;IAAC;IAC9BE,UAAUC,MAAM,GAAGL,yBAAyB;QAAEK,QAAQD,UAAUC,MAAM;QAAEF;IAAE;IAE1E,MAAMG,uBAA8D;QAClE;QACA;QACA;QACA;KAED;IAEDA,qBAAqBC,OAAO,CAAC,CAACC;QAC5B,IAAIA,OAAOJ,WAAW;YACpB,OAAOA,SAAS,CAACI,IAAI;QACvB;IACF;IAEA,IAAI,WAAWJ,WAAW;QACxBA,UAAUK,KAAK,GAAG;YAAE,GAAGL,UAAUK,KAAK;QAAC;QAEvC,MAAMC,kCAA8E;YAClF;YACA;YACA;SACD;QAEDA,gCAAgCH,OAAO,CAAC,CAACC;YACvC,IAAIA,OAAOJ,UAAUK,KAAK,EAAE;gBAC1B,OAAOL,UAAUK,KAAK,CAACD,IAAI;YAC7B;QACF;QAEA,IAAI,iBAAiBJ,UAAUK,KAAK,EAAE;YACpCL,UAAUK,KAAK,CAACE,WAAW,GAAG;gBAAE,GAAGP,UAAUK,KAAK,CAACE,WAAW;YAAC;YAC/D,OAAOP,UAAUK,KAAK,CAACE,WAAW,CAACC,GAAG;QACxC;IACF;IAEA,OAAOR;AACT,EAAC;AAED,OAAO,MAAMS,4BAA4B,CAAC,EACxCC,OAAO,EACPX,CAAC,EAIF,GAA2BW,QAAQC,GAAG,CAAC,CAACb,SAAWD,yBAAyB;YAAEC;YAAQC;QAAE,IAAG"}
@@ -1 +1 @@
1
- {"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../../src/globals/config/sanitize.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAWvD,QAAA,MAAM,eAAe,WAAY,MAAM,KAAG,qBAAqB,EA8F9D,CAAA;AAED,eAAe,eAAe,CAAA"}
1
+ {"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../../src/globals/config/sanitize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AASvD,QAAA,MAAM,eAAe,WAAY,MAAM,KAAG,qBAAqB,EA8F9D,CAAA;AAED,eAAe,eAAe,CAAA"}
@@ -1,14 +1,9 @@
1
- import { extractTranslations } from 'payload/utilities';
2
1
  import defaultAccess from '../../auth/defaultAccess.js';
3
2
  import { sanitizeFields } from '../../fields/config/sanitize.js';
4
3
  import { fieldAffectsData } from '../../fields/config/types.js';
5
4
  import mergeBaseFields from '../../fields/mergeBaseFields.js';
6
5
  import { toWords } from '../../utilities/formatLabels.js';
7
6
  import baseVersionFields from '../../versions/baseFields.js';
8
- const translations = extractTranslations([
9
- 'general:createdAt',
10
- 'general:updatedAt'
11
- ]);
12
7
  const sanitizeGlobals = (config)=>{
13
8
  const { collections, globals } = config;
14
9
  const sanitizedGlobals = globals.map((global)=>{
@@ -69,7 +64,7 @@ const sanitizeGlobals = (config)=>{
69
64
  disableBulkEdit: true,
70
65
  hidden: true
71
66
  },
72
- label: translations['general:updatedAt']
67
+ label: ({ t })=>t('general:updatedAt')
73
68
  });
74
69
  }
75
70
  if (!hasCreatedAt) {
@@ -80,7 +75,7 @@ const sanitizeGlobals = (config)=>{
80
75
  disableBulkEdit: true,
81
76
  hidden: true
82
77
  },
83
- label: translations['general:createdAt']
78
+ label: ({ t })=>t('general:createdAt')
84
79
  });
85
80
  }
86
81
  const validRelationships = collections.map((c)=>c.slug) || [];