payload 4.0.0-internal.c2b57ce → 4.0.0-internal.cd69eef

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 (822) hide show
  1. package/LICENSE.md +1 -1
  2. package/bin.js +11 -0
  3. package/dist/__testing__/predefinedMigration.d.ts +4 -3
  4. package/dist/__testing__/predefinedMigration.d.ts.map +1 -1
  5. package/dist/admin/RichText.d.ts +3 -11
  6. package/dist/admin/RichText.d.ts.map +1 -1
  7. package/dist/admin/RichText.js.map +1 -1
  8. package/dist/admin/adapters/devReload.d.ts +9 -0
  9. package/dist/admin/adapters/devReload.d.ts.map +1 -0
  10. package/dist/admin/adapters/devReload.js +6 -0
  11. package/dist/admin/adapters/devReload.js.map +1 -0
  12. package/dist/admin/adapters/index.d.ts +3 -0
  13. package/dist/admin/adapters/index.d.ts.map +1 -1
  14. package/dist/admin/adapters/index.js.map +1 -1
  15. package/dist/admin/adapters/render.d.ts +16 -0
  16. package/dist/admin/adapters/render.d.ts.map +1 -0
  17. package/dist/admin/adapters/render.js +7 -0
  18. package/dist/admin/adapters/render.js.map +1 -0
  19. package/dist/admin/adapters/router.d.ts +8 -0
  20. package/dist/admin/adapters/router.d.ts.map +1 -1
  21. package/dist/admin/adapters/router.js.map +1 -1
  22. package/dist/admin/adapters/views.d.ts +36 -0
  23. package/dist/admin/adapters/views.d.ts.map +1 -0
  24. package/dist/admin/adapters/views.js +7 -0
  25. package/dist/admin/adapters/views.js.map +1 -0
  26. package/dist/admin/fields/Row.d.ts +2 -2
  27. package/dist/admin/fields/Row.d.ts.map +1 -1
  28. package/dist/admin/fields/Row.js.map +1 -1
  29. package/dist/admin/forms/Description.d.ts +2 -2
  30. package/dist/admin/forms/Description.d.ts.map +1 -1
  31. package/dist/admin/forms/Description.js.map +1 -1
  32. package/dist/admin/forms/Field.d.ts +10 -5
  33. package/dist/admin/forms/Field.d.ts.map +1 -1
  34. package/dist/admin/forms/Field.js.map +1 -1
  35. package/dist/admin/functions/index.d.ts +10 -1
  36. package/dist/admin/functions/index.d.ts.map +1 -1
  37. package/dist/admin/functions/index.js.map +1 -1
  38. package/dist/admin/types.d.ts +3 -2
  39. package/dist/admin/types.d.ts.map +1 -1
  40. package/dist/admin/types.js.map +1 -1
  41. package/dist/admin/views/dashboard.d.ts +7 -0
  42. package/dist/admin/views/dashboard.d.ts.map +1 -1
  43. package/dist/admin/views/dashboard.js.map +1 -1
  44. package/dist/admin/views/document.d.ts +5 -3
  45. package/dist/admin/views/document.d.ts.map +1 -1
  46. package/dist/admin/views/document.js.map +1 -1
  47. package/dist/admin/views/list.d.ts +10 -1
  48. package/dist/admin/views/list.d.ts.map +1 -1
  49. package/dist/admin/views/list.js.map +1 -1
  50. package/dist/auth/baseFields/apiKey.d.ts +10 -2
  51. package/dist/auth/baseFields/apiKey.d.ts.map +1 -1
  52. package/dist/auth/baseFields/apiKey.js +35 -24
  53. package/dist/auth/baseFields/apiKey.js.map +1 -1
  54. package/dist/auth/cookies.d.ts +2 -2
  55. package/dist/auth/cookies.d.ts.map +1 -1
  56. package/dist/auth/defaultAccess.d.ts +1 -1
  57. package/dist/auth/defaultAccess.d.ts.map +1 -1
  58. package/dist/auth/defaultAccess.js +1 -1
  59. package/dist/auth/defaultAccess.js.map +1 -1
  60. package/dist/auth/defaultUser.d.ts.map +1 -1
  61. package/dist/auth/defaultUser.js +2 -1
  62. package/dist/auth/defaultUser.js.map +1 -1
  63. package/dist/auth/ensureUsernameOrEmail.d.ts.map +1 -1
  64. package/dist/auth/executeAccess.d.ts.map +1 -1
  65. package/dist/auth/executeAuthStrategies.d.ts.map +1 -1
  66. package/dist/auth/extractAccessFromPermission.d.ts.map +1 -1
  67. package/dist/auth/extractJWT.d.ts +1 -1
  68. package/dist/auth/extractJWT.d.ts.map +1 -1
  69. package/dist/auth/getAuthFields.d.ts.map +1 -1
  70. package/dist/auth/getAuthFields.js +2 -2
  71. package/dist/auth/getAuthFields.js.map +1 -1
  72. package/dist/auth/getFieldsToSign.d.ts +1 -1
  73. package/dist/auth/getFieldsToSign.d.ts.map +1 -1
  74. package/dist/auth/getLoginOptions.d.ts +1 -1
  75. package/dist/auth/getLoginOptions.d.ts.map +1 -1
  76. package/dist/auth/isUserLocked.d.ts.map +1 -1
  77. package/dist/auth/jwt.d.ts.map +1 -1
  78. package/dist/auth/operations/access.d.ts.map +1 -1
  79. package/dist/auth/operations/auth.d.ts +2 -2
  80. package/dist/auth/operations/auth.d.ts.map +1 -1
  81. package/dist/auth/operations/auth.js.map +1 -1
  82. package/dist/auth/operations/forgotPassword.d.ts.map +1 -1
  83. package/dist/auth/operations/init.d.ts.map +1 -1
  84. package/dist/auth/operations/local/auth.d.ts.map +1 -1
  85. package/dist/auth/operations/login.d.ts +2 -1
  86. package/dist/auth/operations/login.d.ts.map +1 -1
  87. package/dist/auth/operations/login.js.map +1 -1
  88. package/dist/auth/operations/logout.d.ts.map +1 -1
  89. package/dist/auth/operations/me.d.ts +2 -2
  90. package/dist/auth/operations/me.d.ts.map +1 -1
  91. package/dist/auth/operations/me.js.map +1 -1
  92. package/dist/auth/operations/refresh.d.ts.map +1 -1
  93. package/dist/auth/operations/refresh.js +9 -3
  94. package/dist/auth/operations/refresh.js.map +1 -1
  95. package/dist/auth/operations/registerFirstUser.d.ts.map +1 -1
  96. package/dist/auth/operations/resetPassword.d.ts.map +1 -1
  97. package/dist/auth/operations/resetPassword.js.map +1 -1
  98. package/dist/auth/operations/unlock.d.ts.map +1 -1
  99. package/dist/auth/operations/verifyEmail.d.ts.map +1 -1
  100. package/dist/auth/sendVerificationEmail.d.ts +2 -2
  101. package/dist/auth/sendVerificationEmail.d.ts.map +1 -1
  102. package/dist/auth/sendVerificationEmail.js +1 -1
  103. package/dist/auth/sendVerificationEmail.js.map +1 -1
  104. package/dist/auth/sessions.d.ts +4 -5
  105. package/dist/auth/sessions.d.ts.map +1 -1
  106. package/dist/auth/sessions.js +5 -3
  107. package/dist/auth/sessions.js.map +1 -1
  108. package/dist/auth/strategies/apiKey.d.ts.map +1 -1
  109. package/dist/auth/strategies/apiKey.js.map +1 -1
  110. package/dist/auth/strategies/local/authenticate.d.ts.map +1 -1
  111. package/dist/auth/strategies/local/generatePasswordSaltHash.d.ts.map +1 -1
  112. package/dist/auth/strategies/local/incrementLoginAttempts.d.ts +2 -2
  113. package/dist/auth/strategies/local/incrementLoginAttempts.d.ts.map +1 -1
  114. package/dist/auth/strategies/local/incrementLoginAttempts.js +1 -1
  115. package/dist/auth/strategies/local/incrementLoginAttempts.js.map +1 -1
  116. package/dist/auth/strategies/local/register.d.ts.map +1 -1
  117. package/dist/auth/strategies/local/resetLoginAttempts.d.ts.map +1 -1
  118. package/dist/auth/types.d.ts +25 -21
  119. package/dist/auth/types.d.ts.map +1 -1
  120. package/dist/auth/types.js.map +1 -1
  121. package/dist/bin/build.d.ts +49 -0
  122. package/dist/bin/build.d.ts.map +1 -0
  123. package/dist/bin/build.js +226 -0
  124. package/dist/bin/build.js.map +1 -0
  125. package/dist/bin/build.spec.js +594 -0
  126. package/dist/bin/build.spec.js.map +1 -0
  127. package/dist/bin/frameworkConventions.d.ts +8 -0
  128. package/dist/bin/frameworkConventions.d.ts.map +1 -0
  129. package/dist/bin/frameworkConventions.js +8 -0
  130. package/dist/bin/frameworkConventions.js.map +1 -0
  131. package/dist/bin/generateImportMap/index.d.ts.map +1 -1
  132. package/dist/bin/generateImportMap/index.js +8 -5
  133. package/dist/bin/generateImportMap/index.js.map +1 -1
  134. package/dist/bin/generateImportMap/iterateCollections.d.ts.map +1 -1
  135. package/dist/bin/generateImportMap/iterateCollections.js +11 -0
  136. package/dist/bin/generateImportMap/iterateCollections.js.map +1 -1
  137. package/dist/bin/generateImportMap/iterateConfig.d.ts.map +1 -1
  138. package/dist/bin/generateImportMap/iterateConfig.js +12 -0
  139. package/dist/bin/generateImportMap/iterateConfig.js.map +1 -1
  140. package/dist/bin/generateImportMap/iterateFields.d.ts.map +1 -1
  141. package/dist/bin/generateImportMap/iterateFields.js +4 -1
  142. package/dist/bin/generateImportMap/iterateFields.js.map +1 -1
  143. package/dist/bin/generateImportMap/utilities/getFromImportMap.d.ts.map +1 -1
  144. package/dist/bin/generateImportMap/utilities/resolveImportMapFilePath.d.ts +5 -1
  145. package/dist/bin/generateImportMap/utilities/resolveImportMapFilePath.d.ts.map +1 -1
  146. package/dist/bin/generateImportMap/utilities/resolveImportMapFilePath.js +33 -18
  147. package/dist/bin/generateImportMap/utilities/resolveImportMapFilePath.js.map +1 -1
  148. package/dist/bin/generateTypes.d.ts +3 -2
  149. package/dist/bin/generateTypes.d.ts.map +1 -1
  150. package/dist/bin/generateTypes.js +11 -1
  151. package/dist/bin/generateTypes.js.map +1 -1
  152. package/dist/bin/index.d.ts.map +1 -1
  153. package/dist/bin/index.js +9 -0
  154. package/dist/bin/index.js.map +1 -1
  155. package/dist/bin/loadEnv.d.ts +3 -1
  156. package/dist/bin/loadEnv.d.ts.map +1 -1
  157. package/dist/bin/loadEnv.js +40 -10
  158. package/dist/bin/loadEnv.js.map +1 -1
  159. package/dist/bin/migrate.d.ts.map +1 -1
  160. package/dist/collections/config/client.d.ts +11 -4
  161. package/dist/collections/config/client.d.ts.map +1 -1
  162. package/dist/collections/config/client.js +8 -0
  163. package/dist/collections/config/client.js.map +1 -1
  164. package/dist/collections/config/defaults.d.ts +0 -4
  165. package/dist/collections/config/defaults.d.ts.map +1 -1
  166. package/dist/collections/config/defaults.js +2 -17
  167. package/dist/collections/config/defaults.js.map +1 -1
  168. package/dist/collections/config/defaults.spec.js +47 -0
  169. package/dist/collections/config/defaults.spec.js.map +1 -0
  170. package/dist/collections/config/sanitize.d.ts.map +1 -1
  171. package/dist/collections/config/sanitize.js +1 -11
  172. package/dist/collections/config/sanitize.js.map +1 -1
  173. package/dist/collections/config/sanitizeCompoundIndexes.d.ts.map +1 -1
  174. package/dist/collections/config/types.d.ts +13 -9
  175. package/dist/collections/config/types.d.ts.map +1 -1
  176. package/dist/collections/config/types.js.map +1 -1
  177. package/dist/collections/config/useAsTitle.d.ts.map +1 -1
  178. package/dist/collections/dataloader.d.ts +1 -1
  179. package/dist/collections/dataloader.d.ts.map +1 -1
  180. package/dist/collections/endpoints/create.d.ts.map +1 -1
  181. package/dist/collections/endpoints/create.js +0 -2
  182. package/dist/collections/endpoints/create.js.map +1 -1
  183. package/dist/collections/endpoints/updateByID.d.ts.map +1 -1
  184. package/dist/collections/endpoints/updateByID.js +1 -2
  185. package/dist/collections/endpoints/updateByID.js.map +1 -1
  186. package/dist/collections/operations/count.d.ts.map +1 -1
  187. package/dist/collections/operations/count.js +1 -0
  188. package/dist/collections/operations/count.js.map +1 -1
  189. package/dist/collections/operations/countVersions.d.ts.map +1 -1
  190. package/dist/collections/operations/create.d.ts +0 -1
  191. package/dist/collections/operations/create.d.ts.map +1 -1
  192. package/dist/collections/operations/create.js +15 -6
  193. package/dist/collections/operations/create.js.map +1 -1
  194. package/dist/collections/operations/delete.d.ts.map +1 -1
  195. package/dist/collections/operations/delete.js +3 -0
  196. package/dist/collections/operations/delete.js.map +1 -1
  197. package/dist/collections/operations/deleteByID.d.ts.map +1 -1
  198. package/dist/collections/operations/duplicate.d.ts.map +1 -1
  199. package/dist/collections/operations/find.d.ts.map +1 -1
  200. package/dist/collections/operations/findByID.d.ts.map +1 -1
  201. package/dist/collections/operations/findDistinct.d.ts.map +1 -1
  202. package/dist/collections/operations/findDistinct.js +1 -0
  203. package/dist/collections/operations/findDistinct.js.map +1 -1
  204. package/dist/collections/operations/findVersionByID.d.ts.map +1 -1
  205. package/dist/collections/operations/findVersions.d.ts.map +1 -1
  206. package/dist/collections/operations/local/count.d.ts +3 -3
  207. package/dist/collections/operations/local/count.d.ts.map +1 -1
  208. package/dist/collections/operations/local/count.js.map +1 -1
  209. package/dist/collections/operations/local/countVersions.d.ts +3 -3
  210. package/dist/collections/operations/local/countVersions.d.ts.map +1 -1
  211. package/dist/collections/operations/local/countVersions.js.map +1 -1
  212. package/dist/collections/operations/local/create.d.ts +3 -3
  213. package/dist/collections/operations/local/create.d.ts.map +1 -1
  214. package/dist/collections/operations/local/create.js.map +1 -1
  215. package/dist/collections/operations/local/delete.d.ts +3 -3
  216. package/dist/collections/operations/local/delete.d.ts.map +1 -1
  217. package/dist/collections/operations/local/delete.js.map +1 -1
  218. package/dist/collections/operations/local/duplicate.d.ts +3 -3
  219. package/dist/collections/operations/local/duplicate.d.ts.map +1 -1
  220. package/dist/collections/operations/local/duplicate.js.map +1 -1
  221. package/dist/collections/operations/local/find.d.ts +3 -3
  222. package/dist/collections/operations/local/find.d.ts.map +1 -1
  223. package/dist/collections/operations/local/find.js.map +1 -1
  224. package/dist/collections/operations/local/findByID.d.ts +3 -3
  225. package/dist/collections/operations/local/findByID.d.ts.map +1 -1
  226. package/dist/collections/operations/local/findByID.js.map +1 -1
  227. package/dist/collections/operations/local/findDistinct.d.ts +2 -2
  228. package/dist/collections/operations/local/findDistinct.d.ts.map +1 -1
  229. package/dist/collections/operations/local/findDistinct.js.map +1 -1
  230. package/dist/collections/operations/local/findVersionByID.d.ts +3 -3
  231. package/dist/collections/operations/local/findVersionByID.d.ts.map +1 -1
  232. package/dist/collections/operations/local/findVersionByID.js.map +1 -1
  233. package/dist/collections/operations/local/findVersions.d.ts +3 -3
  234. package/dist/collections/operations/local/findVersions.d.ts.map +1 -1
  235. package/dist/collections/operations/local/findVersions.js.map +1 -1
  236. package/dist/collections/operations/local/restoreVersion.d.ts +3 -3
  237. package/dist/collections/operations/local/restoreVersion.d.ts.map +1 -1
  238. package/dist/collections/operations/local/restoreVersion.js.map +1 -1
  239. package/dist/collections/operations/local/update.d.ts +7 -11
  240. package/dist/collections/operations/local/update.d.ts.map +1 -1
  241. package/dist/collections/operations/local/update.js +1 -2
  242. package/dist/collections/operations/local/update.js.map +1 -1
  243. package/dist/collections/operations/restoreVersion.d.ts.map +1 -1
  244. package/dist/collections/operations/update.d.ts +0 -1
  245. package/dist/collections/operations/update.d.ts.map +1 -1
  246. package/dist/collections/operations/update.js +8 -4
  247. package/dist/collections/operations/update.js.map +1 -1
  248. package/dist/collections/operations/updateByID.d.ts +0 -1
  249. package/dist/collections/operations/updateByID.d.ts.map +1 -1
  250. package/dist/collections/operations/updateByID.js +1 -5
  251. package/dist/collections/operations/updateByID.js.map +1 -1
  252. package/dist/collections/operations/utilities/buildAfterOperation.d.ts +1 -1
  253. package/dist/collections/operations/utilities/buildAfterOperation.d.ts.map +1 -1
  254. package/dist/collections/operations/utilities/copyDataWithFreshRowIDs.d.ts +9 -0
  255. package/dist/collections/operations/utilities/copyDataWithFreshRowIDs.d.ts.map +1 -0
  256. package/dist/collections/operations/utilities/copyDataWithFreshRowIDs.js +170 -0
  257. package/dist/collections/operations/utilities/copyDataWithFreshRowIDs.js.map +1 -0
  258. package/dist/collections/operations/utilities/sanitizeSortQuery.d.ts.map +1 -1
  259. package/dist/collections/operations/utilities/types.d.ts +20 -29
  260. package/dist/collections/operations/utilities/types.d.ts.map +1 -1
  261. package/dist/collections/operations/utilities/types.js.map +1 -1
  262. package/dist/collections/operations/utilities/update.d.ts +1 -2
  263. package/dist/collections/operations/utilities/update.d.ts.map +1 -1
  264. package/dist/collections/operations/utilities/update.js +64 -65
  265. package/dist/collections/operations/utilities/update.js.map +1 -1
  266. package/dist/config/client.d.ts +2 -2
  267. package/dist/config/client.d.ts.map +1 -1
  268. package/dist/config/client.js.map +1 -1
  269. package/dist/config/defaults.d.ts +0 -4
  270. package/dist/config/defaults.d.ts.map +1 -1
  271. package/dist/config/defaults.js +0 -78
  272. package/dist/config/defaults.js.map +1 -1
  273. package/dist/config/definePlugin.d.ts +10 -10
  274. package/dist/config/definePlugin.d.ts.map +1 -1
  275. package/dist/config/definePlugin.js +7 -11
  276. package/dist/config/definePlugin.js.map +1 -1
  277. package/dist/config/orderable/fractional-indexing.d.ts +23 -23
  278. package/dist/config/orderable/fractional-indexing.d.ts.map +1 -1
  279. package/dist/config/orderable/index.d.ts.map +1 -1
  280. package/dist/config/orderable/index.js +23 -0
  281. package/dist/config/orderable/index.js.map +1 -1
  282. package/dist/config/sanitize.d.ts.map +1 -1
  283. package/dist/config/sanitize.js +141 -13
  284. package/dist/config/sanitize.js.map +1 -1
  285. package/dist/config/types.d.ts +67 -20
  286. package/dist/config/types.d.ts.map +1 -1
  287. package/dist/config/types.js +2 -0
  288. package/dist/config/types.js.map +1 -1
  289. package/dist/database/combineQueries.d.ts.map +1 -1
  290. package/dist/database/getLocalizedPaths.d.ts.map +1 -1
  291. package/dist/database/getLocalizedPaths.js +1 -1
  292. package/dist/database/getLocalizedPaths.js.map +1 -1
  293. package/dist/database/migrations/findMigrationDir.d.ts.map +1 -1
  294. package/dist/database/migrations/getPredefinedMigration.d.ts.map +1 -1
  295. package/dist/database/migrations/migrationsCollection.d.ts.map +1 -1
  296. package/dist/database/migrations/migrationsCollection.js +2 -1
  297. package/dist/database/migrations/migrationsCollection.js.map +1 -1
  298. package/dist/database/migrations/readMigrationFiles.d.ts.map +1 -1
  299. package/dist/database/migrations/writeMigrationIndex.d.ts.map +1 -1
  300. package/dist/database/sanitizeJoinQuery.d.ts.map +1 -1
  301. package/dist/database/sanitizeWhereQuery.d.ts.map +1 -1
  302. package/dist/database/types.d.ts +1 -5
  303. package/dist/database/types.d.ts.map +1 -1
  304. package/dist/database/types.js.map +1 -1
  305. package/dist/duplicateDocument/index.d.ts.map +1 -1
  306. package/dist/email/getStringifiedToAddress.d.ts.map +1 -1
  307. package/dist/errors/APIError.d.ts.map +1 -1
  308. package/dist/errors/AuthenticationError.d.ts.map +1 -1
  309. package/dist/errors/DuplicateCollection.d.ts.map +1 -1
  310. package/dist/errors/DuplicateFieldName.d.ts.map +1 -1
  311. package/dist/errors/DuplicateGlobal.d.ts.map +1 -1
  312. package/dist/errors/ErrorDeletingFile.d.ts.map +1 -1
  313. package/dist/errors/FileRetrievalError.d.ts.map +1 -1
  314. package/dist/errors/FileUploadError.d.ts.map +1 -1
  315. package/dist/errors/Forbidden.d.ts.map +1 -1
  316. package/dist/errors/InvalidConfiguration.d.ts.map +1 -1
  317. package/dist/errors/InvalidFieldJoin.d.ts.map +1 -1
  318. package/dist/errors/InvalidFieldName.d.ts.map +1 -1
  319. package/dist/errors/InvalidFieldRelationship.d.ts.map +1 -1
  320. package/dist/errors/InvalidSchema.d.ts.map +1 -1
  321. package/dist/errors/Locked.d.ts.map +1 -1
  322. package/dist/errors/LockedAuth.d.ts.map +1 -1
  323. package/dist/errors/MissingCollectionLabel.d.ts.map +1 -1
  324. package/dist/errors/MissingEditorProp.d.ts.map +1 -1
  325. package/dist/errors/MissingFieldInputOptions.d.ts.map +1 -1
  326. package/dist/errors/MissingFieldType.d.ts.map +1 -1
  327. package/dist/errors/MissingFile.d.ts.map +1 -1
  328. package/dist/errors/NotFound.d.ts.map +1 -1
  329. package/dist/errors/QueryError.d.ts.map +1 -1
  330. package/dist/errors/ReservedFieldName.d.ts.map +1 -1
  331. package/dist/errors/TimestampsRequired.d.ts.map +1 -1
  332. package/dist/errors/UnauthorizedError.d.ts.map +1 -1
  333. package/dist/errors/UnverifiedEmail.d.ts.map +1 -1
  334. package/dist/errors/ValidationError.d.ts +1 -0
  335. package/dist/errors/ValidationError.d.ts.map +1 -1
  336. package/dist/errors/ValidationError.js.map +1 -1
  337. package/dist/exports/internal.d.ts +2 -0
  338. package/dist/exports/internal.d.ts.map +1 -1
  339. package/dist/exports/internal.js +2 -0
  340. package/dist/exports/internal.js.map +1 -1
  341. package/dist/exports/migrations.d.ts +5 -13
  342. package/dist/exports/migrations.d.ts.map +1 -1
  343. package/dist/exports/migrations.js +5 -13
  344. package/dist/exports/migrations.js.map +1 -1
  345. package/dist/exports/shared.d.ts +23 -2
  346. package/dist/exports/shared.d.ts.map +1 -1
  347. package/dist/exports/shared.js +22 -1
  348. package/dist/exports/shared.js.map +1 -1
  349. package/dist/fields/baseFields/slug/countVersions.d.ts.map +1 -1
  350. package/dist/fields/baseFields/slug/countVersions.js +6 -8
  351. package/dist/fields/baseFields/slug/countVersions.js.map +1 -1
  352. package/dist/fields/baseFields/slug/generateSlug.d.ts +14 -7
  353. package/dist/fields/baseFields/slug/generateSlug.d.ts.map +1 -1
  354. package/dist/fields/baseFields/slug/generateSlug.js +53 -73
  355. package/dist/fields/baseFields/slug/generateSlug.js.map +1 -1
  356. package/dist/fields/baseFields/slug/types.d.ts +14 -0
  357. package/dist/fields/baseFields/slug/types.d.ts.map +1 -0
  358. package/dist/fields/baseFields/slug/types.js +6 -0
  359. package/dist/fields/baseFields/slug/types.js.map +1 -0
  360. package/dist/fields/config/client.d.ts +6 -6
  361. package/dist/fields/config/client.d.ts.map +1 -1
  362. package/dist/fields/config/client.js +14 -14
  363. package/dist/fields/config/client.js.map +1 -1
  364. package/dist/fields/config/sanitize.d.ts.map +1 -1
  365. package/dist/fields/config/sanitize.js +40 -4
  366. package/dist/fields/config/sanitize.js.map +1 -1
  367. package/dist/fields/config/sanitizeJoinField.d.ts.map +1 -1
  368. package/dist/fields/config/types.d.ts +80 -76
  369. package/dist/fields/config/types.d.ts.map +1 -1
  370. package/dist/fields/config/types.js.map +1 -1
  371. package/dist/fields/getDefaultValue.d.ts.map +1 -1
  372. package/dist/fields/hooks/afterChange/index.d.ts.map +1 -1
  373. package/dist/fields/hooks/afterChange/promise.d.ts.map +1 -1
  374. package/dist/fields/hooks/afterChange/promise.js +1 -1
  375. package/dist/fields/hooks/afterChange/promise.js.map +1 -1
  376. package/dist/fields/hooks/afterChange/traverseFields.d.ts.map +1 -1
  377. package/dist/fields/hooks/afterRead/promise.d.ts.map +1 -1
  378. package/dist/fields/hooks/afterRead/promise.js +13 -3
  379. package/dist/fields/hooks/afterRead/promise.js.map +1 -1
  380. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.d.ts.map +1 -1
  381. package/dist/fields/hooks/afterRead/traverseFields.d.ts.map +1 -1
  382. package/dist/fields/hooks/afterRead/virtualFieldPopulationPromise.d.ts.map +1 -1
  383. package/dist/fields/hooks/beforeChange/cloneDataFromOriginalDoc.d.ts.map +1 -1
  384. package/dist/fields/hooks/beforeChange/getExistingRowDoc.d.ts.map +1 -1
  385. package/dist/fields/hooks/beforeChange/index.d.ts.map +1 -1
  386. package/dist/fields/hooks/beforeChange/promise.d.ts.map +1 -1
  387. package/dist/fields/hooks/beforeChange/promise.js +3 -3
  388. package/dist/fields/hooks/beforeChange/promise.js.map +1 -1
  389. package/dist/fields/hooks/beforeChange/traverseFields.d.ts.map +1 -1
  390. package/dist/fields/hooks/beforeDuplicate/index.d.ts.map +1 -1
  391. package/dist/fields/hooks/beforeDuplicate/promise.d.ts.map +1 -1
  392. package/dist/fields/hooks/beforeDuplicate/promise.js +2 -2
  393. package/dist/fields/hooks/beforeDuplicate/promise.js.map +1 -1
  394. package/dist/fields/hooks/beforeDuplicate/traverseFields.d.ts.map +1 -1
  395. package/dist/fields/hooks/beforeValidate/index.d.ts.map +1 -1
  396. package/dist/fields/hooks/beforeValidate/promise.d.ts.map +1 -1
  397. package/dist/fields/hooks/beforeValidate/promise.js +11 -2
  398. package/dist/fields/hooks/beforeValidate/promise.js.map +1 -1
  399. package/dist/fields/hooks/beforeValidate/traverseFields.d.ts.map +1 -1
  400. package/dist/fields/isFieldDisabled.d.ts.map +1 -1
  401. package/dist/fields/mergeBaseFields.d.ts.map +1 -1
  402. package/dist/fields/setDefaultBeforeDuplicate.d.ts.map +1 -1
  403. package/dist/fields/setDefaultBeforeDuplicate.js +1 -0
  404. package/dist/fields/setDefaultBeforeDuplicate.js.map +1 -1
  405. package/dist/fields/sortableFieldTypes.d.ts.map +1 -1
  406. package/dist/fields/sortableFieldTypes.js +1 -0
  407. package/dist/fields/sortableFieldTypes.js.map +1 -1
  408. package/dist/fields/validations.d.ts +4 -1
  409. package/dist/fields/validations.d.ts.map +1 -1
  410. package/dist/fields/validations.js +12 -4
  411. package/dist/fields/validations.js.map +1 -1
  412. package/dist/globals/config/client.d.ts +4 -4
  413. package/dist/globals/config/client.d.ts.map +1 -1
  414. package/dist/globals/config/sanitize.d.ts.map +1 -1
  415. package/dist/globals/config/sanitize.js +2 -6
  416. package/dist/globals/config/sanitize.js.map +1 -1
  417. package/dist/globals/config/sanitize.spec.js +43 -0
  418. package/dist/globals/config/sanitize.spec.js.map +1 -0
  419. package/dist/globals/endpoints/update.d.ts.map +1 -1
  420. package/dist/globals/endpoints/update.js +0 -2
  421. package/dist/globals/endpoints/update.js.map +1 -1
  422. package/dist/globals/operations/countGlobalVersions.d.ts.map +1 -1
  423. package/dist/globals/operations/docAccess.d.ts.map +1 -1
  424. package/dist/globals/operations/findOne.d.ts.map +1 -1
  425. package/dist/globals/operations/findVersionByID.d.ts.map +1 -1
  426. package/dist/globals/operations/findVersions.d.ts.map +1 -1
  427. package/dist/globals/operations/local/countVersions.d.ts +3 -3
  428. package/dist/globals/operations/local/countVersions.d.ts.map +1 -1
  429. package/dist/globals/operations/local/countVersions.js.map +1 -1
  430. package/dist/globals/operations/local/findOne.d.ts +3 -3
  431. package/dist/globals/operations/local/findOne.d.ts.map +1 -1
  432. package/dist/globals/operations/local/findOne.js.map +1 -1
  433. package/dist/globals/operations/local/findVersionByID.d.ts +3 -3
  434. package/dist/globals/operations/local/findVersionByID.d.ts.map +1 -1
  435. package/dist/globals/operations/local/findVersionByID.js.map +1 -1
  436. package/dist/globals/operations/local/findVersions.d.ts +3 -3
  437. package/dist/globals/operations/local/findVersions.d.ts.map +1 -1
  438. package/dist/globals/operations/local/findVersions.js.map +1 -1
  439. package/dist/globals/operations/local/restoreVersion.d.ts +3 -3
  440. package/dist/globals/operations/local/restoreVersion.d.ts.map +1 -1
  441. package/dist/globals/operations/local/restoreVersion.js.map +1 -1
  442. package/dist/globals/operations/local/update.d.ts +7 -9
  443. package/dist/globals/operations/local/update.d.ts.map +1 -1
  444. package/dist/globals/operations/local/update.js +1 -2
  445. package/dist/globals/operations/local/update.js.map +1 -1
  446. package/dist/globals/operations/restoreVersion.d.ts.map +1 -1
  447. package/dist/globals/operations/update.d.ts +0 -1
  448. package/dist/globals/operations/update.d.ts.map +1 -1
  449. package/dist/globals/operations/update.js +52 -58
  450. package/dist/globals/operations/update.js.map +1 -1
  451. package/dist/hierarchy/addHierarchyToCollection.d.ts.map +1 -1
  452. package/dist/hierarchy/buildParentField.d.ts.map +1 -1
  453. package/dist/hierarchy/constants.d.ts.map +1 -1
  454. package/dist/hierarchy/getInitialTreeData.d.ts.map +1 -1
  455. package/dist/hierarchy/hooks/collectionAfterDelete.d.ts.map +1 -1
  456. package/dist/hierarchy/hooks/collectionAfterRead.d.ts.map +1 -1
  457. package/dist/hierarchy/hooks/collectionBeforeChange.d.ts.map +1 -1
  458. package/dist/hierarchy/hooks/collectionBeforeDelete.d.ts.map +1 -1
  459. package/dist/hierarchy/hooks/collectionBeforeOperation.d.ts.map +1 -1
  460. package/dist/hierarchy/hooks/ensureSafeCollectionsChange.d.ts.map +1 -1
  461. package/dist/hierarchy/injectHierarchyButton.d.ts.map +1 -1
  462. package/dist/hierarchy/resolveHierarchyCollections.d.ts.map +1 -1
  463. package/dist/hierarchy/resolveHierarchyCollections.js +1 -1
  464. package/dist/hierarchy/resolveHierarchyCollections.js.map +1 -1
  465. package/dist/hierarchy/sanitizeHierarchyCollection.d.ts.map +1 -1
  466. package/dist/hierarchy/sanitizeHierarchyCollection.js +3 -1
  467. package/dist/hierarchy/sanitizeHierarchyCollection.js.map +1 -1
  468. package/dist/hierarchy/types.d.ts +8 -1
  469. package/dist/hierarchy/types.d.ts.map +1 -1
  470. package/dist/hierarchy/types.js.map +1 -1
  471. package/dist/index.bundled.d.ts +4466 -4152
  472. package/dist/index.d.ts +79 -34
  473. package/dist/index.d.ts.map +1 -1
  474. package/dist/index.js +54 -37
  475. package/dist/index.js.map +1 -1
  476. package/dist/kv/adapters/DatabaseKVAdapter.d.ts.map +1 -1
  477. package/dist/kv/adapters/DatabaseKVAdapter.js +1 -0
  478. package/dist/kv/adapters/DatabaseKVAdapter.js.map +1 -1
  479. package/dist/kv/adapters/InMemoryKVAdapter.d.ts.map +1 -1
  480. package/dist/locked-documents/config.d.ts.map +1 -1
  481. package/dist/locked-documents/config.js +2 -1
  482. package/dist/locked-documents/config.js.map +1 -1
  483. package/dist/preferences/config.d.ts.map +1 -1
  484. package/dist/preferences/config.js +2 -1
  485. package/dist/preferences/config.js.map +1 -1
  486. package/dist/preferences/deleteUserPreferences.d.ts.map +1 -1
  487. package/dist/preferences/keys.d.ts +8 -4
  488. package/dist/preferences/keys.d.ts.map +1 -1
  489. package/dist/preferences/keys.js +4 -1
  490. package/dist/preferences/keys.js.map +1 -1
  491. package/dist/preferences/types.d.ts +15 -0
  492. package/dist/preferences/types.d.ts.map +1 -1
  493. package/dist/preferences/types.js +3 -1
  494. package/dist/preferences/types.js.map +1 -1
  495. package/dist/query-presets/access.d.ts.map +1 -1
  496. package/dist/query-presets/config.d.ts.map +1 -1
  497. package/dist/query-presets/config.js +77 -37
  498. package/dist/query-presets/config.js.map +1 -1
  499. package/dist/query-presets/constraints.d.ts.map +1 -1
  500. package/dist/query-presets/constraints.js +3 -2
  501. package/dist/query-presets/constraints.js.map +1 -1
  502. package/dist/query-presets/types.d.ts +1 -1
  503. package/dist/query-presets/types.d.ts.map +1 -1
  504. package/dist/queues/config/collection.d.ts.map +1 -1
  505. package/dist/queues/config/collection.js +2 -1
  506. package/dist/queues/config/collection.js.map +1 -1
  507. package/dist/queues/config/generateJobsJSONSchemas.d.ts +1 -1
  508. package/dist/queues/config/generateJobsJSONSchemas.d.ts.map +1 -1
  509. package/dist/queues/config/generateJobsJSONSchemas.js +33 -12
  510. package/dist/queues/config/generateJobsJSONSchemas.js.map +1 -1
  511. package/dist/queues/config/global.d.ts.map +1 -1
  512. package/dist/queues/config/global.js +2 -1
  513. package/dist/queues/config/global.js.map +1 -1
  514. package/dist/queues/endpoints/run.d.ts.map +1 -1
  515. package/dist/queues/errors/index.d.ts.map +1 -1
  516. package/dist/queues/localAPI.d.ts +8 -8
  517. package/dist/queues/localAPI.d.ts.map +1 -1
  518. package/dist/queues/operations/handleSchedules/getQueuesWithSchedules.d.ts.map +1 -1
  519. package/dist/queues/operations/runJobs/index.d.ts.map +1 -1
  520. package/dist/queues/operations/runJobs/runJSONJob/index.d.ts.map +1 -1
  521. package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.d.ts.map +1 -1
  522. package/dist/queues/operations/runJobs/runJob/importHandlerPath.d.ts +1 -1
  523. package/dist/queues/operations/runJobs/runJob/importHandlerPath.d.ts.map +1 -1
  524. package/dist/queues/operations/runJobs/runJob/index.d.ts.map +1 -1
  525. package/dist/queues/utilities/getCurrentDate.d.ts.map +1 -1
  526. package/dist/queues/utilities/getJobTaskStatus.d.ts.map +1 -1
  527. package/dist/translations/getLocalI18n.d.ts.map +1 -1
  528. package/dist/types/constants.d.ts +2 -2
  529. package/dist/types/constants.d.ts.map +1 -1
  530. package/dist/types/index.d.ts +9 -7
  531. package/dist/types/index.d.ts.map +1 -1
  532. package/dist/types/index.js.map +1 -1
  533. package/dist/uploads/checkFileAccess.d.ts.map +1 -1
  534. package/dist/uploads/checkFileRestrictions.d.ts.map +1 -1
  535. package/dist/uploads/cropImage.d.ts.map +1 -1
  536. package/dist/uploads/docWithFilenameExists.d.ts.map +1 -1
  537. package/dist/uploads/endpoints/uploadInstructions.d.ts +3 -0
  538. package/dist/uploads/endpoints/uploadInstructions.d.ts.map +1 -0
  539. package/dist/uploads/endpoints/uploadInstructions.js +38 -0
  540. package/dist/uploads/endpoints/uploadInstructions.js.map +1 -0
  541. package/dist/uploads/fetchAPI-multipart/isEligibleRequest.d.ts.map +1 -1
  542. package/dist/uploads/fetchAPI-multipart/processMultipart.d.ts.map +1 -1
  543. package/dist/uploads/fetchAPI-multipart/processMultipart.js +4 -0
  544. package/dist/uploads/fetchAPI-multipart/processMultipart.js.map +1 -1
  545. package/dist/uploads/fetchAPI-multipart/processNested.d.ts.map +1 -1
  546. package/dist/uploads/fetchAPI-multipart/utilities.d.ts.map +1 -1
  547. package/dist/uploads/fileExists.d.ts.map +1 -1
  548. package/dist/uploads/generateFileData.d.ts +2 -1
  549. package/dist/uploads/generateFileData.d.ts.map +1 -1
  550. package/dist/uploads/generateFileData.js +5 -2
  551. package/dist/uploads/generateFileData.js.map +1 -1
  552. package/dist/uploads/getBaseFields.d.ts.map +1 -1
  553. package/dist/uploads/getExternalFile.d.ts.map +1 -1
  554. package/dist/uploads/getFileByPath.d.ts +1 -1
  555. package/dist/uploads/getFileByPath.d.ts.map +1 -1
  556. package/dist/uploads/getFileTypeFallback.d.ts.map +1 -1
  557. package/dist/uploads/getSafeFilename.d.ts.map +1 -1
  558. package/dist/uploads/image-resizing/createImageSize.d.ts.map +1 -1
  559. package/dist/uploads/image-resizing/generateImageSizeFilename.d.ts.map +1 -1
  560. package/dist/uploads/image-resizing/getImageResizeAction.d.ts +1 -1
  561. package/dist/uploads/image-resizing/getImageResizeAction.d.ts.map +1 -1
  562. package/dist/uploads/image-resizing/parseFilename.d.ts.map +1 -1
  563. package/dist/uploads/image-resizing/sanitizeResizeConfig.d.ts.map +1 -1
  564. package/dist/uploads/matchMimeType.d.ts +8 -0
  565. package/dist/uploads/matchMimeType.d.ts.map +1 -0
  566. package/dist/uploads/matchMimeType.js +19 -0
  567. package/dist/uploads/matchMimeType.js.map +1 -0
  568. package/dist/uploads/matchMimeType.spec.js +66 -0
  569. package/dist/uploads/matchMimeType.spec.js.map +1 -0
  570. package/dist/uploads/mimeTypeValidator.d.ts.map +1 -1
  571. package/dist/uploads/safeFetch.d.ts.map +1 -1
  572. package/dist/uploads/safeFetch.js +11 -5
  573. package/dist/uploads/safeFetch.js.map +1 -1
  574. package/dist/uploads/saveBufferToFile.d.ts.map +1 -1
  575. package/dist/uploads/tempFile.d.ts.map +1 -1
  576. package/dist/uploads/types.d.ts +68 -1
  577. package/dist/uploads/types.d.ts.map +1 -1
  578. package/dist/uploads/types.js.map +1 -1
  579. package/dist/uploads/uploadFiles.d.ts.map +1 -1
  580. package/dist/utilities/addDataAndFileToRequest.d.ts.map +1 -1
  581. package/dist/utilities/addDataAndFileToRequest.js +11 -4
  582. package/dist/utilities/addDataAndFileToRequest.js.map +1 -1
  583. package/dist/utilities/addLocalesToRequest.d.ts.map +1 -1
  584. package/dist/utilities/addSelectGenericsToGeneretedTypes.d.ts.map +1 -1
  585. package/dist/utilities/appendDateTimezoneSelectFields.d.ts.map +1 -1
  586. package/dist/utilities/appendDateTimezoneSelectFields.js +2 -2
  587. package/dist/utilities/appendDateTimezoneSelectFields.js.map +1 -1
  588. package/dist/utilities/appendNonTrashedFilter.d.ts.map +1 -1
  589. package/dist/utilities/appendUploadSelectFields.d.ts.map +1 -1
  590. package/dist/utilities/canAccessAdmin.d.ts.map +1 -1
  591. package/dist/utilities/checkDocumentLockStatus.d.ts.map +1 -1
  592. package/dist/utilities/configToJSONSchema.d.ts +68 -16
  593. package/dist/utilities/configToJSONSchema.d.ts.map +1 -1
  594. package/dist/utilities/configToJSONSchema.js +312 -117
  595. package/dist/utilities/configToJSONSchema.js.map +1 -1
  596. package/dist/utilities/configToJSONSchema.spec.js +656 -85
  597. package/dist/utilities/configToJSONSchema.spec.js.map +1 -1
  598. package/dist/utilities/createLocalReq.d.ts +2 -2
  599. package/dist/utilities/createLocalReq.d.ts.map +1 -1
  600. package/dist/utilities/createLocalReq.js.map +1 -1
  601. package/dist/utilities/createPayloadRequest.d.ts.map +1 -1
  602. package/dist/utilities/createPayloadRequest.js +1 -0
  603. package/dist/utilities/createPayloadRequest.js.map +1 -1
  604. package/dist/utilities/deepCopyObject.d.ts.map +1 -1
  605. package/dist/utilities/deepCopyObject.js +8 -0
  606. package/dist/utilities/deepCopyObject.js.map +1 -1
  607. package/dist/utilities/dependencies/dependencyChecker.js +1 -1
  608. package/dist/utilities/dependencies/dependencyChecker.js.map +1 -1
  609. package/dist/utilities/dependencies/getDependencies.d.ts.map +1 -1
  610. package/dist/utilities/dependencies/getDependencies.js +5 -5
  611. package/dist/utilities/dependencies/getDependencies.js.map +1 -1
  612. package/dist/utilities/dependencies/resolveFrom.d.ts.map +1 -1
  613. package/dist/utilities/dynamicImport.js +1 -1
  614. package/dist/utilities/dynamicImport.js.map +1 -1
  615. package/dist/utilities/escapeRegExp.d.ts.map +1 -1
  616. package/dist/utilities/extractID.d.ts.map +1 -1
  617. package/dist/utilities/filterDataToSelectedLocales.d.ts.map +1 -1
  618. package/dist/utilities/filterDataToSelectedLocales.js +5 -12
  619. package/dist/utilities/filterDataToSelectedLocales.js.map +1 -1
  620. package/dist/utilities/filterDataToSelectedLocales.spec.js +1 -2
  621. package/dist/utilities/filterDataToSelectedLocales.spec.js.map +1 -1
  622. package/dist/utilities/flattenAllFields.d.ts.map +1 -1
  623. package/dist/utilities/flattenAllFields.js +7 -22
  624. package/dist/utilities/flattenAllFields.js.map +1 -1
  625. package/dist/utilities/formatAdminURL.d.ts.map +1 -1
  626. package/dist/utilities/formatErrors.d.ts.map +1 -1
  627. package/dist/utilities/formatErrors.js +3 -1
  628. package/dist/utilities/formatErrors.js.map +1 -1
  629. package/dist/utilities/formatLabels.d.ts.map +1 -1
  630. package/dist/utilities/getBestFitFromSizes.d.ts.map +1 -1
  631. package/dist/utilities/getBlockSelect.d.ts.map +1 -1
  632. package/dist/utilities/getDataByPath.d.ts.map +1 -1
  633. package/dist/utilities/getEntityPermissions/getEntityPermissions.d.ts.map +1 -1
  634. package/dist/utilities/getEntityPermissions/getEntityPermissions.js +2 -0
  635. package/dist/utilities/getEntityPermissions/getEntityPermissions.js.map +1 -1
  636. package/dist/utilities/getEntityPermissions/populateFieldPermissions.d.ts +7 -1
  637. package/dist/utilities/getEntityPermissions/populateFieldPermissions.d.ts.map +1 -1
  638. package/dist/utilities/getEntityPermissions/populateFieldPermissions.js +24 -7
  639. package/dist/utilities/getEntityPermissions/populateFieldPermissions.js.map +1 -1
  640. package/dist/utilities/getFieldByPath.d.ts.map +1 -1
  641. package/dist/utilities/getFieldByPath.js +1 -1
  642. package/dist/utilities/getFieldByPath.js.map +1 -1
  643. package/dist/utilities/getFieldPermissions.d.ts.map +1 -1
  644. package/dist/utilities/getObjectDotNotation.d.ts.map +1 -1
  645. package/dist/utilities/getRequestEntity.d.ts.map +1 -1
  646. package/dist/utilities/getRequestLanguage.d.ts +2 -2
  647. package/dist/utilities/getRequestLanguage.d.ts.map +1 -1
  648. package/dist/utilities/getRequestLanguage.js.map +1 -1
  649. package/dist/utilities/getRequestOrigin.d.ts +2 -2
  650. package/dist/utilities/getRequestOrigin.d.ts.map +1 -1
  651. package/dist/utilities/getSafeRedirect.d.ts.map +1 -1
  652. package/dist/utilities/getSelectMode.d.ts.map +1 -1
  653. package/dist/utilities/getSiblingData.d.ts.map +1 -1
  654. package/dist/utilities/getTranslatedLabel.d.ts.map +1 -1
  655. package/dist/utilities/getVersionsConfig.d.ts +1 -1
  656. package/dist/utilities/getVersionsConfig.d.ts.map +1 -1
  657. package/dist/utilities/getVersionsConfig.js.map +1 -1
  658. package/dist/utilities/handleEndpoints.d.ts.map +1 -1
  659. package/dist/utilities/handleEndpoints.js +7 -3
  660. package/dist/utilities/handleEndpoints.js.map +1 -1
  661. package/dist/utilities/headersWithCors.d.ts.map +1 -1
  662. package/dist/utilities/isEntityHidden.d.ts +2 -2
  663. package/dist/utilities/isEntityHidden.d.ts.map +1 -1
  664. package/dist/utilities/isURLAllowed.d.ts.map +1 -1
  665. package/dist/utilities/isURLAllowed.js +9 -3
  666. package/dist/utilities/isURLAllowed.js.map +1 -1
  667. package/dist/utilities/isURLAllowed.spec.js +78 -0
  668. package/dist/utilities/isURLAllowed.spec.js.map +1 -0
  669. package/dist/utilities/isValidID.d.ts +1 -1
  670. package/dist/utilities/isValidID.d.ts.map +1 -1
  671. package/dist/utilities/logError.d.ts.map +1 -1
  672. package/dist/utilities/logger.d.ts +1 -1
  673. package/dist/utilities/logger.d.ts.map +1 -1
  674. package/dist/utilities/mergeHeaders.d.ts.map +1 -1
  675. package/dist/utilities/mergeListSearchAndWhere.d.ts.map +1 -1
  676. package/dist/utilities/mergeLocalizedData.d.ts +14 -4
  677. package/dist/utilities/mergeLocalizedData.d.ts.map +1 -1
  678. package/dist/utilities/mergeLocalizedData.js +54 -46
  679. package/dist/utilities/mergeLocalizedData.js.map +1 -1
  680. package/dist/utilities/mergeLocalizedData.spec.js +23 -23
  681. package/dist/utilities/mergeLocalizedData.spec.js.map +1 -1
  682. package/dist/utilities/miniChalk.d.ts.map +1 -1
  683. package/dist/utilities/optionsAreEqual.d.ts.map +1 -1
  684. package/dist/utilities/parseBooleanString.d.ts.map +1 -1
  685. package/dist/utilities/parseCookies.d.ts +1 -1
  686. package/dist/utilities/parseCookies.d.ts.map +1 -1
  687. package/dist/utilities/parseParams/index.d.ts +2 -5
  688. package/dist/utilities/parseParams/index.d.ts.map +1 -1
  689. package/dist/utilities/parseParams/index.js.map +1 -1
  690. package/dist/utilities/parseParams/index.spec.js +0 -9
  691. package/dist/utilities/parseParams/index.spec.js.map +1 -1
  692. package/dist/utilities/profiling.d.ts.map +1 -1
  693. package/dist/utilities/reduceFieldsToValues.d.ts.map +1 -1
  694. package/dist/utilities/resolveSelect.d.ts.map +1 -1
  695. package/dist/utilities/routeError.d.ts.map +1 -1
  696. package/dist/utilities/sanitizeFallbackLocale.d.ts.map +1 -1
  697. package/dist/utilities/sanitizeInternalFields.d.ts.map +1 -1
  698. package/dist/utilities/sanitizeJoinParams.d.ts.map +1 -1
  699. package/dist/utilities/sanitizePopulateParam.d.ts.map +1 -1
  700. package/dist/utilities/sanitizeSelect.d.ts.map +1 -1
  701. package/dist/utilities/sanitizeSelectParam.d.ts.map +1 -1
  702. package/dist/utilities/sanitizeSortParams.d.ts.map +1 -1
  703. package/dist/utilities/setsAreEqual.d.ts.map +1 -1
  704. package/dist/utilities/slugify.d.ts.map +1 -1
  705. package/dist/utilities/stripUnselectedFields.d.ts.map +1 -1
  706. package/dist/utilities/telemetry/conf/index.d.ts.map +1 -1
  707. package/dist/utilities/telemetry/events/adminInit.d.ts.map +1 -1
  708. package/dist/utilities/telemetry/events/adminInit.js +2 -3
  709. package/dist/utilities/telemetry/events/adminInit.js.map +1 -1
  710. package/dist/utilities/telemetry/events/serverInit.d.ts.map +1 -1
  711. package/dist/utilities/telemetry/events/serverInit.js +2 -3
  712. package/dist/utilities/telemetry/events/serverInit.js.map +1 -1
  713. package/dist/utilities/telemetry/index.d.ts +15 -4
  714. package/dist/utilities/telemetry/index.d.ts.map +1 -1
  715. package/dist/utilities/telemetry/index.js +6 -1
  716. package/dist/utilities/telemetry/index.js.map +1 -1
  717. package/dist/utilities/telemetry/index.spec.js +43 -0
  718. package/dist/utilities/telemetry/index.spec.js.map +1 -0
  719. package/dist/utilities/telemetry/oneWayHash.d.ts.map +1 -1
  720. package/dist/utilities/timestamp.d.ts.map +1 -1
  721. package/dist/utilities/toKebabCase.d.ts.map +1 -1
  722. package/dist/utilities/transformColumnPreferences.d.ts.map +1 -1
  723. package/dist/utilities/transformColumnPreferences.js +4 -2
  724. package/dist/utilities/transformColumnPreferences.js.map +1 -1
  725. package/dist/utilities/transformWhereQuery.d.ts.map +1 -1
  726. package/dist/utilities/traverseFields.d.ts.map +1 -1
  727. package/dist/utilities/traverseFields.js +2 -4
  728. package/dist/utilities/traverseFields.js.map +1 -1
  729. package/dist/utilities/traverseForLocalizedFields.d.ts.map +1 -1
  730. package/dist/utilities/traverseForLocalizedFields.js +3 -0
  731. package/dist/utilities/traverseForLocalizedFields.js.map +1 -1
  732. package/dist/utilities/unflatten.d.ts.map +1 -1
  733. package/dist/utilities/validateMimeType.d.ts.map +1 -1
  734. package/dist/utilities/validateTimezones.d.ts.map +1 -1
  735. package/dist/utilities/validateWhereQuery.d.ts.map +1 -1
  736. package/dist/utilities/wordBoundariesRegex.d.ts.map +1 -1
  737. package/dist/utilities/wrapInternalEndpoints.d.ts.map +1 -1
  738. package/dist/versions/baseFields.d.ts +1 -2
  739. package/dist/versions/baseFields.d.ts.map +1 -1
  740. package/dist/versions/baseFields.js +0 -13
  741. package/dist/versions/baseFields.js.map +1 -1
  742. package/dist/versions/buildCollectionFields.d.ts.map +1 -1
  743. package/dist/versions/buildCollectionFields.js +0 -2
  744. package/dist/versions/buildCollectionFields.js.map +1 -1
  745. package/dist/versions/buildGlobalFields.d.ts.map +1 -1
  746. package/dist/versions/buildGlobalFields.js +0 -2
  747. package/dist/versions/buildGlobalFields.js.map +1 -1
  748. package/dist/versions/buildSingleLocalePublishData.d.ts +32 -0
  749. package/dist/versions/buildSingleLocalePublishData.d.ts.map +1 -0
  750. package/dist/versions/buildSingleLocalePublishData.js +37 -0
  751. package/dist/versions/buildSingleLocalePublishData.js.map +1 -0
  752. package/dist/versions/buildVersionCompoundIndexes.d.ts.map +1 -1
  753. package/dist/versions/defaults.d.ts.map +1 -1
  754. package/dist/versions/deleteCollectionVersions.d.ts.map +1 -1
  755. package/dist/versions/deleteScheduledPublishJobs.d.ts.map +1 -1
  756. package/dist/versions/drafts/appendVersionToQueryKey.d.ts.map +1 -1
  757. package/dist/versions/drafts/getQueryDraftsSelect.d.ts.map +1 -1
  758. package/dist/versions/drafts/getQueryDraftsSort.d.ts.map +1 -1
  759. package/dist/versions/drafts/replaceWithDraftIfAvailable.d.ts.map +1 -1
  760. package/dist/versions/enforceMaxVersions.d.ts.map +1 -1
  761. package/dist/versions/getLatestCollectionVersion.d.ts.map +1 -1
  762. package/dist/versions/getLatestGlobalVersion.d.ts.map +1 -1
  763. package/dist/versions/migrations/localizeStatus/shared.d.ts.map +1 -1
  764. package/dist/versions/saveVersion.d.ts +0 -2
  765. package/dist/versions/saveVersion.d.ts.map +1 -1
  766. package/dist/versions/saveVersion.js +12 -17
  767. package/dist/versions/saveVersion.js.map +1 -1
  768. package/dist/versions/schedule/job.d.ts.map +1 -1
  769. package/dist/versions/schedule/job.js +6 -10
  770. package/dist/versions/schedule/job.js.map +1 -1
  771. package/dist/versions/types.d.ts +2 -15
  772. package/dist/versions/types.d.ts.map +1 -1
  773. package/dist/versions/types.js.map +1 -1
  774. package/package.json +9 -6
  775. package/dist/database/migrations/templates/localizeStatus.d.ts +0 -10
  776. package/dist/database/migrations/templates/localizeStatus.d.ts.map +0 -1
  777. package/dist/database/migrations/templates/localizeStatus.js +0 -54
  778. package/dist/database/migrations/templates/localizeStatus.js.map +0 -1
  779. package/dist/fields/baseFields/slug/index.d.ts +0 -89
  780. package/dist/fields/baseFields/slug/index.d.ts.map +0 -1
  781. package/dist/fields/baseFields/slug/index.js +0 -81
  782. package/dist/fields/baseFields/slug/index.js.map +0 -1
  783. package/dist/versions/migrations/localizeStatus/index.d.ts +0 -12
  784. package/dist/versions/migrations/localizeStatus/index.d.ts.map +0 -1
  785. package/dist/versions/migrations/localizeStatus/index.js +0 -33
  786. package/dist/versions/migrations/localizeStatus/index.js.map +0 -1
  787. package/dist/versions/migrations/localizeStatus/mongo/down.d.ts +0 -9
  788. package/dist/versions/migrations/localizeStatus/mongo/down.d.ts.map +0 -1
  789. package/dist/versions/migrations/localizeStatus/mongo/down.js +0 -112
  790. package/dist/versions/migrations/localizeStatus/mongo/down.js.map +0 -1
  791. package/dist/versions/migrations/localizeStatus/mongo/index.d.ts +0 -8
  792. package/dist/versions/migrations/localizeStatus/mongo/index.d.ts.map +0 -1
  793. package/dist/versions/migrations/localizeStatus/mongo/index.js +0 -8
  794. package/dist/versions/migrations/localizeStatus/mongo/index.js.map +0 -1
  795. package/dist/versions/migrations/localizeStatus/mongo/up.d.ts +0 -9
  796. package/dist/versions/migrations/localizeStatus/mongo/up.d.ts.map +0 -1
  797. package/dist/versions/migrations/localizeStatus/mongo/up.js +0 -220
  798. package/dist/versions/migrations/localizeStatus/mongo/up.js.map +0 -1
  799. package/dist/versions/migrations/localizeStatus/sql/down.d.ts +0 -11
  800. package/dist/versions/migrations/localizeStatus/sql/down.d.ts.map +0 -1
  801. package/dist/versions/migrations/localizeStatus/sql/down.js +0 -213
  802. package/dist/versions/migrations/localizeStatus/sql/down.js.map +0 -1
  803. package/dist/versions/migrations/localizeStatus/sql/index.d.ts +0 -8
  804. package/dist/versions/migrations/localizeStatus/sql/index.d.ts.map +0 -1
  805. package/dist/versions/migrations/localizeStatus/sql/index.js +0 -8
  806. package/dist/versions/migrations/localizeStatus/sql/index.js.map +0 -1
  807. package/dist/versions/migrations/localizeStatus/sql/migrateMainCollection.d.ts +0 -13
  808. package/dist/versions/migrations/localizeStatus/sql/migrateMainCollection.d.ts.map +0 -1
  809. package/dist/versions/migrations/localizeStatus/sql/migrateMainCollection.js +0 -51
  810. package/dist/versions/migrations/localizeStatus/sql/migrateMainCollection.js.map +0 -1
  811. package/dist/versions/migrations/localizeStatus/sql/migrateMainGlobal.d.ts +0 -13
  812. package/dist/versions/migrations/localizeStatus/sql/migrateMainGlobal.d.ts.map +0 -1
  813. package/dist/versions/migrations/localizeStatus/sql/migrateMainGlobal.js +0 -54
  814. package/dist/versions/migrations/localizeStatus/sql/migrateMainGlobal.js.map +0 -1
  815. package/dist/versions/migrations/localizeStatus/sql/up.d.ts +0 -11
  816. package/dist/versions/migrations/localizeStatus/sql/up.d.ts.map +0 -1
  817. package/dist/versions/migrations/localizeStatus/sql/up.js +0 -277
  818. package/dist/versions/migrations/localizeStatus/sql/up.js.map +0 -1
  819. package/dist/versions/saveSnapshot.d.ts +0 -18
  820. package/dist/versions/saveSnapshot.d.ts.map +0 -1
  821. package/dist/versions/saveSnapshot.js +0 -38
  822. package/dist/versions/saveSnapshot.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/fields/validations.ts"],"sourcesContent":["import Ajv from 'ajv'\nimport ObjectIdImport from 'bson-objectid'\n\nconst ObjectId = 'default' in ObjectIdImport ? ObjectIdImport.default : ObjectIdImport\n\nimport type { TFunction } from '@payloadcms/translations'\nimport type { JSONSchema4 } from 'json-schema'\n\nimport type { RichTextAdapter } from '../admin/types.js'\nimport type { CollectionSlug } from '../index.js'\nimport type { Where } from '../types/index.js'\nimport type {\n ArrayField,\n BlocksField,\n CheckboxField,\n CodeField,\n DateField,\n EmailField,\n JSONField,\n NumberField,\n PointField,\n RadioField,\n RelationshipField,\n RelationshipValue,\n RelationshipValueMany,\n RelationshipValueSingle,\n RichTextField,\n SelectField,\n TextareaField,\n TextField,\n UploadField,\n Validate,\n ValueWithRelation,\n} from './config/types.js'\n\nimport { isNumber } from '../utilities/isNumber.js'\nimport { isValidID } from '../utilities/isValidID.js'\n\nexport type TextFieldValidation = Validate<string, unknown, unknown, TextField>\n\nexport type TextFieldManyValidation = Validate<string[], unknown, unknown, TextField>\n\nexport type TextFieldSingleValidation = Validate<string, unknown, unknown, TextField>\n\nexport const text: TextFieldValidation = (\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 === undefined || value === null) {\n return true\n }\n }\n\n if (hasMany === true) {\n const lengthValidationResult = validateArrayLength(value, { maxRows, minRows, required, t })\n if (typeof lengthValidationResult === 'string') {\n return lengthValidationResult\n }\n }\n\n if (typeof config?.defaultMaxTextLength === 'number') {\n maxLength = config.defaultMaxTextLength\n }\n if (typeof fieldMaxLength === 'number') {\n maxLength = fieldMaxLength\n }\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('general:value'), maxLength, stringValue })\n }\n\n if (typeof minLength === 'number' && length < minLength) {\n return t('validation:longerThanMin', { label: t('general:value'), minLength, stringValue })\n }\n }\n\n if (required) {\n if (!value || ((typeof value === 'string' || Array.isArray(value)) && value.length === 0)) {\n return t('validation:required')\n }\n }\n\n return true\n}\n\nexport type PasswordFieldValidation = Validate<string, unknown, unknown, TextField>\n\nexport const password: PasswordFieldValidation = (\n value,\n {\n maxLength: fieldMaxLength,\n minLength = 3,\n req: {\n payload: { config },\n t,\n },\n required,\n },\n) => {\n let maxLength!: number\n\n if (typeof config?.defaultMaxTextLength === 'number') {\n maxLength = config.defaultMaxTextLength\n }\n if (typeof fieldMaxLength === 'number') {\n maxLength = fieldMaxLength\n }\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 type ConfirmPasswordFieldValidation = Validate<\n string,\n unknown,\n { password: string },\n TextField\n>\n\nexport const confirmPassword: ConfirmPasswordFieldValidation = (\n value,\n { req: { t }, required, siblingData },\n) => {\n if (required && !value) {\n return t('validation:required')\n }\n\n if (value && value !== siblingData.password) {\n return t('fields:passwordsDoNotMatch')\n }\n\n return true\n}\n\nexport type EmailFieldValidation = Validate<string, unknown, { username?: string }, EmailField>\n\nexport const email: EmailFieldValidation = (\n value,\n {\n collectionSlug,\n req: {\n payload: { collections, config },\n t,\n },\n required,\n siblingData,\n },\n) => {\n if (collectionSlug) {\n const collection =\n collections?.[collectionSlug]?.config ??\n config.collections.find(({ slug }) => slug === collectionSlug)! // If this is run on the client, `collections` will be undefined, but `config.collections` will be available\n\n if (\n collection.auth.loginWithUsername &&\n !collection.auth.loginWithUsername?.requireUsername &&\n !collection.auth.loginWithUsername?.requireEmail\n ) {\n if (!value && !siblingData?.username) {\n return t('validation:required')\n }\n }\n }\n\n /**\n * Disallows emails with double quotes (e.g., \"user\"@example.com, user@\"example.com\", \"user@example.com\")\n * Rejects spaces anywhere in the email (e.g., user @example.com, user@ example.com, user name@example.com)\n * Prevents consecutive dots in the local or domain part (e.g., user..name@example.com, user@example..com)\n * Disallows domains that start or end with a hyphen (e.g., user@-example.com, user@example-.com)\n * Allows standard email formats (e.g., user@example.com, user.name+alias@example.co.uk, user-name@example.org)\n * Allows domains with consecutive hyphens as long as they are not leading/trailing (e.g., user@ex--ample.com)\n * Supports multiple subdomains (e.g., user@sub.domain.example.com)\n */\n const emailRegex =\n /^(?!.*\\.\\.)[\\w!#$%&'*+/=?^`{|}~-](?:[\\w!#$%&'*+/=?^`{|}~.-]*[\\w!#$%&'*+/=?^`{|}~-])?@[a-z0-9](?:[a-z0-9-]*[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)*\\.[a-z]{2,}$/i\n\n if ((value && !emailRegex.test(value)) || (!value && required)) {\n return t('validation:emailAddress')\n }\n\n return true\n}\n\nexport type UsernameFieldValidation = Validate<string, unknown, { email?: string }, TextField>\n\nexport const username: UsernameFieldValidation = (\n value,\n {\n collectionSlug,\n req: {\n payload: { collections, config },\n t,\n },\n required,\n siblingData,\n },\n) => {\n let maxLength!: number\n\n if (collectionSlug) {\n const collection =\n collections?.[collectionSlug]?.config ??\n config.collections.find(({ slug }) => slug === collectionSlug)! // If this is run on the client, `collections` will be undefined, but `config.collections` will be available\n\n if (\n collection.auth.loginWithUsername &&\n !collection.auth.loginWithUsername?.requireUsername &&\n !collection.auth.loginWithUsername?.requireEmail\n ) {\n if (!value && !siblingData?.email) {\n return t('validation:required')\n }\n }\n }\n\n if (typeof config?.defaultMaxTextLength === 'number') {\n maxLength = config.defaultMaxTextLength\n }\n\n if (value && maxLength && value.length > maxLength) {\n return t('validation:shorterThanMax', { maxLength })\n }\n\n if (!value && required) {\n return t('validation:required')\n }\n\n return true\n}\n\nexport type TextareaFieldValidation = Validate<string, unknown, unknown, TextareaField>\n\nexport const textarea: TextareaFieldValidation = (\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') {\n maxLength = config.defaultMaxTextLength\n }\n if (typeof fieldMaxLength === 'number') {\n 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 type CodeFieldValidation = Validate<string, unknown, unknown, CodeField>\n\nexport const code: CodeFieldValidation = (value, { req: { t }, required }) => {\n if (required && (!value || (typeof value === 'string' && value.length === 0))) {\n return t('validation:required')\n }\n\n return true\n}\n\nexport type JSONFieldValidation = Validate<\n string,\n unknown,\n unknown,\n { jsonError?: string } & JSONField\n>\n\nexport const json: JSONFieldValidation = (\n value,\n { jsonError, jsonSchema, req: { t }, required },\n) => {\n const isNotEmpty = (value: null | string | undefined) => {\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 }: { schema: JSONSchema4; uri: string }) => {\n if (uri && schema) {\n return schema\n }\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 json = _json as {\n id: string\n }\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 = fetchSchema(jsonSchema)\n const { schema } = jsonSchema\n // @ts-expect-error missing types\n const ajv = new Ajv()\n\n if (!ajv.validate(schema, value)) {\n return ajv.errorsText()\n }\n } catch (error) {\n return error instanceof Error ? error.message : 'Unknown error'\n }\n }\n return true\n}\n\nexport type CheckboxFieldValidation = Validate<boolean, unknown, unknown, CheckboxField>\n\nexport const checkbox: CheckboxFieldValidation = (value, { req: { t }, required }) => {\n if ((value && typeof value !== 'boolean') || (required && typeof value !== 'boolean')) {\n return t('validation:trueOrFalse')\n }\n\n return true\n}\n\nexport type DateFieldValidation = Validate<Date, unknown, unknown, DateField>\n\nexport const date: DateFieldValidation = (\n value,\n { name, req: { t }, required, siblingData, timezone },\n) => {\n const validDate = value && !isNaN(Date.parse(value.toString()))\n\n // We need to also check for the timezone data based on this field's config\n // We cannot do this inside the timezone field validation as it's visually hidden\n const hasRequiredTimezone = timezone && required\n const selectedTimezone: string = siblingData?.[`${name}_tz` as keyof typeof siblingData]\n // Always resolve to true if the field is not required, as timezone may be optional too then\n const validTimezone = hasRequiredTimezone ? Boolean(selectedTimezone) : true\n\n if (validDate && validTimezone) {\n return true\n }\n\n if (validDate && !validTimezone) {\n return t('validation:timezoneRequired')\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 type RichTextFieldValidation = Validate<object, unknown, unknown, RichTextField>\n\nexport const richText: RichTextFieldValidation = async (value, options) => {\n if (!options?.editor) {\n throw new Error('richText field has no editor property.')\n }\n if (typeof options?.editor === 'function') {\n throw new Error('Attempted to access unsanitized rich text editor.')\n }\n\n const editor: RichTextAdapter = options?.editor\n\n return editor.validate(value, options)\n}\n\nconst validateArrayLength = (\n value: unknown,\n options: {\n maxRows?: number\n minRows?: number\n required?: boolean\n t: TFunction\n },\n) => {\n const { maxRows, minRows, required, t } = options\n\n const arrayLength = Array.isArray(value) ? value.length : (value as number) || 0\n\n if (!required && arrayLength === 0) {\n return true\n }\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 type NumberFieldValidation = Validate<number | number[], unknown, unknown, NumberField>\n\nexport type NumberFieldManyValidation = Validate<number[], unknown, unknown, NumberField>\n\nexport type NumberFieldSingleValidation = Validate<number, unknown, unknown, NumberField>\n\nexport const number: NumberFieldValidation = (\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') {\n return lengthValidationResult\n }\n }\n\n if (!value && !isNumber(value)) {\n // if no value is present, validate based on required\n if (required) {\n return t('validation:required')\n }\n if (!required) {\n return true\n }\n }\n\n const numbersToValidate: number[] = Array.isArray(value) ? value : [value!]\n\n for (const number of numbersToValidate) {\n if (!isNumber(number)) {\n return t('validation:enterNumber')\n }\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 type ArrayFieldValidation = Validate<unknown[], unknown, unknown, ArrayField>\n\nexport const array: ArrayFieldValidation = (value, { maxRows, minRows, req: { t }, required }) => {\n return validateArrayLength(value, { maxRows, minRows, required, t })\n}\n\nexport type BlocksFieldValidation = Validate<unknown, unknown, unknown, BlocksField>\n\n/**\n * This function validates the blocks in a blocks field against the provided filterOptions.\n * It will return a list of all block slugs found in the value, the allowed block slugs (if any),\n * and a list of invalid block slugs that are used despite being disallowed.\n *\n * @internal - this may break or be removed at any time\n */\nexport async function validateBlocksFilterOptions({\n id,\n data,\n filterOptions,\n req,\n siblingData,\n value,\n}: { value: Parameters<BlocksFieldValidation>[0] } & Pick<\n Parameters<BlocksFieldValidation>[1],\n 'data' | 'filterOptions' | 'id' | 'req' | 'siblingData'\n>): Promise<{\n /**\n * All block slugs found in the value of the blocks field\n */\n allBlockSlugs: string[]\n /**\n * All block slugs that are allowed. If undefined, all blocks are allowed.\n */\n allowedBlockSlugs: string[] | undefined\n /**\n * A list of block slugs that are used despite being disallowed. If undefined, field passed validation.\n */\n invalidBlockSlugs: string[] | undefined\n}> {\n const allBlockSlugs = Array.isArray(value)\n ? (value as Array<{ blockType?: string }>)\n .map((b) => b.blockType)\n .filter((s): s is string => Boolean(s))\n : []\n\n // if undefined => all blocks allowed\n let allowedBlockSlugs: string[] | undefined = undefined\n\n if (typeof filterOptions === 'function') {\n const result = await filterOptions({\n id: id!, // original code asserted presence\n data,\n req,\n siblingData,\n user: req.user,\n })\n if (result !== true && Array.isArray(result)) {\n allowedBlockSlugs = result\n }\n } else if (Array.isArray(filterOptions)) {\n allowedBlockSlugs = filterOptions\n }\n\n const invalidBlockSlugs: string[] = []\n if (allowedBlockSlugs) {\n for (const blockSlug of allBlockSlugs) {\n if (!allowedBlockSlugs.includes(blockSlug)) {\n invalidBlockSlugs.push(blockSlug)\n }\n }\n }\n\n return {\n allBlockSlugs,\n allowedBlockSlugs,\n invalidBlockSlugs,\n }\n}\nexport const blocks: BlocksFieldValidation = async (\n value,\n { id, data, filterOptions, maxRows, minRows, req: { t }, req, required, siblingData },\n) => {\n const lengthValidationResult = validateArrayLength(value, { maxRows, minRows, required, t })\n if (typeof lengthValidationResult === 'string') {\n return lengthValidationResult\n }\n\n if (filterOptions) {\n const { invalidBlockSlugs } = await validateBlocksFilterOptions({\n id,\n data,\n filterOptions,\n req,\n siblingData,\n value,\n })\n if (invalidBlockSlugs?.length) {\n return t('validation:invalidBlocks', { blocks: invalidBlockSlugs.join(', ') })\n }\n }\n\n return true\n}\n\nconst validateFilterOptions: Validate<\n unknown,\n unknown,\n unknown,\n RelationshipField | UploadField\n> = async (\n value,\n { id, blockData, data, filterOptions, relationTo, req, req: { t, user }, siblingData },\n) => {\n if (typeof filterOptions !== 'undefined' && value) {\n const options: {\n [collection: string]: (number | string)[]\n } = {}\n\n const falseCollections: CollectionSlug[] = []\n const collections = !Array.isArray(relationTo) ? [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: id!,\n blockData,\n data,\n relationTo: collection,\n req,\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') {\n if (val?.value) {\n valueIDs.push(val.value)\n } else if (ObjectId.isValid(val)) {\n valueIDs.push(new ObjectId(val).toHexString())\n }\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 // @ts-expect-error - I don't understand why optionFilter is inferred as `false | Where | null` instead of `boolean | Where | null`\n if (optionFilter && optionFilter !== true) {\n findWhere.and?.push(optionFilter)\n }\n\n if (optionFilter === false) {\n falseCollections.push(collection)\n }\n\n const result = await req.payloadDataLoader.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 if (typeof val === 'object' && ObjectId.isValid(val)) {\n requestedID = new ObjectId(val).toHexString()\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!]) {\n return true\n }\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 type UploadFieldValidation = Validate<unknown, unknown, unknown, UploadField>\n\nexport type UploadFieldManyValidation = Validate<unknown[], unknown, unknown, UploadField>\n\nexport type UploadFieldSingleValidation = Validate<unknown, unknown, unknown, UploadField>\n\nexport const upload: UploadFieldValidation = async (value, options) => {\n const {\n event,\n maxRows,\n minRows,\n relationTo,\n req: { payload, t },\n required,\n } = options\n\n if (\n ((!value && typeof value !== 'number') || (Array.isArray(value) && value.length === 0)) &&\n required\n ) {\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 || typeof val === 'number') {\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) {\n return false\n }\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 if (event === 'onChange') {\n return true\n }\n\n return validateFilterOptions(value, options)\n}\n\nexport type RelationshipFieldValidation = Validate<\n RelationshipValue,\n unknown,\n unknown,\n RelationshipField\n>\n\nexport type RelationshipFieldManyValidation = Validate<\n RelationshipValueMany,\n unknown,\n unknown,\n RelationshipField\n>\n\nexport type RelationshipFieldSingleValidation = Validate<\n RelationshipValueSingle,\n unknown,\n unknown,\n RelationshipField\n>\n\nexport const relationship: RelationshipFieldValidation = async (value, options) => {\n const {\n event,\n maxRows,\n minRows,\n relationTo,\n req: { payload, t },\n required,\n } = options\n\n if (\n ((!value && typeof value !== 'number') || (Array.isArray(value) && value.length === 0)) &&\n required\n ) {\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: number | string | undefined | ValueWithRelation\n\n if (typeof relationTo === 'string') {\n collectionSlug = relationTo\n\n // custom id\n if (val || typeof val === 'number') {\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) {\n return false\n }\n\n const idType =\n payload.collections[collectionSlug!]?.customIDType || payload?.db?.defaultIDType || 'text'\n\n return !isValidID(requestedID as number | string, 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 if (event === 'onChange') {\n return true\n }\n\n return validateFilterOptions(value, options)\n}\n\nexport type SelectFieldValidation = Validate<string | string[], unknown, unknown, SelectField>\n\nexport type SelectFieldManyValidation = Validate<string[], unknown, unknown, SelectField>\n\nexport type SelectFieldSingleValidation = Validate<string, unknown, unknown, SelectField>\n\nexport const select: SelectFieldValidation = (\n value,\n { data, filterOptions, hasMany, options, req, req: { t }, required, siblingData },\n) => {\n const filteredOptions =\n typeof filterOptions === 'function'\n ? filterOptions({\n data,\n options,\n req,\n siblingData,\n })\n : options\n\n if (\n Array.isArray(value) &&\n value.some(\n (input) =>\n !filteredOptions.some(\n (option) => option === input || (typeof option !== 'string' && option?.value === input),\n ),\n )\n ) {\n return t('validation:invalidSelection')\n }\n\n // Check for duplicate values when hasMany is true\n if (hasMany && Array.isArray(value) && value.length > 1) {\n const counts = new Map<unknown, number>()\n\n for (const item of value) {\n counts.set(item, (counts.get(item) || 0) + 1)\n }\n\n const duplicates: unknown[] = []\n for (const [item, count] of counts.entries()) {\n if (count > 1) {\n // Add the item 'count' times to show all occurrences\n for (let i = 0; i < count; i++) {\n duplicates.push(item)\n }\n }\n }\n\n if (duplicates.length > 0) {\n return duplicates.reduce((err, duplicate, i) => {\n return `${err} ${JSON.stringify(duplicate)}${i < duplicates.length - 1 ? ',' : ''}`\n }, t('validation:invalidSelections')) as string\n }\n }\n\n if (\n typeof value === 'string' &&\n !filteredOptions.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 type RadioFieldValidation = Validate<unknown, unknown, unknown, RadioField>\n\nexport const radio: RadioFieldValidation = (value, { options, req: { t }, required }) => {\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 type PointFieldValidation = Validate<\n [number | string, number | string],\n unknown,\n unknown,\n PointField\n>\n\nexport const point: PointFieldValidation = (value = ['', ''], { req: { t }, required }) => {\n if (value === null) {\n if (required) {\n return t('validation:required')\n }\n\n return true\n }\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 // Validate longitude bounds (-180 to 180)\n if (value[0] && !Number.isNaN(lng) && (lng < -180 || lng > 180)) {\n return t('validation:longitudeOutOfBounds')\n }\n\n // Validate latitude bounds (-90 to 90)\n if (value[1] && !Number.isNaN(lat) && (lat < -90 || lat > 90)) {\n return t('validation:latitudeOutOfBounds')\n }\n\n return true\n}\n\n/**\n * Built-in field validations used by Payload\n *\n * These can be re-used in custom validations\n */\nexport const validations = {\n array,\n blocks,\n checkbox,\n code,\n confirmPassword,\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","ObjectIdImport","ObjectId","default","isNumber","isValidID","text","value","hasMany","maxLength","fieldMaxLength","maxRows","minLength","minRows","req","payload","config","t","required","undefined","lengthValidationResult","validateArrayLength","defaultMaxTextLength","stringsToValidate","Array","isArray","stringValue","length","label","password","confirmPassword","siblingData","email","collectionSlug","collections","collection","find","slug","auth","loginWithUsername","requireUsername","requireEmail","username","emailRegex","test","textarea","code","json","jsonError","jsonSchema","isNotEmpty","Object","keys","fetchSchema","schema","uri","fetch","then","response","ok","Error","_json","jsonSchemaSanitizations","id","$id","$schema","assign","ajv","validate","errorsText","error","message","checkbox","date","name","timezone","validDate","isNaN","Date","parse","toString","hasRequiredTimezone","selectedTimezone","validTimezone","Boolean","richText","options","editor","arrayLength","count","number","max","min","numbersToValidate","numberValue","parseFloat","array","validateBlocksFilterOptions","data","filterOptions","allBlockSlugs","map","b","blockType","filter","s","allowedBlockSlugs","result","user","invalidBlockSlugs","blockSlug","includes","push","blocks","join","validateFilterOptions","blockData","relationTo","falseCollections","values","optionFilter","valueIDs","forEach","val","isValid","toHexString","findWhere","and","in","payloadDataLoader","depth","limit","pagination","where","docs","doc","err","logger","msg","invalidRelationships","requestedID","indexOf","reduce","invalid","i","JSON","stringify","upload","event","idType","customIDType","db","defaultIDType","relationship","select","filteredOptions","some","input","option","counts","Map","item","set","get","duplicates","entries","duplicate","radio","valueMatchesOption","point","lng","String","lat","Number","validations"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/fields/validations.ts"],"sourcesContent":["import ObjectIdImport from 'bson-objectid'\n\nconst ObjectId = 'default' in ObjectIdImport ? ObjectIdImport.default : ObjectIdImport\n\nimport type { TFunction } from '@payloadcms/translations'\nimport type { JSONSchema4 } from 'json-schema'\n\nimport type { RichTextAdapter } from '../admin/types.js'\nimport type { CollectionSlug } from '../index.js'\nimport type { Where } from '../types/index.js'\nimport type {\n ArrayField,\n BlocksField,\n CheckboxField,\n CodeField,\n DateField,\n EmailField,\n JSONField,\n NumberField,\n PointField,\n RadioField,\n RelationshipField,\n RelationshipValue,\n RelationshipValueMany,\n RelationshipValueSingle,\n RichTextField,\n SelectField,\n SlugField,\n TextareaField,\n TextField,\n UploadField,\n Validate,\n ValueWithRelation,\n} from './config/types.js'\n\nimport { isNumber } from '../utilities/isNumber.js'\nimport { isValidID } from '../utilities/isValidID.js'\n\nexport type TextFieldValidation = Validate<string, unknown, unknown, TextField>\n\nexport type TextFieldManyValidation = Validate<string[], unknown, unknown, TextField>\n\nexport type TextFieldSingleValidation = Validate<string, unknown, unknown, TextField>\n\nexport const text: TextFieldValidation = (\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 === undefined || value === null) {\n return true\n }\n }\n\n if (hasMany === true) {\n const lengthValidationResult = validateArrayLength(value, { maxRows, minRows, required, t })\n if (typeof lengthValidationResult === 'string') {\n return lengthValidationResult\n }\n }\n\n if (typeof config?.defaultMaxTextLength === 'number') {\n maxLength = config.defaultMaxTextLength\n }\n if (typeof fieldMaxLength === 'number') {\n maxLength = fieldMaxLength\n }\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('general:value'), maxLength, stringValue })\n }\n\n if (typeof minLength === 'number' && length < minLength) {\n return t('validation:longerThanMin', { label: t('general:value'), minLength, stringValue })\n }\n }\n\n if (required) {\n if (!value || ((typeof value === 'string' || Array.isArray(value)) && value.length === 0)) {\n return t('validation:required')\n }\n }\n\n return true\n}\n\nexport type SlugFieldValidation = Validate<string, unknown, unknown, SlugField>\n\nexport const slug: SlugFieldValidation = (value, { req: { t }, required }) => {\n if (required && !value) {\n return t('validation:required')\n }\n\n return true\n}\n\nexport type PasswordFieldValidation = Validate<string, unknown, unknown, TextField>\n\nexport const password: PasswordFieldValidation = (\n value,\n {\n maxLength: fieldMaxLength,\n minLength = 3,\n req: {\n payload: { config },\n t,\n },\n required,\n },\n) => {\n let maxLength!: number\n\n if (typeof config?.defaultMaxTextLength === 'number') {\n maxLength = config.defaultMaxTextLength\n }\n if (typeof fieldMaxLength === 'number') {\n maxLength = fieldMaxLength\n }\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 type ConfirmPasswordFieldValidation = Validate<\n string,\n unknown,\n { password: string },\n TextField\n>\n\nexport const confirmPassword: ConfirmPasswordFieldValidation = (\n value,\n { req: { t }, required, siblingData },\n) => {\n if (required && !value) {\n return t('validation:required')\n }\n\n if (value && value !== siblingData.password) {\n return t('fields:passwordsDoNotMatch')\n }\n\n return true\n}\n\nexport type EmailFieldValidation = Validate<string, unknown, { username?: string }, EmailField>\n\nexport const email: EmailFieldValidation = (\n value,\n {\n collectionSlug,\n req: {\n payload: { collections, config },\n t,\n },\n required,\n siblingData,\n },\n) => {\n if (collectionSlug) {\n const collection =\n collections?.[collectionSlug]?.config ??\n config.collections.find(({ slug }) => slug === collectionSlug)! // If this is run on the client, `collections` will be undefined, but `config.collections` will be available\n\n if (\n collection.auth.loginWithUsername &&\n !collection.auth.loginWithUsername?.requireUsername &&\n !collection.auth.loginWithUsername?.requireEmail\n ) {\n if (!value && !siblingData?.username) {\n return t('validation:required')\n }\n }\n }\n\n /**\n * Disallows emails with double quotes (e.g., \"user\"@example.com, user@\"example.com\", \"user@example.com\")\n * Rejects spaces anywhere in the email (e.g., user @example.com, user@ example.com, user name@example.com)\n * Prevents consecutive dots in the local or domain part (e.g., user..name@example.com, user@example..com)\n * Disallows domains that start or end with a hyphen (e.g., user@-example.com, user@example-.com)\n * Allows standard email formats (e.g., user@example.com, user.name+alias@example.co.uk, user-name@example.org)\n * Allows domains with consecutive hyphens as long as they are not leading/trailing (e.g., user@ex--ample.com)\n * Supports multiple subdomains (e.g., user@sub.domain.example.com)\n */\n const emailRegex =\n /^(?!.*\\.\\.)[\\w!#$%&'*+/=?^`{|}~-](?:[\\w!#$%&'*+/=?^`{|}~.-]*[\\w!#$%&'*+/=?^`{|}~-])?@[a-z0-9](?:[a-z0-9-]*[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)*\\.[a-z]{2,}$/i\n\n if ((value && !emailRegex.test(value)) || (!value && required)) {\n return t('validation:emailAddress')\n }\n\n return true\n}\n\nexport type UsernameFieldValidation = Validate<string, unknown, { email?: string }, TextField>\n\nexport const username: UsernameFieldValidation = (\n value,\n {\n collectionSlug,\n req: {\n payload: { collections, config },\n t,\n },\n required,\n siblingData,\n },\n) => {\n let maxLength!: number\n\n if (collectionSlug) {\n const collection =\n collections?.[collectionSlug]?.config ??\n config.collections.find(({ slug }) => slug === collectionSlug)! // If this is run on the client, `collections` will be undefined, but `config.collections` will be available\n\n if (\n collection.auth.loginWithUsername &&\n !collection.auth.loginWithUsername?.requireUsername &&\n !collection.auth.loginWithUsername?.requireEmail\n ) {\n if (!value && !siblingData?.email) {\n return t('validation:required')\n }\n }\n }\n\n if (typeof config?.defaultMaxTextLength === 'number') {\n maxLength = config.defaultMaxTextLength\n }\n\n if (value && maxLength && value.length > maxLength) {\n return t('validation:shorterThanMax', { maxLength })\n }\n\n if (!value && required) {\n return t('validation:required')\n }\n\n return true\n}\n\nexport type TextareaFieldValidation = Validate<string, unknown, unknown, TextareaField>\n\nexport const textarea: TextareaFieldValidation = (\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') {\n maxLength = config.defaultMaxTextLength\n }\n if (typeof fieldMaxLength === 'number') {\n 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 type CodeFieldValidation = Validate<string, unknown, unknown, CodeField>\n\nexport const code: CodeFieldValidation = (value, { req: { t }, required }) => {\n if (required && (!value || (typeof value === 'string' && value.length === 0))) {\n return t('validation:required')\n }\n\n return true\n}\n\nexport type JSONFieldValidation = Validate<\n string,\n unknown,\n unknown,\n { jsonError?: string } & JSONField\n>\n\nexport const json: JSONFieldValidation = async (\n value,\n { jsonError, jsonSchema, req: { t }, required },\n) => {\n const isNotEmpty = (value: null | string | undefined) => {\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 }: { schema: JSONSchema4; uri: string }) => {\n if (uri && schema) {\n return schema\n }\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 json = _json as {\n id: string\n }\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 = fetchSchema(jsonSchema)\n const { schema } = jsonSchema\n const AjvModule = await import('ajv')\n // Handle both ESM default export and CJS interop where the module itself is the constructor\n const AjvClass: any =\n 'default' in AjvModule && typeof AjvModule.default === 'function'\n ? AjvModule.default\n : AjvModule\n const ajv = new AjvClass()\n\n if (!ajv.validate(schema, value)) {\n return ajv.errorsText()\n }\n } catch (error) {\n return error instanceof Error ? error.message : 'Unknown error'\n }\n }\n return true\n}\n\nexport type CheckboxFieldValidation = Validate<boolean, unknown, unknown, CheckboxField>\n\nexport const checkbox: CheckboxFieldValidation = (value, { req: { t }, required }) => {\n if ((value && typeof value !== 'boolean') || (required && typeof value !== 'boolean')) {\n return t('validation:trueOrFalse')\n }\n\n return true\n}\n\nexport type DateFieldValidation = Validate<Date, unknown, unknown, DateField>\n\nexport const date: DateFieldValidation = (\n value,\n { name, req: { t }, required, siblingData, timezone },\n) => {\n const validDate = value && !isNaN(Date.parse(value.toString()))\n\n // We need to also check for the timezone data based on this field's config\n // We cannot do this inside the timezone field validation as it's visually hidden\n const hasRequiredTimezone = timezone && required\n const selectedTimezone: string = siblingData?.[`${name}_tz` as keyof typeof siblingData]\n // Always resolve to true if the field is not required, as timezone may be optional too then\n const validTimezone = hasRequiredTimezone ? Boolean(selectedTimezone) : true\n\n if (validDate && validTimezone) {\n return true\n }\n\n if (validDate && !validTimezone) {\n return t('validation:timezoneRequired')\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 type RichTextFieldValidation = Validate<object, unknown, unknown, RichTextField>\n\nexport const richText: RichTextFieldValidation = async (value, options) => {\n if (!options?.editor) {\n throw new Error('richText field has no editor property.')\n }\n if (typeof options?.editor === 'function') {\n throw new Error('Attempted to access unsanitized rich text editor.')\n }\n\n const editor: RichTextAdapter = options?.editor\n\n return editor.validate(value, options)\n}\n\nconst validateArrayLength = (\n value: unknown,\n options: {\n maxRows?: number\n minRows?: number\n required?: boolean\n t: TFunction\n },\n) => {\n const { maxRows, minRows, required, t } = options\n\n const arrayLength = Array.isArray(value) ? value.length : (value as number) || 0\n\n if (!required && arrayLength === 0) {\n return true\n }\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 type NumberFieldValidation = Validate<number | number[], unknown, unknown, NumberField>\n\nexport type NumberFieldManyValidation = Validate<number[], unknown, unknown, NumberField>\n\nexport type NumberFieldSingleValidation = Validate<number, unknown, unknown, NumberField>\n\nexport const number: NumberFieldValidation = (\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') {\n return lengthValidationResult\n }\n }\n\n if (!value && !isNumber(value)) {\n // if no value is present, validate based on required\n if (required) {\n return t('validation:required')\n }\n if (!required) {\n return true\n }\n }\n\n const numbersToValidate: number[] = Array.isArray(value) ? value : [value!]\n\n for (const number of numbersToValidate) {\n if (!isNumber(number)) {\n return t('validation:enterNumber')\n }\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 type ArrayFieldValidation = Validate<unknown[], unknown, unknown, ArrayField>\n\nexport const array: ArrayFieldValidation = (value, { maxRows, minRows, req: { t }, required }) => {\n return validateArrayLength(value, { maxRows, minRows, required, t })\n}\n\nexport type BlocksFieldValidation = Validate<unknown, unknown, unknown, BlocksField>\n\n/**\n * This function validates the blocks in a blocks field against the provided filterOptions.\n * It will return a list of all block slugs found in the value, the allowed block slugs (if any),\n * and a list of invalid block slugs that are used despite being disallowed.\n *\n * @internal - this may break or be removed at any time\n */\nexport async function validateBlocksFilterOptions({\n id,\n data,\n filterOptions,\n req,\n siblingData,\n value,\n}: { value: Parameters<BlocksFieldValidation>[0] } & Pick<\n Parameters<BlocksFieldValidation>[1],\n 'data' | 'filterOptions' | 'id' | 'req' | 'siblingData'\n>): Promise<{\n /**\n * All block slugs found in the value of the blocks field\n */\n allBlockSlugs: string[]\n /**\n * All block slugs that are allowed. If undefined, all blocks are allowed.\n */\n allowedBlockSlugs: string[] | undefined\n /**\n * A list of block slugs that are used despite being disallowed. If undefined, field passed validation.\n */\n invalidBlockSlugs: string[] | undefined\n}> {\n const allBlockSlugs = Array.isArray(value)\n ? (value as Array<{ blockType?: string }>)\n .map((b) => b.blockType)\n .filter((s): s is string => Boolean(s))\n : []\n\n // if undefined => all blocks allowed\n let allowedBlockSlugs: string[] | undefined = undefined\n\n if (typeof filterOptions === 'function') {\n const result = await filterOptions({\n id: id!, // original code asserted presence\n data,\n req,\n siblingData,\n user: req.user,\n })\n if (result !== true && Array.isArray(result)) {\n allowedBlockSlugs = result\n }\n } else if (Array.isArray(filterOptions)) {\n allowedBlockSlugs = filterOptions\n }\n\n const invalidBlockSlugs: string[] = []\n if (allowedBlockSlugs) {\n for (const blockSlug of allBlockSlugs) {\n if (!allowedBlockSlugs.includes(blockSlug)) {\n invalidBlockSlugs.push(blockSlug)\n }\n }\n }\n\n return {\n allBlockSlugs,\n allowedBlockSlugs,\n invalidBlockSlugs,\n }\n}\nexport const blocks: BlocksFieldValidation = async (\n value,\n { id, data, filterOptions, maxRows, minRows, req: { t }, req, required, siblingData },\n) => {\n const lengthValidationResult = validateArrayLength(value, { maxRows, minRows, required, t })\n if (typeof lengthValidationResult === 'string') {\n return lengthValidationResult\n }\n\n if (filterOptions) {\n const { invalidBlockSlugs } = await validateBlocksFilterOptions({\n id,\n data,\n filterOptions,\n req,\n siblingData,\n value,\n })\n if (invalidBlockSlugs?.length) {\n return t('validation:invalidBlocks', { blocks: invalidBlockSlugs.join(', ') })\n }\n }\n\n return true\n}\n\nconst validateFilterOptions: Validate<\n unknown,\n unknown,\n unknown,\n RelationshipField | UploadField\n> = async (\n value,\n { id, blockData, data, filterOptions, relationTo, req, req: { t, user }, siblingData },\n) => {\n if (typeof filterOptions !== 'undefined' && value) {\n const options: {\n [collection: string]: (number | string)[]\n } = {}\n\n const falseCollections: CollectionSlug[] = []\n const collections = !Array.isArray(relationTo) ? [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: id!,\n blockData,\n data,\n relationTo: collection,\n req,\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') {\n if (val?.value) {\n valueIDs.push(val.value)\n } else if (ObjectId.isValid(val)) {\n valueIDs.push(new ObjectId(val).toHexString())\n }\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 // @ts-expect-error - I don't understand why optionFilter is inferred as `false | Where | null` instead of `boolean | Where | null`\n if (optionFilter && optionFilter !== true) {\n findWhere.and?.push(optionFilter)\n }\n\n if (optionFilter === false) {\n falseCollections.push(collection)\n }\n\n const result = await req.payloadDataLoader.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 if (typeof val === 'object' && ObjectId.isValid(val)) {\n requestedID = new ObjectId(val).toHexString()\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!]) {\n return true\n }\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 type UploadFieldValidation = Validate<unknown, unknown, unknown, UploadField>\n\nexport type UploadFieldManyValidation = Validate<unknown[], unknown, unknown, UploadField>\n\nexport type UploadFieldSingleValidation = Validate<unknown, unknown, unknown, UploadField>\n\nexport const upload: UploadFieldValidation = async (value, options) => {\n const {\n event,\n maxRows,\n minRows,\n relationTo,\n req: { payload, t },\n required,\n } = options\n\n if (\n ((!value && typeof value !== 'number') || (Array.isArray(value) && value.length === 0)) &&\n required\n ) {\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 || typeof val === 'number') {\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) {\n return false\n }\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 if (event === 'onChange') {\n return true\n }\n\n return validateFilterOptions(value, options)\n}\n\nexport type RelationshipFieldValidation = Validate<\n RelationshipValue,\n unknown,\n unknown,\n RelationshipField\n>\n\nexport type RelationshipFieldManyValidation = Validate<\n RelationshipValueMany,\n unknown,\n unknown,\n RelationshipField\n>\n\nexport type RelationshipFieldSingleValidation = Validate<\n RelationshipValueSingle,\n unknown,\n unknown,\n RelationshipField\n>\n\nexport const relationship: RelationshipFieldValidation = async (value, options) => {\n const {\n event,\n maxRows,\n minRows,\n relationTo,\n req: { payload, t },\n required,\n } = options\n\n if (\n ((!value && typeof value !== 'number') || (Array.isArray(value) && value.length === 0)) &&\n required\n ) {\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: number | string | undefined | ValueWithRelation\n\n if (typeof relationTo === 'string') {\n collectionSlug = relationTo\n\n // custom id\n if (val || typeof val === 'number') {\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) {\n return false\n }\n\n const idType =\n payload.collections[collectionSlug!]?.customIDType || payload?.db?.defaultIDType || 'text'\n\n return !isValidID(requestedID as number | string, 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 if (event === 'onChange') {\n return true\n }\n\n return validateFilterOptions(value, options)\n}\n\nexport type SelectFieldValidation = Validate<string | string[], unknown, unknown, SelectField>\n\nexport type SelectFieldManyValidation = Validate<string[], unknown, unknown, SelectField>\n\nexport type SelectFieldSingleValidation = Validate<string, unknown, unknown, SelectField>\n\nexport const select: SelectFieldValidation = (\n value,\n { data, filterOptions, hasMany, options, req, req: { t }, required, siblingData },\n) => {\n const filteredOptions =\n typeof filterOptions === 'function'\n ? filterOptions({\n data,\n options,\n req,\n siblingData,\n })\n : options\n\n if (\n Array.isArray(value) &&\n value.some(\n (input) =>\n !filteredOptions.some(\n (option) => option === input || (typeof option !== 'string' && option?.value === input),\n ),\n )\n ) {\n return t('validation:invalidSelection')\n }\n\n // Check for duplicate values when hasMany is true\n if (hasMany && Array.isArray(value) && value.length > 1) {\n const counts = new Map<unknown, number>()\n\n for (const item of value) {\n counts.set(item, (counts.get(item) || 0) + 1)\n }\n\n const duplicates: unknown[] = []\n for (const [item, count] of counts.entries()) {\n if (count > 1) {\n // Add the item 'count' times to show all occurrences\n for (let i = 0; i < count; i++) {\n duplicates.push(item)\n }\n }\n }\n\n if (duplicates.length > 0) {\n return duplicates.reduce((err, duplicate, i) => {\n return `${err} ${JSON.stringify(duplicate)}${i < duplicates.length - 1 ? ',' : ''}`\n }, t('validation:invalidSelections')) as string\n }\n }\n\n if (\n typeof value === 'string' &&\n !filteredOptions.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 type RadioFieldValidation = Validate<unknown, unknown, unknown, RadioField>\n\nexport const radio: RadioFieldValidation = (value, { options, req: { t }, required }) => {\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 type PointFieldValidation = Validate<\n [number | string, number | string],\n unknown,\n unknown,\n PointField\n>\n\nexport const point: PointFieldValidation = (value = ['', ''], { req: { t }, required }) => {\n if (value === null) {\n if (required) {\n return t('validation:required')\n }\n\n return true\n }\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 // Validate longitude bounds (-180 to 180)\n if (value[0] && !Number.isNaN(lng) && (lng < -180 || lng > 180)) {\n return t('validation:longitudeOutOfBounds')\n }\n\n // Validate latitude bounds (-90 to 90)\n if (value[1] && !Number.isNaN(lat) && (lat < -90 || lat > 90)) {\n return t('validation:latitudeOutOfBounds')\n }\n\n return true\n}\n\n/**\n * Built-in field validations used by Payload\n *\n * These can be re-used in custom validations\n */\nexport const validations = {\n slug,\n array,\n blocks,\n checkbox,\n code,\n confirmPassword,\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":["ObjectIdImport","ObjectId","default","isNumber","isValidID","text","value","hasMany","maxLength","fieldMaxLength","maxRows","minLength","minRows","req","payload","config","t","required","undefined","lengthValidationResult","validateArrayLength","defaultMaxTextLength","stringsToValidate","Array","isArray","stringValue","length","label","slug","password","confirmPassword","siblingData","email","collectionSlug","collections","collection","find","auth","loginWithUsername","requireUsername","requireEmail","username","emailRegex","test","textarea","code","json","jsonError","jsonSchema","isNotEmpty","Object","keys","fetchSchema","schema","uri","fetch","then","response","ok","Error","_json","jsonSchemaSanitizations","id","$id","$schema","assign","AjvModule","AjvClass","ajv","validate","errorsText","error","message","checkbox","date","name","timezone","validDate","isNaN","Date","parse","toString","hasRequiredTimezone","selectedTimezone","validTimezone","Boolean","richText","options","editor","arrayLength","count","number","max","min","numbersToValidate","numberValue","parseFloat","array","validateBlocksFilterOptions","data","filterOptions","allBlockSlugs","map","b","blockType","filter","s","allowedBlockSlugs","result","user","invalidBlockSlugs","blockSlug","includes","push","blocks","join","validateFilterOptions","blockData","relationTo","falseCollections","values","optionFilter","valueIDs","forEach","val","isValid","toHexString","findWhere","and","in","payloadDataLoader","depth","limit","pagination","where","docs","doc","err","logger","msg","invalidRelationships","requestedID","indexOf","reduce","invalid","i","JSON","stringify","upload","event","idType","customIDType","db","defaultIDType","relationship","select","filteredOptions","some","input","option","counts","Map","item","set","get","duplicates","entries","duplicate","radio","valueMatchesOption","point","lng","String","lat","Number","validations"],"mappings":"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"}
@@ -15,14 +15,14 @@ export type ClientGlobalConfig = {
15
15
  fields: ClientField[];
16
16
  } & Omit<SanitizedGlobalConfig, 'admin' | 'fields' | ServerOnlyGlobalProperties>;
17
17
  export declare const createClientGlobalConfig: ({ defaultIDType, global, i18n, importMap, }: {
18
- defaultIDType: Payload["config"]["db"]["defaultIDType"];
19
- global: SanitizedConfig["globals"][0];
18
+ defaultIDType: Payload['config']['db']['defaultIDType'];
19
+ global: SanitizedConfig['globals'][0];
20
20
  i18n: I18nClient;
21
21
  importMap: ImportMap;
22
22
  }) => ClientGlobalConfig;
23
23
  export declare const createClientGlobalConfigs: ({ defaultIDType, globals, i18n, importMap, }: {
24
- defaultIDType: Payload["config"]["db"]["defaultIDType"];
25
- globals: SanitizedConfig["globals"];
24
+ defaultIDType: Payload['config']['db']['defaultIDType'];
25
+ globals: SanitizedConfig['globals'];
26
26
  i18n: I18nClient;
27
27
  importMap: ImportMap;
28
28
  }) => ClientGlobalConfig[];
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/globals/config/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,0BAA0B,CAAA;AAErE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAA;AACrE,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EACf,+BAA+B,EAChC,MAAM,uBAAuB,CAAA;AAC9B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAEvD,OAAO,EAAE,KAAK,WAAW,EAAsB,MAAM,+BAA+B,CAAA;AAEpF,MAAM,MAAM,0BAA0B,GAAG,MAAM,IAAI,CACjD,qBAAqB,EACrB,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,iBAAiB,GAAG,OAAO,GAAG,QAAQ,CAChG,CAAA;AAED,MAAM,MAAM,+BAA+B,GAAG,MAAM,IAAI,CACtD,qBAAqB,CAAC,OAAO,CAAC,EAC9B,YAAY,GAAG,QAAQ,CACxB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE;QACL,UAAU,EAAE,IAAI,CAAA;QAChB,WAAW,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,+BAA+B,CAAC,CAAA;QACtE,OAAO,CAAC,EAAE,OAAO,CAAA;KAClB,GAAG,IAAI,CACN,qBAAqB,CAAC,OAAO,CAAC,EAC9B,YAAY,GAAG,aAAa,GAAG,SAAS,GAAG,+BAA+B,CAC3E,CAAA;IACD,MAAM,EAAE,WAAW,EAAE,CAAA;CACtB,GAAG,IAAI,CAAC,qBAAqB,EAAE,OAAO,GAAG,QAAQ,GAAG,0BAA0B,CAAC,CAAA;AAiBhF,eAAO,MAAM,wBAAwB,GAAI,6CAKtC;IACD,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAA;IACvD,MAAM,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;IACrC,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,SAAS,CAAA;CACrB,KAAG,kBA0DH,CAAA;AAED,eAAO,MAAM,yBAAyB,GAAI,8CAKvC;IACD,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAA;IACvD,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,CAAA;IACnC,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,SAAS,CAAA;CACrB,KAAG,kBAAkB,EAerB,CAAA"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/globals/config/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAa,MAAM,0BAA0B,CAAA;AAErE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAA;AACrE,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EACf,+BAA+B,EAChC,MAAM,uBAAuB,CAAA;AAC9B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACnD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAEvD,OAAO,EAAE,KAAK,WAAW,EAAsB,MAAM,+BAA+B,CAAA;AAEpF,MAAM,MAAM,0BAA0B,GAAG,MAAM,IAAI,CACjD,qBAAqB,EACrB,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,iBAAiB,GAAG,OAAO,GAAG,QAAQ,CAChG,CAAA;AAED,MAAM,MAAM,+BAA+B,GAAG,MAAM,IAAI,CACtD,qBAAqB,CAAC,OAAO,CAAC,EAC9B,YAAY,GAAG,QAAQ,CACxB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE;QACL,UAAU,EAAE,IAAI,CAAA;QAChB,WAAW,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,+BAA+B,CAAC,CAAA;QACtE,OAAO,CAAC,EAAE,OAAO,CAAA;KAClB,GAAG,IAAI,CACN,qBAAqB,CAAC,OAAO,CAAC,EAC9B,YAAY,GAAG,aAAa,GAAG,SAAS,GAAG,+BAA+B,CAC3E,CAAA;IACD,MAAM,EAAE,WAAW,EAAE,CAAA;CACtB,GAAG,IAAI,CAAC,qBAAqB,EAAE,OAAO,GAAG,QAAQ,GAAG,0BAA0B,CAAC,CAAA;AAiBhF,eAAO,MAAM,wBAAwB,gDAKlC;IACD,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAA;IACvD,MAAM,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;IACrC,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,SAAS,CAAA;CACrB,KAAG,kBA0DH,CAAA;AAED,eAAO,MAAM,yBAAyB,iDAKnC;IACD,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,CAAA;IACvD,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,CAAA;IACnC,IAAI,EAAE,UAAU,CAAA;IAChB,SAAS,EAAE,SAAS,CAAA;CACrB,KAAG,kBAAkB,EAerB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../../src/globals/config/sanitize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACpE,OAAO,KAAK,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAYrE,eAAO,MAAM,cAAc,GACzB,QAAQ,MAAM,EACd,QAAQ,YAAY;AACpB;;;GAGG;AACH,+BAA+B,KAAK,CAAC,CAAC,MAAM,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,EAChF,sBAAsB,MAAM,EAAE,KAC7B,OAAO,CAAC,qBAAqB,CA4K/B,CAAA"}
1
+ {"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../../src/globals/config/sanitize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAEpE,OAAO,KAAK,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAYrE,eAAO,MAAM,cAAc,WACjB,MAAM,UACN,YAAY;AACpB;;;GAGG;+BAC4B,KAAK,CAAC,CAAC,MAAM,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,wBAC1D,MAAM,EAAE,KAC7B,OAAO,CAAC,qBAAqB,CAyK/B,CAAA"}
@@ -69,6 +69,7 @@ export const sanitizeGlobal = async (config, global, /**
69
69
  global.endpoints.push(endpoint);
70
70
  }
71
71
  }
72
+ global.versions = global.versions ?? true;
72
73
  if (global.versions) {
73
74
  if (global.versions === true) {
74
75
  global.versions = {
@@ -85,12 +86,7 @@ export const sanitizeGlobal = async (config, global, /**
85
86
  };
86
87
  }
87
88
  const hasLocalizedFields = traverseForLocalizedFields(global.fields);
88
- if (config.localization && hasLocalizedFields) {
89
- if (global.versions.drafts.localizeStatus === undefined) {
90
- global.versions.drafts.localizeStatus = false;
91
- }
92
- }
93
- global.versions.drafts.localizeStatus = config.experimental?.localizeStatus ? global.versions.drafts.localizeStatus : false;
89
+ global.versions.drafts.localizeStatus = !!(config.localization && hasLocalizedFields);
94
90
  if (global.versions.drafts.autosave === true) {
95
91
  global.versions.drafts.autosave = {
96
92
  interval: versionDefaults.autosaveInterval
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/globals/config/sanitize.ts"],"sourcesContent":["import type { Config, SanitizedConfig } from '../../config/types.js'\nimport type { GlobalConfig, SanitizedGlobalConfig } from './types.js'\n\nimport { defaultAccess } from '../../auth/defaultAccess.js'\nimport { sanitizeFields } from '../../fields/config/sanitize.js'\nimport { fieldAffectsData } from '../../fields/config/types.js'\nimport { mergeBaseFields } from '../../fields/mergeBaseFields.js'\nimport { flattenAllFields } from '../../utilities/flattenAllFields.js'\nimport { toWords } from '../../utilities/formatLabels.js'\nimport { traverseForLocalizedFields } from '../../utilities/traverseForLocalizedFields.js'\nimport { baseVersionFields } from '../../versions/baseFields.js'\nimport { versionDefaults } from '../../versions/defaults.js'\nimport { defaultGlobalEndpoints } from '../endpoints/index.js'\nexport const sanitizeGlobal = async (\n config: Config,\n global: GlobalConfig,\n /**\n * If this property is set, RichText fields won't be sanitized immediately. Instead, they will be added to this array as promises\n * so that you can sanitize them together, after the config has been sanitized.\n */\n richTextSanitizationPromises?: Array<(config: SanitizedConfig) => Promise<void>>,\n _validRelationships?: string[],\n): Promise<SanitizedGlobalConfig> => {\n if (global._sanitized) {\n return global as SanitizedGlobalConfig\n }\n\n global._sanitized = true\n\n global.label = global.label || toWords(global.slug)\n\n // /////////////////////////////////\n // Ensure that collection has required object structure\n // /////////////////////////////////\n\n global.endpoints = global.endpoints ?? []\n\n if (!global.hooks) {\n global.hooks = {}\n }\n\n if (!global.access) {\n global.access = {}\n }\n\n if (!global.admin) {\n global.admin = {}\n }\n\n if (!global.access.read) {\n global.access.read = defaultAccess\n }\n\n if (!global.access.update) {\n global.access.update = defaultAccess\n }\n\n if (!global.hooks.beforeValidate) {\n global.hooks.beforeValidate = []\n }\n\n if (!global.hooks.beforeChange) {\n global.hooks.beforeChange = []\n }\n\n if (!global.hooks.afterChange) {\n global.hooks.afterChange = []\n }\n\n if (!global.hooks.beforeRead) {\n global.hooks.beforeRead = []\n }\n\n if (!global.hooks.afterRead) {\n global.hooks.afterRead = []\n }\n\n // Sanitize fields\n const validRelationships = _validRelationships ?? config.collections?.map((c) => c.slug) ?? []\n\n global.fields = await sanitizeFields({\n config,\n fields: global.fields,\n globalConfig: global,\n parentIsLocalized: false,\n richTextSanitizationPromises,\n validRelationships,\n })\n\n if (global.endpoints !== false) {\n if (!global.endpoints) {\n global.endpoints = []\n }\n\n for (const endpoint of defaultGlobalEndpoints) {\n global.endpoints.push(endpoint)\n }\n }\n\n if (global.versions) {\n if (global.versions === true) {\n global.versions = {\n drafts: false,\n max: 100,\n }\n }\n\n global.versions.max = typeof global.versions.max === 'number' ? global.versions.max : 100\n\n if (global.versions.drafts) {\n if (global.versions.drafts === true) {\n global.versions.drafts = {\n autosave: false,\n validate: false,\n }\n }\n\n const hasLocalizedFields = traverseForLocalizedFields(global.fields)\n\n if (config.localization && hasLocalizedFields) {\n if (global.versions.drafts.localizeStatus === undefined) {\n global.versions.drafts.localizeStatus = false\n }\n }\n\n global.versions.drafts.localizeStatus = config.experimental?.localizeStatus\n ? global.versions.drafts.localizeStatus\n : false\n\n if (global.versions.drafts.autosave === true) {\n global.versions.drafts.autosave = {\n interval: versionDefaults.autosaveInterval,\n }\n }\n\n if (global.versions.drafts.validate === undefined) {\n global.versions.drafts.validate = false\n }\n\n global.fields = mergeBaseFields(\n global.fields,\n baseVersionFields({\n localized: global.versions.drafts.localizeStatus ?? false,\n }),\n )\n }\n }\n\n if (!global.custom) {\n global.custom = {}\n }\n\n // /////////////////////////////////\n // Sanitize fields\n // /////////////////////////////////\n let hasUpdatedAt: boolean | null = null\n let hasCreatedAt: boolean | null = null\n global.fields.some((field) => {\n if (fieldAffectsData(field)) {\n if (field.name === 'updatedAt') {\n hasUpdatedAt = true\n }\n if (field.name === 'createdAt') {\n hasCreatedAt = true\n }\n }\n return hasCreatedAt && hasUpdatedAt\n })\n if (!hasUpdatedAt) {\n global.fields.push({\n name: 'updatedAt',\n type: 'date',\n admin: {\n disabled: { bulkEdit: true },\n hidden: true,\n },\n label: ({ t }) => t('general:updatedAt'),\n })\n }\n if (!hasCreatedAt) {\n global.fields.push({\n name: 'createdAt',\n type: 'date',\n admin: {\n disabled: { bulkEdit: true },\n hidden: true,\n },\n label: ({ t }) => t('general:createdAt'),\n })\n }\n\n ;(global as SanitizedGlobalConfig).flattenedFields = flattenAllFields({ fields: global.fields })\n\n return global as SanitizedGlobalConfig\n}\n"],"names":["defaultAccess","sanitizeFields","fieldAffectsData","mergeBaseFields","flattenAllFields","toWords","traverseForLocalizedFields","baseVersionFields","versionDefaults","defaultGlobalEndpoints","sanitizeGlobal","config","global","richTextSanitizationPromises","_validRelationships","_sanitized","label","slug","endpoints","hooks","access","admin","read","update","beforeValidate","beforeChange","afterChange","beforeRead","afterRead","validRelationships","collections","map","c","fields","globalConfig","parentIsLocalized","endpoint","push","versions","drafts","max","autosave","validate","hasLocalizedFields","localization","localizeStatus","undefined","experimental","interval","autosaveInterval","localized","custom","hasUpdatedAt","hasCreatedAt","some","field","name","type","disabled","bulkEdit","hidden","t","flattenedFields"],"mappings":"AAGA,SAASA,aAAa,QAAQ,8BAA6B;AAC3D,SAASC,cAAc,QAAQ,kCAAiC;AAChE,SAASC,gBAAgB,QAAQ,+BAA8B;AAC/D,SAASC,eAAe,QAAQ,kCAAiC;AACjE,SAASC,gBAAgB,QAAQ,sCAAqC;AACtE,SAASC,OAAO,QAAQ,kCAAiC;AACzD,SAASC,0BAA0B,QAAQ,gDAA+C;AAC1F,SAASC,iBAAiB,QAAQ,+BAA8B;AAChE,SAASC,eAAe,QAAQ,6BAA4B;AAC5D,SAASC,sBAAsB,QAAQ,wBAAuB;AAC9D,OAAO,MAAMC,iBAAiB,OAC5BC,QACAC,QACA;;;GAGC,GACDC,8BACAC;IAEA,IAAIF,OAAOG,UAAU,EAAE;QACrB,OAAOH;IACT;IAEAA,OAAOG,UAAU,GAAG;IAEpBH,OAAOI,KAAK,GAAGJ,OAAOI,KAAK,IAAIX,QAAQO,OAAOK,IAAI;IAElD,oCAAoC;IACpC,uDAAuD;IACvD,oCAAoC;IAEpCL,OAAOM,SAAS,GAAGN,OAAOM,SAAS,IAAI,EAAE;IAEzC,IAAI,CAACN,OAAOO,KAAK,EAAE;QACjBP,OAAOO,KAAK,GAAG,CAAC;IAClB;IAEA,IAAI,CAACP,OAAOQ,MAAM,EAAE;QAClBR,OAAOQ,MAAM,GAAG,CAAC;IACnB;IAEA,IAAI,CAACR,OAAOS,KAAK,EAAE;QACjBT,OAAOS,KAAK,GAAG,CAAC;IAClB;IAEA,IAAI,CAACT,OAAOQ,MAAM,CAACE,IAAI,EAAE;QACvBV,OAAOQ,MAAM,CAACE,IAAI,GAAGtB;IACvB;IAEA,IAAI,CAACY,OAAOQ,MAAM,CAACG,MAAM,EAAE;QACzBX,OAAOQ,MAAM,CAACG,MAAM,GAAGvB;IACzB;IAEA,IAAI,CAACY,OAAOO,KAAK,CAACK,cAAc,EAAE;QAChCZ,OAAOO,KAAK,CAACK,cAAc,GAAG,EAAE;IAClC;IAEA,IAAI,CAACZ,OAAOO,KAAK,CAACM,YAAY,EAAE;QAC9Bb,OAAOO,KAAK,CAACM,YAAY,GAAG,EAAE;IAChC;IAEA,IAAI,CAACb,OAAOO,KAAK,CAACO,WAAW,EAAE;QAC7Bd,OAAOO,KAAK,CAACO,WAAW,GAAG,EAAE;IAC/B;IAEA,IAAI,CAACd,OAAOO,KAAK,CAACQ,UAAU,EAAE;QAC5Bf,OAAOO,KAAK,CAACQ,UAAU,GAAG,EAAE;IAC9B;IAEA,IAAI,CAACf,OAAOO,KAAK,CAACS,SAAS,EAAE;QAC3BhB,OAAOO,KAAK,CAACS,SAAS,GAAG,EAAE;IAC7B;IAEA,kBAAkB;IAClB,MAAMC,qBAAqBf,uBAAuBH,OAAOmB,WAAW,EAAEC,IAAI,CAACC,IAAMA,EAAEf,IAAI,KAAK,EAAE;IAE9FL,OAAOqB,MAAM,GAAG,MAAMhC,eAAe;QACnCU;QACAsB,QAAQrB,OAAOqB,MAAM;QACrBC,cAActB;QACduB,mBAAmB;QACnBtB;QACAgB;IACF;IAEA,IAAIjB,OAAOM,SAAS,KAAK,OAAO;QAC9B,IAAI,CAACN,OAAOM,SAAS,EAAE;YACrBN,OAAOM,SAAS,GAAG,EAAE;QACvB;QAEA,KAAK,MAAMkB,YAAY3B,uBAAwB;YAC7CG,OAAOM,SAAS,CAACmB,IAAI,CAACD;QACxB;IACF;IAEA,IAAIxB,OAAO0B,QAAQ,EAAE;QACnB,IAAI1B,OAAO0B,QAAQ,KAAK,MAAM;YAC5B1B,OAAO0B,QAAQ,GAAG;gBAChBC,QAAQ;gBACRC,KAAK;YACP;QACF;QAEA5B,OAAO0B,QAAQ,CAACE,GAAG,GAAG,OAAO5B,OAAO0B,QAAQ,CAACE,GAAG,KAAK,WAAW5B,OAAO0B,QAAQ,CAACE,GAAG,GAAG;QAEtF,IAAI5B,OAAO0B,QAAQ,CAACC,MAAM,EAAE;YAC1B,IAAI3B,OAAO0B,QAAQ,CAACC,MAAM,KAAK,MAAM;gBACnC3B,OAAO0B,QAAQ,CAACC,MAAM,GAAG;oBACvBE,UAAU;oBACVC,UAAU;gBACZ;YACF;YAEA,MAAMC,qBAAqBrC,2BAA2BM,OAAOqB,MAAM;YAEnE,IAAItB,OAAOiC,YAAY,IAAID,oBAAoB;gBAC7C,IAAI/B,OAAO0B,QAAQ,CAACC,MAAM,CAACM,cAAc,KAAKC,WAAW;oBACvDlC,OAAO0B,QAAQ,CAACC,MAAM,CAACM,cAAc,GAAG;gBAC1C;YACF;YAEAjC,OAAO0B,QAAQ,CAACC,MAAM,CAACM,cAAc,GAAGlC,OAAOoC,YAAY,EAAEF,iBACzDjC,OAAO0B,QAAQ,CAACC,MAAM,CAACM,cAAc,GACrC;YAEJ,IAAIjC,OAAO0B,QAAQ,CAACC,MAAM,CAACE,QAAQ,KAAK,MAAM;gBAC5C7B,OAAO0B,QAAQ,CAACC,MAAM,CAACE,QAAQ,GAAG;oBAChCO,UAAUxC,gBAAgByC,gBAAgB;gBAC5C;YACF;YAEA,IAAIrC,OAAO0B,QAAQ,CAACC,MAAM,CAACG,QAAQ,KAAKI,WAAW;gBACjDlC,OAAO0B,QAAQ,CAACC,MAAM,CAACG,QAAQ,GAAG;YACpC;YAEA9B,OAAOqB,MAAM,GAAG9B,gBACdS,OAAOqB,MAAM,EACb1B,kBAAkB;gBAChB2C,WAAWtC,OAAO0B,QAAQ,CAACC,MAAM,CAACM,cAAc,IAAI;YACtD;QAEJ;IACF;IAEA,IAAI,CAACjC,OAAOuC,MAAM,EAAE;QAClBvC,OAAOuC,MAAM,GAAG,CAAC;IACnB;IAEA,oCAAoC;IACpC,kBAAkB;IAClB,oCAAoC;IACpC,IAAIC,eAA+B;IACnC,IAAIC,eAA+B;IACnCzC,OAAOqB,MAAM,CAACqB,IAAI,CAAC,CAACC;QAClB,IAAIrD,iBAAiBqD,QAAQ;YAC3B,IAAIA,MAAMC,IAAI,KAAK,aAAa;gBAC9BJ,eAAe;YACjB;YACA,IAAIG,MAAMC,IAAI,KAAK,aAAa;gBAC9BH,eAAe;YACjB;QACF;QACA,OAAOA,gBAAgBD;IACzB;IACA,IAAI,CAACA,cAAc;QACjBxC,OAAOqB,MAAM,CAACI,IAAI,CAAC;YACjBmB,MAAM;YACNC,MAAM;YACNpC,OAAO;gBACLqC,UAAU;oBAAEC,UAAU;gBAAK;gBAC3BC,QAAQ;YACV;YACA5C,OAAO,CAAC,EAAE6C,CAAC,EAAE,GAAKA,EAAE;QACtB;IACF;IACA,IAAI,CAACR,cAAc;QACjBzC,OAAOqB,MAAM,CAACI,IAAI,CAAC;YACjBmB,MAAM;YACNC,MAAM;YACNpC,OAAO;gBACLqC,UAAU;oBAAEC,UAAU;gBAAK;gBAC3BC,QAAQ;YACV;YACA5C,OAAO,CAAC,EAAE6C,CAAC,EAAE,GAAKA,EAAE;QACtB;IACF;;IAEEjD,OAAiCkD,eAAe,GAAG1D,iBAAiB;QAAE6B,QAAQrB,OAAOqB,MAAM;IAAC;IAE9F,OAAOrB;AACT,EAAC"}
1
+ {"version":3,"sources":["../../../src/globals/config/sanitize.ts"],"sourcesContent":["import type { Config, SanitizedConfig } from '../../config/types.js'\nimport type { SanitizedDrafts } from '../../versions/types.js'\nimport type { GlobalConfig, SanitizedGlobalConfig } from './types.js'\n\nimport { defaultAccess } from '../../auth/defaultAccess.js'\nimport { sanitizeFields } from '../../fields/config/sanitize.js'\nimport { fieldAffectsData } from '../../fields/config/types.js'\nimport { mergeBaseFields } from '../../fields/mergeBaseFields.js'\nimport { flattenAllFields } from '../../utilities/flattenAllFields.js'\nimport { toWords } from '../../utilities/formatLabels.js'\nimport { traverseForLocalizedFields } from '../../utilities/traverseForLocalizedFields.js'\nimport { baseVersionFields } from '../../versions/baseFields.js'\nimport { versionDefaults } from '../../versions/defaults.js'\nimport { defaultGlobalEndpoints } from '../endpoints/index.js'\nexport const sanitizeGlobal = async (\n config: Config,\n global: GlobalConfig,\n /**\n * If this property is set, RichText fields won't be sanitized immediately. Instead, they will be added to this array as promises\n * so that you can sanitize them together, after the config has been sanitized.\n */\n richTextSanitizationPromises?: Array<(config: SanitizedConfig) => Promise<void>>,\n _validRelationships?: string[],\n): Promise<SanitizedGlobalConfig> => {\n if (global._sanitized) {\n return global as SanitizedGlobalConfig\n }\n\n global._sanitized = true\n\n global.label = global.label || toWords(global.slug)\n\n // /////////////////////////////////\n // Ensure that collection has required object structure\n // /////////////////////////////////\n\n global.endpoints = global.endpoints ?? []\n\n if (!global.hooks) {\n global.hooks = {}\n }\n\n if (!global.access) {\n global.access = {}\n }\n\n if (!global.admin) {\n global.admin = {}\n }\n\n if (!global.access.read) {\n global.access.read = defaultAccess\n }\n\n if (!global.access.update) {\n global.access.update = defaultAccess\n }\n\n if (!global.hooks.beforeValidate) {\n global.hooks.beforeValidate = []\n }\n\n if (!global.hooks.beforeChange) {\n global.hooks.beforeChange = []\n }\n\n if (!global.hooks.afterChange) {\n global.hooks.afterChange = []\n }\n\n if (!global.hooks.beforeRead) {\n global.hooks.beforeRead = []\n }\n\n if (!global.hooks.afterRead) {\n global.hooks.afterRead = []\n }\n\n // Sanitize fields\n const validRelationships = _validRelationships ?? config.collections?.map((c) => c.slug) ?? []\n\n global.fields = await sanitizeFields({\n config,\n fields: global.fields,\n globalConfig: global,\n parentIsLocalized: false,\n richTextSanitizationPromises,\n validRelationships,\n })\n\n if (global.endpoints !== false) {\n if (!global.endpoints) {\n global.endpoints = []\n }\n\n for (const endpoint of defaultGlobalEndpoints) {\n global.endpoints.push(endpoint)\n }\n }\n\n global.versions = global.versions ?? true\n\n if (global.versions) {\n if (global.versions === true) {\n global.versions = {\n drafts: false,\n max: 100,\n }\n }\n\n global.versions.max = typeof global.versions.max === 'number' ? global.versions.max : 100\n\n if (global.versions.drafts) {\n if (global.versions.drafts === true) {\n global.versions.drafts = {\n autosave: false,\n validate: false,\n }\n }\n\n const hasLocalizedFields = traverseForLocalizedFields(global.fields)\n\n // Auto-enable per-locale status when localization is configured and the global has localized fields.\n ;(global.versions.drafts as SanitizedDrafts).localizeStatus = !!(\n config.localization && hasLocalizedFields\n )\n\n if (global.versions.drafts.autosave === true) {\n global.versions.drafts.autosave = {\n interval: versionDefaults.autosaveInterval,\n }\n }\n\n if (global.versions.drafts.validate === undefined) {\n global.versions.drafts.validate = false\n }\n\n global.fields = mergeBaseFields(\n global.fields,\n baseVersionFields({\n localized: (global.versions.drafts as SanitizedDrafts).localizeStatus ?? false,\n }),\n )\n }\n }\n\n if (!global.custom) {\n global.custom = {}\n }\n\n // /////////////////////////////////\n // Sanitize fields\n // /////////////////////////////////\n let hasUpdatedAt: boolean | null = null\n let hasCreatedAt: boolean | null = null\n global.fields.some((field) => {\n if (fieldAffectsData(field)) {\n if (field.name === 'updatedAt') {\n hasUpdatedAt = true\n }\n if (field.name === 'createdAt') {\n hasCreatedAt = true\n }\n }\n return hasCreatedAt && hasUpdatedAt\n })\n if (!hasUpdatedAt) {\n global.fields.push({\n name: 'updatedAt',\n type: 'date',\n admin: {\n disabled: { bulkEdit: true },\n hidden: true,\n },\n label: ({ t }) => t('general:updatedAt'),\n })\n }\n if (!hasCreatedAt) {\n global.fields.push({\n name: 'createdAt',\n type: 'date',\n admin: {\n disabled: { bulkEdit: true },\n hidden: true,\n },\n label: ({ t }) => t('general:createdAt'),\n })\n }\n\n ;(global as SanitizedGlobalConfig).flattenedFields = flattenAllFields({ fields: global.fields })\n\n return global as SanitizedGlobalConfig\n}\n"],"names":["defaultAccess","sanitizeFields","fieldAffectsData","mergeBaseFields","flattenAllFields","toWords","traverseForLocalizedFields","baseVersionFields","versionDefaults","defaultGlobalEndpoints","sanitizeGlobal","config","global","richTextSanitizationPromises","_validRelationships","_sanitized","label","slug","endpoints","hooks","access","admin","read","update","beforeValidate","beforeChange","afterChange","beforeRead","afterRead","validRelationships","collections","map","c","fields","globalConfig","parentIsLocalized","endpoint","push","versions","drafts","max","autosave","validate","hasLocalizedFields","localizeStatus","localization","interval","autosaveInterval","undefined","localized","custom","hasUpdatedAt","hasCreatedAt","some","field","name","type","disabled","bulkEdit","hidden","t","flattenedFields"],"mappings":"AAIA,SAASA,aAAa,QAAQ,8BAA6B;AAC3D,SAASC,cAAc,QAAQ,kCAAiC;AAChE,SAASC,gBAAgB,QAAQ,+BAA8B;AAC/D,SAASC,eAAe,QAAQ,kCAAiC;AACjE,SAASC,gBAAgB,QAAQ,sCAAqC;AACtE,SAASC,OAAO,QAAQ,kCAAiC;AACzD,SAASC,0BAA0B,QAAQ,gDAA+C;AAC1F,SAASC,iBAAiB,QAAQ,+BAA8B;AAChE,SAASC,eAAe,QAAQ,6BAA4B;AAC5D,SAASC,sBAAsB,QAAQ,wBAAuB;AAC9D,OAAO,MAAMC,iBAAiB,OAC5BC,QACAC,QACA;;;GAGC,GACDC,8BACAC;IAEA,IAAIF,OAAOG,UAAU,EAAE;QACrB,OAAOH;IACT;IAEAA,OAAOG,UAAU,GAAG;IAEpBH,OAAOI,KAAK,GAAGJ,OAAOI,KAAK,IAAIX,QAAQO,OAAOK,IAAI;IAElD,oCAAoC;IACpC,uDAAuD;IACvD,oCAAoC;IAEpCL,OAAOM,SAAS,GAAGN,OAAOM,SAAS,IAAI,EAAE;IAEzC,IAAI,CAACN,OAAOO,KAAK,EAAE;QACjBP,OAAOO,KAAK,GAAG,CAAC;IAClB;IAEA,IAAI,CAACP,OAAOQ,MAAM,EAAE;QAClBR,OAAOQ,MAAM,GAAG,CAAC;IACnB;IAEA,IAAI,CAACR,OAAOS,KAAK,EAAE;QACjBT,OAAOS,KAAK,GAAG,CAAC;IAClB;IAEA,IAAI,CAACT,OAAOQ,MAAM,CAACE,IAAI,EAAE;QACvBV,OAAOQ,MAAM,CAACE,IAAI,GAAGtB;IACvB;IAEA,IAAI,CAACY,OAAOQ,MAAM,CAACG,MAAM,EAAE;QACzBX,OAAOQ,MAAM,CAACG,MAAM,GAAGvB;IACzB;IAEA,IAAI,CAACY,OAAOO,KAAK,CAACK,cAAc,EAAE;QAChCZ,OAAOO,KAAK,CAACK,cAAc,GAAG,EAAE;IAClC;IAEA,IAAI,CAACZ,OAAOO,KAAK,CAACM,YAAY,EAAE;QAC9Bb,OAAOO,KAAK,CAACM,YAAY,GAAG,EAAE;IAChC;IAEA,IAAI,CAACb,OAAOO,KAAK,CAACO,WAAW,EAAE;QAC7Bd,OAAOO,KAAK,CAACO,WAAW,GAAG,EAAE;IAC/B;IAEA,IAAI,CAACd,OAAOO,KAAK,CAACQ,UAAU,EAAE;QAC5Bf,OAAOO,KAAK,CAACQ,UAAU,GAAG,EAAE;IAC9B;IAEA,IAAI,CAACf,OAAOO,KAAK,CAACS,SAAS,EAAE;QAC3BhB,OAAOO,KAAK,CAACS,SAAS,GAAG,EAAE;IAC7B;IAEA,kBAAkB;IAClB,MAAMC,qBAAqBf,uBAAuBH,OAAOmB,WAAW,EAAEC,IAAI,CAACC,IAAMA,EAAEf,IAAI,KAAK,EAAE;IAE9FL,OAAOqB,MAAM,GAAG,MAAMhC,eAAe;QACnCU;QACAsB,QAAQrB,OAAOqB,MAAM;QACrBC,cAActB;QACduB,mBAAmB;QACnBtB;QACAgB;IACF;IAEA,IAAIjB,OAAOM,SAAS,KAAK,OAAO;QAC9B,IAAI,CAACN,OAAOM,SAAS,EAAE;YACrBN,OAAOM,SAAS,GAAG,EAAE;QACvB;QAEA,KAAK,MAAMkB,YAAY3B,uBAAwB;YAC7CG,OAAOM,SAAS,CAACmB,IAAI,CAACD;QACxB;IACF;IAEAxB,OAAO0B,QAAQ,GAAG1B,OAAO0B,QAAQ,IAAI;IAErC,IAAI1B,OAAO0B,QAAQ,EAAE;QACnB,IAAI1B,OAAO0B,QAAQ,KAAK,MAAM;YAC5B1B,OAAO0B,QAAQ,GAAG;gBAChBC,QAAQ;gBACRC,KAAK;YACP;QACF;QAEA5B,OAAO0B,QAAQ,CAACE,GAAG,GAAG,OAAO5B,OAAO0B,QAAQ,CAACE,GAAG,KAAK,WAAW5B,OAAO0B,QAAQ,CAACE,GAAG,GAAG;QAEtF,IAAI5B,OAAO0B,QAAQ,CAACC,MAAM,EAAE;YAC1B,IAAI3B,OAAO0B,QAAQ,CAACC,MAAM,KAAK,MAAM;gBACnC3B,OAAO0B,QAAQ,CAACC,MAAM,GAAG;oBACvBE,UAAU;oBACVC,UAAU;gBACZ;YACF;YAEA,MAAMC,qBAAqBrC,2BAA2BM,OAAOqB,MAAM;YAGjErB,OAAO0B,QAAQ,CAACC,MAAM,CAAqBK,cAAc,GAAG,CAAC,CAC7DjC,CAAAA,OAAOkC,YAAY,IAAIF,kBAAiB;YAG1C,IAAI/B,OAAO0B,QAAQ,CAACC,MAAM,CAACE,QAAQ,KAAK,MAAM;gBAC5C7B,OAAO0B,QAAQ,CAACC,MAAM,CAACE,QAAQ,GAAG;oBAChCK,UAAUtC,gBAAgBuC,gBAAgB;gBAC5C;YACF;YAEA,IAAInC,OAAO0B,QAAQ,CAACC,MAAM,CAACG,QAAQ,KAAKM,WAAW;gBACjDpC,OAAO0B,QAAQ,CAACC,MAAM,CAACG,QAAQ,GAAG;YACpC;YAEA9B,OAAOqB,MAAM,GAAG9B,gBACdS,OAAOqB,MAAM,EACb1B,kBAAkB;gBAChB0C,WAAW,AAACrC,OAAO0B,QAAQ,CAACC,MAAM,CAAqBK,cAAc,IAAI;YAC3E;QAEJ;IACF;IAEA,IAAI,CAAChC,OAAOsC,MAAM,EAAE;QAClBtC,OAAOsC,MAAM,GAAG,CAAC;IACnB;IAEA,oCAAoC;IACpC,kBAAkB;IAClB,oCAAoC;IACpC,IAAIC,eAA+B;IACnC,IAAIC,eAA+B;IACnCxC,OAAOqB,MAAM,CAACoB,IAAI,CAAC,CAACC;QAClB,IAAIpD,iBAAiBoD,QAAQ;YAC3B,IAAIA,MAAMC,IAAI,KAAK,aAAa;gBAC9BJ,eAAe;YACjB;YACA,IAAIG,MAAMC,IAAI,KAAK,aAAa;gBAC9BH,eAAe;YACjB;QACF;QACA,OAAOA,gBAAgBD;IACzB;IACA,IAAI,CAACA,cAAc;QACjBvC,OAAOqB,MAAM,CAACI,IAAI,CAAC;YACjBkB,MAAM;YACNC,MAAM;YACNnC,OAAO;gBACLoC,UAAU;oBAAEC,UAAU;gBAAK;gBAC3BC,QAAQ;YACV;YACA3C,OAAO,CAAC,EAAE4C,CAAC,EAAE,GAAKA,EAAE;QACtB;IACF;IACA,IAAI,CAACR,cAAc;QACjBxC,OAAOqB,MAAM,CAACI,IAAI,CAAC;YACjBkB,MAAM;YACNC,MAAM;YACNnC,OAAO;gBACLoC,UAAU;oBAAEC,UAAU;gBAAK;gBAC3BC,QAAQ;YACV;YACA3C,OAAO,CAAC,EAAE4C,CAAC,EAAE,GAAKA,EAAE;QACtB;IACF;;IAEEhD,OAAiCiD,eAAe,GAAGzD,iBAAiB;QAAE6B,QAAQrB,OAAOqB,MAAM;IAAC;IAE9F,OAAOrB;AACT,EAAC"}
@@ -0,0 +1,43 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { sanitizeGlobal } from './sanitize.js';
3
+ const minimalConfig = {
4
+ collections: [],
5
+ globals: []
6
+ };
7
+ describe('sanitizeGlobal — versions default', ()=>{
8
+ it('should default versions to true when not specified', async ()=>{
9
+ const global = {
10
+ slug: 'header',
11
+ fields: []
12
+ };
13
+ const result = await sanitizeGlobal(minimalConfig, global);
14
+ expect(result.versions).toEqual({
15
+ drafts: false,
16
+ max: 100
17
+ });
18
+ });
19
+ it('should preserve explicit versions: false', async ()=>{
20
+ const global = {
21
+ slug: 'header',
22
+ fields: [],
23
+ versions: false
24
+ };
25
+ const result = await sanitizeGlobal(minimalConfig, global);
26
+ expect(result.versions).toBe(false);
27
+ });
28
+ it('should preserve explicit versions object config', async ()=>{
29
+ const global = {
30
+ slug: 'header',
31
+ fields: [],
32
+ versions: {
33
+ drafts: true,
34
+ max: 50
35
+ }
36
+ };
37
+ const result = await sanitizeGlobal(minimalConfig, global);
38
+ expect(result.versions.max).toBe(50);
39
+ expect(result.versions.drafts).toBeTruthy();
40
+ });
41
+ });
42
+
43
+ //# sourceMappingURL=sanitize.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/globals/config/sanitize.spec.ts"],"sourcesContent":["import type { GlobalConfig } from './types.js'\n\nimport { describe, expect, it } from 'vitest'\n\nimport { sanitizeGlobal } from './sanitize.js'\n\nconst minimalConfig = {\n collections: [],\n globals: [],\n} as any\n\ndescribe('sanitizeGlobal — versions default', () => {\n it('should default versions to true when not specified', async () => {\n const global: GlobalConfig = {\n slug: 'header',\n fields: [],\n }\n\n const result = await sanitizeGlobal(minimalConfig, global)\n\n expect(result.versions).toEqual({ drafts: false, max: 100 })\n })\n\n it('should preserve explicit versions: false', async () => {\n const global: GlobalConfig = {\n slug: 'header',\n fields: [],\n versions: false,\n }\n\n const result = await sanitizeGlobal(minimalConfig, global)\n\n expect(result.versions).toBe(false)\n })\n\n it('should preserve explicit versions object config', async () => {\n const global: GlobalConfig = {\n slug: 'header',\n fields: [],\n versions: { drafts: true, max: 50 },\n }\n\n const result = await sanitizeGlobal(minimalConfig, global)\n\n expect((result.versions as any).max).toBe(50)\n expect((result.versions as any).drafts).toBeTruthy()\n })\n})\n"],"names":["describe","expect","it","sanitizeGlobal","minimalConfig","collections","globals","global","slug","fields","result","versions","toEqual","drafts","max","toBe","toBeTruthy"],"mappings":"AAEA,SAASA,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,SAAQ;AAE7C,SAASC,cAAc,QAAQ,gBAAe;AAE9C,MAAMC,gBAAgB;IACpBC,aAAa,EAAE;IACfC,SAAS,EAAE;AACb;AAEAN,SAAS,qCAAqC;IAC5CE,GAAG,sDAAsD;QACvD,MAAMK,SAAuB;YAC3BC,MAAM;YACNC,QAAQ,EAAE;QACZ;QAEA,MAAMC,SAAS,MAAMP,eAAeC,eAAeG;QAEnDN,OAAOS,OAAOC,QAAQ,EAAEC,OAAO,CAAC;YAAEC,QAAQ;YAAOC,KAAK;QAAI;IAC5D;IAEAZ,GAAG,4CAA4C;QAC7C,MAAMK,SAAuB;YAC3BC,MAAM;YACNC,QAAQ,EAAE;YACVE,UAAU;QACZ;QAEA,MAAMD,SAAS,MAAMP,eAAeC,eAAeG;QAEnDN,OAAOS,OAAOC,QAAQ,EAAEI,IAAI,CAAC;IAC/B;IAEAb,GAAG,mDAAmD;QACpD,MAAMK,SAAuB;YAC3BC,MAAM;YACNC,QAAQ,EAAE;YACVE,UAAU;gBAAEE,QAAQ;gBAAMC,KAAK;YAAG;QACpC;QAEA,MAAMJ,SAAS,MAAMP,eAAeC,eAAeG;QAEnDN,OAAO,AAACS,OAAOC,QAAQ,CAASG,GAAG,EAAEC,IAAI,CAAC;QAC1Cd,OAAO,AAACS,OAAOC,QAAQ,CAASE,MAAM,EAAEG,UAAU;IACpD;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/globals/endpoints/update.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAS3D,eAAO,MAAM,aAAa,EAAE,cA+C3B,CAAA"}
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/globals/endpoints/update.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAS3D,eAAO,MAAM,aAAa,EAAE,cA6C3B,CAAA"}
@@ -11,7 +11,6 @@ export const updateHandler = async (req)=>{
11
11
  const depth = searchParams.get('depth');
12
12
  const draft = searchParams.get('draft') === 'true';
13
13
  const autosave = searchParams.get('autosave') === 'true';
14
- const publishSpecificLocale = req.query.publishSpecificLocale;
15
14
  const publishAllLocales = searchParams.get('publishAllLocales') === 'true';
16
15
  const unpublishAllLocales = searchParams.get('unpublishAllLocales') === 'true';
17
16
  const result = await updateOperation({
@@ -23,7 +22,6 @@ export const updateHandler = async (req)=>{
23
22
  globalConfig,
24
23
  populate: sanitizePopulateParam(req.query.populate),
25
24
  publishAllLocales,
26
- publishSpecificLocale,
27
25
  req,
28
26
  select: sanitizeSelectParam(req.query.select),
29
27
  unpublishAllLocales
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/globals/endpoints/update.ts"],"sourcesContent":["import { status as httpStatus } from 'http-status'\n\nimport type { PayloadHandler } from '../../config/types.js'\n\nimport { getRequestGlobal } from '../../utilities/getRequestEntity.js'\nimport { headersWithCors } from '../../utilities/headersWithCors.js'\nimport { isNumber } from '../../utilities/isNumber.js'\nimport { sanitizePopulateParam } from '../../utilities/sanitizePopulateParam.js'\nimport { sanitizeSelectParam } from '../../utilities/sanitizeSelectParam.js'\nimport { updateOperation } from '../operations/update.js'\n\nexport const updateHandler: PayloadHandler = async (req) => {\n const globalConfig = getRequestGlobal(req)\n const { searchParams } = req\n const depth = searchParams.get('depth')\n const draft = searchParams.get('draft') === 'true'\n const autosave = searchParams.get('autosave') === 'true'\n const publishSpecificLocale = req.query.publishSpecificLocale as string | undefined\n const publishAllLocales = searchParams.get('publishAllLocales') === 'true'\n const unpublishAllLocales = searchParams.get('unpublishAllLocales') === 'true'\n\n const result = await updateOperation({\n slug: globalConfig.slug,\n autosave,\n data: req.data!,\n depth: isNumber(depth) ? Number(depth) : undefined,\n draft,\n globalConfig,\n populate: sanitizePopulateParam(req.query.populate),\n publishAllLocales,\n publishSpecificLocale,\n req,\n select: sanitizeSelectParam(req.query.select),\n unpublishAllLocales,\n })\n\n let message = req.t('general:updatedSuccessfully')\n\n if (draft) {\n message = req.t('version:draftSavedSuccessfully')\n }\n if (autosave) {\n message = req.t('version:autosavedSuccessfully')\n }\n\n return Response.json(\n {\n message,\n result,\n },\n {\n headers: headersWithCors({\n headers: new Headers(),\n req,\n }),\n status: httpStatus.OK,\n },\n )\n}\n"],"names":["status","httpStatus","getRequestGlobal","headersWithCors","isNumber","sanitizePopulateParam","sanitizeSelectParam","updateOperation","updateHandler","req","globalConfig","searchParams","depth","get","draft","autosave","publishSpecificLocale","query","publishAllLocales","unpublishAllLocales","result","slug","data","Number","undefined","populate","select","message","t","Response","json","headers","Headers","OK"],"mappings":"AAAA,SAASA,UAAUC,UAAU,QAAQ,cAAa;AAIlD,SAASC,gBAAgB,QAAQ,sCAAqC;AACtE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,QAAQ,QAAQ,8BAA6B;AACtD,SAASC,qBAAqB,QAAQ,2CAA0C;AAChF,SAASC,mBAAmB,QAAQ,yCAAwC;AAC5E,SAASC,eAAe,QAAQ,0BAAyB;AAEzD,OAAO,MAAMC,gBAAgC,OAAOC;IAClD,MAAMC,eAAeR,iBAAiBO;IACtC,MAAM,EAAEE,YAAY,EAAE,GAAGF;IACzB,MAAMG,QAAQD,aAAaE,GAAG,CAAC;IAC/B,MAAMC,QAAQH,aAAaE,GAAG,CAAC,aAAa;IAC5C,MAAME,WAAWJ,aAAaE,GAAG,CAAC,gBAAgB;IAClD,MAAMG,wBAAwBP,IAAIQ,KAAK,CAACD,qBAAqB;IAC7D,MAAME,oBAAoBP,aAAaE,GAAG,CAAC,yBAAyB;IACpE,MAAMM,sBAAsBR,aAAaE,GAAG,CAAC,2BAA2B;IAExE,MAAMO,SAAS,MAAMb,gBAAgB;QACnCc,MAAMX,aAAaW,IAAI;QACvBN;QACAO,MAAMb,IAAIa,IAAI;QACdV,OAAOR,SAASQ,SAASW,OAAOX,SAASY;QACzCV;QACAJ;QACAe,UAAUpB,sBAAsBI,IAAIQ,KAAK,CAACQ,QAAQ;QAClDP;QACAF;QACAP;QACAiB,QAAQpB,oBAAoBG,IAAIQ,KAAK,CAACS,MAAM;QAC5CP;IACF;IAEA,IAAIQ,UAAUlB,IAAImB,CAAC,CAAC;IAEpB,IAAId,OAAO;QACTa,UAAUlB,IAAImB,CAAC,CAAC;IAClB;IACA,IAAIb,UAAU;QACZY,UAAUlB,IAAImB,CAAC,CAAC;IAClB;IAEA,OAAOC,SAASC,IAAI,CAClB;QACEH;QACAP;IACF,GACA;QACEW,SAAS5B,gBAAgB;YACvB4B,SAAS,IAAIC;YACbvB;QACF;QACAT,QAAQC,WAAWgC,EAAE;IACvB;AAEJ,EAAC"}
1
+ {"version":3,"sources":["../../../src/globals/endpoints/update.ts"],"sourcesContent":["import { status as httpStatus } from 'http-status'\n\nimport type { PayloadHandler } from '../../config/types.js'\n\nimport { getRequestGlobal } from '../../utilities/getRequestEntity.js'\nimport { headersWithCors } from '../../utilities/headersWithCors.js'\nimport { isNumber } from '../../utilities/isNumber.js'\nimport { sanitizePopulateParam } from '../../utilities/sanitizePopulateParam.js'\nimport { sanitizeSelectParam } from '../../utilities/sanitizeSelectParam.js'\nimport { updateOperation } from '../operations/update.js'\n\nexport const updateHandler: PayloadHandler = async (req) => {\n const globalConfig = getRequestGlobal(req)\n const { searchParams } = req\n const depth = searchParams.get('depth')\n const draft = searchParams.get('draft') === 'true'\n const autosave = searchParams.get('autosave') === 'true'\n const publishAllLocales = searchParams.get('publishAllLocales') === 'true'\n const unpublishAllLocales = searchParams.get('unpublishAllLocales') === 'true'\n\n const result = await updateOperation({\n slug: globalConfig.slug,\n autosave,\n data: req.data!,\n depth: isNumber(depth) ? Number(depth) : undefined,\n draft,\n globalConfig,\n populate: sanitizePopulateParam(req.query.populate),\n publishAllLocales,\n req,\n select: sanitizeSelectParam(req.query.select),\n unpublishAllLocales,\n })\n\n let message = req.t('general:updatedSuccessfully')\n\n if (draft) {\n message = req.t('version:draftSavedSuccessfully')\n }\n if (autosave) {\n message = req.t('version:autosavedSuccessfully')\n }\n\n return Response.json(\n {\n message,\n result,\n },\n {\n headers: headersWithCors({\n headers: new Headers(),\n req,\n }),\n status: httpStatus.OK,\n },\n )\n}\n"],"names":["status","httpStatus","getRequestGlobal","headersWithCors","isNumber","sanitizePopulateParam","sanitizeSelectParam","updateOperation","updateHandler","req","globalConfig","searchParams","depth","get","draft","autosave","publishAllLocales","unpublishAllLocales","result","slug","data","Number","undefined","populate","query","select","message","t","Response","json","headers","Headers","OK"],"mappings":"AAAA,SAASA,UAAUC,UAAU,QAAQ,cAAa;AAIlD,SAASC,gBAAgB,QAAQ,sCAAqC;AACtE,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,QAAQ,QAAQ,8BAA6B;AACtD,SAASC,qBAAqB,QAAQ,2CAA0C;AAChF,SAASC,mBAAmB,QAAQ,yCAAwC;AAC5E,SAASC,eAAe,QAAQ,0BAAyB;AAEzD,OAAO,MAAMC,gBAAgC,OAAOC;IAClD,MAAMC,eAAeR,iBAAiBO;IACtC,MAAM,EAAEE,YAAY,EAAE,GAAGF;IACzB,MAAMG,QAAQD,aAAaE,GAAG,CAAC;IAC/B,MAAMC,QAAQH,aAAaE,GAAG,CAAC,aAAa;IAC5C,MAAME,WAAWJ,aAAaE,GAAG,CAAC,gBAAgB;IAClD,MAAMG,oBAAoBL,aAAaE,GAAG,CAAC,yBAAyB;IACpE,MAAMI,sBAAsBN,aAAaE,GAAG,CAAC,2BAA2B;IAExE,MAAMK,SAAS,MAAMX,gBAAgB;QACnCY,MAAMT,aAAaS,IAAI;QACvBJ;QACAK,MAAMX,IAAIW,IAAI;QACdR,OAAOR,SAASQ,SAASS,OAAOT,SAASU;QACzCR;QACAJ;QACAa,UAAUlB,sBAAsBI,IAAIe,KAAK,CAACD,QAAQ;QAClDP;QACAP;QACAgB,QAAQnB,oBAAoBG,IAAIe,KAAK,CAACC,MAAM;QAC5CR;IACF;IAEA,IAAIS,UAAUjB,IAAIkB,CAAC,CAAC;IAEpB,IAAIb,OAAO;QACTY,UAAUjB,IAAIkB,CAAC,CAAC;IAClB;IACA,IAAIZ,UAAU;QACZW,UAAUjB,IAAIkB,CAAC,CAAC;IAClB;IAEA,OAAOC,SAASC,IAAI,CAClB;QACEH;QACAR;IACF,GACA;QACEY,SAAS3B,gBAAgB;YACvB2B,SAAS,IAAIC;YACbtB;QACF;QACAT,QAAQC,WAAW+B,EAAE;IACvB;AAEJ,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"countGlobalVersions.d.ts","sourceRoot":"","sources":["../../../src/globals/operations/countGlobalVersions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAKjE,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,qBAAqB,EAC3B,MAAM,gBAAgB,CAAA;AAGvB,MAAM,MAAM,SAAS,GAAG;IACtB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,MAAM,EAAE,qBAAqB,CAAA;IAC7B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,GAAG,CAAC,EAAE,cAAc,CAAA;IACpB,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,CAAA;AAGD,eAAO,MAAM,4BAA4B,GAAU,KAAK,SAAS,UAAU,EACzE,MAAM,SAAS,KACd,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAoE/B,CAAA"}
1
+ {"version":3,"file":"countGlobalVersions.d.ts","sourceRoot":"","sources":["../../../src/globals/operations/countGlobalVersions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAKjE,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,qBAAqB,EAC3B,MAAM,gBAAgB,CAAA;AAGvB,MAAM,MAAM,SAAS,GAAG;IACtB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,MAAM,EAAE,qBAAqB,CAAA;IAC7B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,GAAG,CAAC,EAAE,cAAc,CAAA;IACpB,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,CAAA;AAGD,eAAO,MAAM,4BAA4B,GAAU,KAAK,SAAS,UAAU,QACnE,SAAS,KACd,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAoE/B,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"docAccess.d.ts","sourceRoot":"","sources":["../../../src/globals/operations/docAccess.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAA;AACpE,OAAO,KAAK,EAAiB,UAAU,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAQ/D,KAAK,SAAS,GAAG;IACf;;OAEG;IACH,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,YAAY,EAAE,qBAAqB,CAAA;IACnC,GAAG,EAAE,cAAc,CAAA;CACpB,CAAA;AAED,eAAO,MAAM,kBAAkB,GAAU,MAAM,SAAS,KAAG,OAAO,CAAC,yBAAyB,CAiC3F,CAAA"}
1
+ {"version":3,"file":"docAccess.d.ts","sourceRoot":"","sources":["../../../src/globals/operations/docAccess.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAA;AACpE,OAAO,KAAK,EAAiB,UAAU,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAQ/D,KAAK,SAAS,GAAG;IACf;;OAEG;IACH,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,YAAY,EAAE,qBAAqB,CAAA;IACnC,GAAG,EAAE,cAAc,CAAA;CACpB,CAAA;AAED,eAAO,MAAM,kBAAkB,SAAgB,SAAS,KAAG,OAAO,CAAC,yBAAyB,CAiC3F,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"findOne.d.ts","sourceRoot":"","sources":["../../../src/globals/operations/findOne.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAA;AAE7E,OAAO,KAAK,EACV,UAAU,EACV,cAAc,EACd,YAAY,EACZ,UAAU,EAEX,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAI/D,OAAO,EAAa,KAAK,aAAa,EAAE,MAAM,uCAAuC,CAAA;AASrF,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,YAAY,EAAE,qBAAqB,CAAA;IACnC,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,GAAG,EAAE,cAAc,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,IAAI,EAAE,MAAM,CAAA;CACb,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC,GACnD,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAA;AAEjD,eAAO,MAAM,gBAAgB,GAAU,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACtE,MAAM,iBAAiB,KACtB,OAAO,CAAC,CAAC,CAiPX,CAAA"}
1
+ {"version":3,"file":"findOne.d.ts","sourceRoot":"","sources":["../../../src/globals/operations/findOne.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAA;AAE7E,OAAO,KAAK,EACV,UAAU,EACV,cAAc,EACd,YAAY,EACZ,UAAU,EAEX,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAI/D,OAAO,EAAa,KAAK,aAAa,EAAE,MAAM,uCAAuC,CAAA;AASrF,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,YAAY,EAAE,qBAAqB,CAAA;IACnC,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,GAAG,EAAE,cAAc,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,IAAI,EAAE,MAAM,CAAA;CACb,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC,GACnD,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAA;AAEjD,eAAO,MAAM,gBAAgB,GAAU,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,QAChE,iBAAiB,KACtB,OAAO,CAAC,CAAC,CAiPX,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"findVersionByID.d.ts","sourceRoot":"","sources":["../../../src/globals/operations/findVersionByID.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAA;AAE7E,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACpF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAY/D,MAAM,MAAM,SAAS,GAAG;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,YAAY,EAAE,qBAAqB,CAAA;IACnC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,GAAG,EAAE,cAAc,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAA;AAEnD,eAAO,MAAM,wBAAwB,GAAU,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,GAAG,GAAG,EAC/E,MAAM,SAAS,KACd,OAAO,CAAC,CAAC,CAgJX,CAAA"}
1
+ {"version":3,"file":"findVersionByID.d.ts","sourceRoot":"","sources":["../../../src/globals/operations/findVersionByID.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAA;AAE7E,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAA;AACpF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAY/D,MAAM,MAAM,SAAS,GAAG;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,YAAY,EAAE,qBAAqB,CAAA;IACnC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,GAAG,EAAE,cAAc,CAAA;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAA;AAEnD,eAAO,MAAM,wBAAwB,GAAU,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,GAAG,GAAG,QACzE,SAAS,KACd,OAAO,CAAC,CAAC,CAgJX,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"findVersions.d.ts","sourceRoot":"","sources":["../../../src/globals/operations/findVersions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAA;AAC7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACjG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAY/D,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,qBAAqB,CAAA;IACnC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,GAAG,CAAC,EAAE,cAAc,CAAA;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAA;AAEnD,eAAO,MAAM,qBAAqB,GAAU,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,EACtE,MAAM,SAAS,KACd,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAqJ1B,CAAA"}
1
+ {"version":3,"file":"findVersions.d.ts","sourceRoot":"","sources":["../../../src/globals/operations/findVersions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAA;AAC7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACjG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAY/D,MAAM,MAAM,SAAS,GAAG;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,qBAAqB,CAAA;IACnC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB,GAAG,CAAC,EAAE,cAAc,CAAA;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAA;AAEnD,eAAO,MAAM,qBAAqB,GAAU,CAAC,SAAS,eAAe,CAAC,CAAC,CAAC,QAChE,SAAS,KACd,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAqJ1B,CAAA"}
@@ -1,5 +1,5 @@
1
- import type { GlobalSlug, Payload, RequestContext, TypedLocale } from '../../../index.js';
2
- import type { Document, PayloadRequest, Where } from '../../../types/index.js';
1
+ import type { GlobalSlug, Payload, RequestContext, TypedLocale, User } from '../../../index.js';
2
+ import type { PayloadRequest, Where } from '../../../types/index.js';
3
3
  export type CountGlobalVersionsOptions<TSlug extends GlobalSlug> = {
4
4
  /**
5
5
  * [Context](https://payloadcms.com/docs/hooks/context), which will then be passed to `context` and `req.context`,
@@ -34,7 +34,7 @@ export type CountGlobalVersionsOptions<TSlug extends GlobalSlug> = {
34
34
  /**
35
35
  * If you set `overrideAccess` to `false`, you can pass a user to use against the access control checks.
36
36
  */
37
- user?: Document;
37
+ user?: null | User;
38
38
  /**
39
39
  * A filter [query](https://payloadcms.com/docs/queries/overview)
40
40
  */
@@ -1 +1 @@
1
- {"version":3,"file":"countVersions.d.ts","sourceRoot":"","sources":["../../../../src/globals/operations/local/countVersions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACzF,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAO9E,MAAM,MAAM,0BAA0B,CAAC,KAAK,SAAS,UAAU,IAAI;IACjE;;;;;OAKG;IACH,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB;;OAEG;IACH,MAAM,EAAE,KAAK,CAAA;IACb;;OAEG;IACH,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB;;;OAGG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;IAE7B;;OAEG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,CAAA;AAED,wBAAsB,wBAAwB,CAAC,KAAK,SAAS,UAAU,EACrE,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,0BAA0B,CAAC,KAAK,CAAC,GACzC,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAkBhC"}
1
+ {"version":3,"file":"countVersions.d.ts","sourceRoot":"","sources":["../../../../src/globals/operations/local/countVersions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AAC/F,OAAO,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAOpE,MAAM,MAAM,0BAA0B,CAAC,KAAK,SAAS,UAAU,IAAI;IACjE;;;;;OAKG;IACH,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB;;OAEG;IACH,MAAM,EAAE,KAAK,CAAA;IACb;;OAEG;IACH,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB;;;OAGG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;IAC7B;;OAEG;IACH,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;IAClB;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,CAAA;AAED,wBAAsB,wBAAwB,CAAC,KAAK,SAAS,UAAU,EACrE,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,0BAA0B,CAAC,KAAK,CAAC,GACzC,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAkBhC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/globals/operations/local/countVersions.ts"],"sourcesContent":["import type { GlobalSlug, Payload, RequestContext, TypedLocale } from '../../../index.js'\nimport type { Document, PayloadRequest, Where } from '../../../types/index.js'\nimport type { CreateLocalReqOptions } from '../../../utilities/createLocalReq.js'\n\nimport { APIError } from '../../../errors/index.js'\nimport { createLocalReq } from '../../../utilities/createLocalReq.js'\nimport { countGlobalVersionsOperation } from '../countGlobalVersions.js'\n\nexport type CountGlobalVersionsOptions<TSlug extends GlobalSlug> = {\n /**\n * [Context](https://payloadcms.com/docs/hooks/context), which will then be passed to `context` and `req.context`,\n * which can be read by hooks. Useful if you want to pass additional information to the hooks which\n * shouldn't be necessarily part of the document, for example a `triggerBeforeChange` option which can be read by the BeforeChange hook\n * to determine if it should run or not.\n */\n context?: RequestContext\n /**\n * When set to `true`, errors will not be thrown.\n */\n disableErrors?: boolean\n /**\n * the Global slug to operate against.\n */\n global: TSlug\n /**\n * Specify [locale](https://payloadcms.com/docs/configuration/localization) for any returned documents.\n */\n locale?: TypedLocale\n /**\n * Skip access control.\n * Set to `false` if you want to respect Access Control for the operation, for example when fetching data for the front-end.\n * @default true\n */\n overrideAccess?: boolean\n /**\n * The `PayloadRequest` object. You can pass it to thread the current [transaction](https://payloadcms.com/docs/database/transactions), user and locale to the operation.\n * Recommended to pass when using the Local API from hooks, as usually you want to execute the operation within the current transaction.\n */\n req?: Partial<PayloadRequest>\n // TODO: Strongly type User as TypedUser (= User in v4.0)\n /**\n * If you set `overrideAccess` to `false`, you can pass a user to use against the access control checks.\n */\n user?: Document\n /**\n * A filter [query](https://payloadcms.com/docs/queries/overview)\n */\n where?: Where\n}\n\nexport async function countGlobalVersionsLocal<TSlug extends GlobalSlug>(\n payload: Payload,\n options: CountGlobalVersionsOptions<TSlug>,\n): Promise<{ totalDocs: number }> {\n const { disableErrors, global: globalSlug, overrideAccess = true, where } = options\n\n const global = payload.globals.config.find(({ slug }) => slug === globalSlug)\n\n if (!global) {\n throw new APIError(\n `The global with slug ${String(globalSlug)} can't be found. Count Global Versions Operation.`,\n )\n }\n\n return countGlobalVersionsOperation<TSlug>({\n disableErrors,\n global,\n overrideAccess,\n req: await createLocalReq(options as CreateLocalReqOptions, payload),\n where,\n })\n}\n"],"names":["APIError","createLocalReq","countGlobalVersionsOperation","countGlobalVersionsLocal","payload","options","disableErrors","global","globalSlug","overrideAccess","where","globals","config","find","slug","String","req"],"mappings":"AAIA,SAASA,QAAQ,QAAQ,2BAA0B;AACnD,SAASC,cAAc,QAAQ,uCAAsC;AACrE,SAASC,4BAA4B,QAAQ,4BAA2B;AA4CxE,OAAO,eAAeC,yBACpBC,OAAgB,EAChBC,OAA0C;IAE1C,MAAM,EAAEC,aAAa,EAAEC,QAAQC,UAAU,EAAEC,iBAAiB,IAAI,EAAEC,KAAK,EAAE,GAAGL;IAE5E,MAAME,SAASH,QAAQO,OAAO,CAACC,MAAM,CAACC,IAAI,CAAC,CAAC,EAAEC,IAAI,EAAE,GAAKA,SAASN;IAElE,IAAI,CAACD,QAAQ;QACX,MAAM,IAAIP,SACR,CAAC,qBAAqB,EAAEe,OAAOP,YAAY,iDAAiD,CAAC;IAEjG;IAEA,OAAON,6BAAoC;QACzCI;QACAC;QACAE;QACAO,KAAK,MAAMf,eAAeI,SAAkCD;QAC5DM;IACF;AACF"}
1
+ {"version":3,"sources":["../../../../src/globals/operations/local/countVersions.ts"],"sourcesContent":["import type { GlobalSlug, Payload, RequestContext, TypedLocale, User } from '../../../index.js'\nimport type { PayloadRequest, Where } from '../../../types/index.js'\nimport type { CreateLocalReqOptions } from '../../../utilities/createLocalReq.js'\n\nimport { APIError } from '../../../errors/index.js'\nimport { createLocalReq } from '../../../utilities/createLocalReq.js'\nimport { countGlobalVersionsOperation } from '../countGlobalVersions.js'\n\nexport type CountGlobalVersionsOptions<TSlug extends GlobalSlug> = {\n /**\n * [Context](https://payloadcms.com/docs/hooks/context), which will then be passed to `context` and `req.context`,\n * which can be read by hooks. Useful if you want to pass additional information to the hooks which\n * shouldn't be necessarily part of the document, for example a `triggerBeforeChange` option which can be read by the BeforeChange hook\n * to determine if it should run or not.\n */\n context?: RequestContext\n /**\n * When set to `true`, errors will not be thrown.\n */\n disableErrors?: boolean\n /**\n * the Global slug to operate against.\n */\n global: TSlug\n /**\n * Specify [locale](https://payloadcms.com/docs/configuration/localization) for any returned documents.\n */\n locale?: TypedLocale\n /**\n * Skip access control.\n * Set to `false` if you want to respect Access Control for the operation, for example when fetching data for the front-end.\n * @default true\n */\n overrideAccess?: boolean\n /**\n * The `PayloadRequest` object. You can pass it to thread the current [transaction](https://payloadcms.com/docs/database/transactions), user and locale to the operation.\n * Recommended to pass when using the Local API from hooks, as usually you want to execute the operation within the current transaction.\n */\n req?: Partial<PayloadRequest>\n /**\n * If you set `overrideAccess` to `false`, you can pass a user to use against the access control checks.\n */\n user?: null | User\n /**\n * A filter [query](https://payloadcms.com/docs/queries/overview)\n */\n where?: Where\n}\n\nexport async function countGlobalVersionsLocal<TSlug extends GlobalSlug>(\n payload: Payload,\n options: CountGlobalVersionsOptions<TSlug>,\n): Promise<{ totalDocs: number }> {\n const { disableErrors, global: globalSlug, overrideAccess = true, where } = options\n\n const global = payload.globals.config.find(({ slug }) => slug === globalSlug)\n\n if (!global) {\n throw new APIError(\n `The global with slug ${String(globalSlug)} can't be found. Count Global Versions Operation.`,\n )\n }\n\n return countGlobalVersionsOperation<TSlug>({\n disableErrors,\n global,\n overrideAccess,\n req: await createLocalReq(options as CreateLocalReqOptions, payload),\n where,\n })\n}\n"],"names":["APIError","createLocalReq","countGlobalVersionsOperation","countGlobalVersionsLocal","payload","options","disableErrors","global","globalSlug","overrideAccess","where","globals","config","find","slug","String","req"],"mappings":"AAIA,SAASA,QAAQ,QAAQ,2BAA0B;AACnD,SAASC,cAAc,QAAQ,uCAAsC;AACrE,SAASC,4BAA4B,QAAQ,4BAA2B;AA2CxE,OAAO,eAAeC,yBACpBC,OAAgB,EAChBC,OAA0C;IAE1C,MAAM,EAAEC,aAAa,EAAEC,QAAQC,UAAU,EAAEC,iBAAiB,IAAI,EAAEC,KAAK,EAAE,GAAGL;IAE5E,MAAME,SAASH,QAAQO,OAAO,CAACC,MAAM,CAACC,IAAI,CAAC,CAAC,EAAEC,IAAI,EAAE,GAAKA,SAASN;IAElE,IAAI,CAACD,QAAQ;QACX,MAAM,IAAIP,SACR,CAAC,qBAAqB,EAAEe,OAAOP,YAAY,iDAAiD,CAAC;IAEjG;IAEA,OAAON,6BAAoC;QACzCI;QACAC;QACAE;QACAO,KAAK,MAAMf,eAAeI,SAAkCD;QAC5DM;IACF;AACF"}
@@ -1,6 +1,6 @@
1
1
  import type { FindOptions } from '../../../collections/operations/local/find.js';
2
- import type { GlobalSlug, Payload, RequestContext, TypedFallbackLocale, TypedLocale } from '../../../index.js';
3
- import type { Document, PayloadRequest, PopulateType, SelectType, TransformGlobalWithSelect } from '../../../types/index.js';
2
+ import type { GlobalSlug, Payload, RequestContext, TypedFallbackLocale, TypedLocale, User } from '../../../index.js';
3
+ import type { PayloadRequest, PopulateType, SelectType, TransformGlobalWithSelect } from '../../../types/index.js';
4
4
  import type { DraftFlagFromGlobalSlug, SelectFromGlobalSlug } from '../../config/types.js';
5
5
  import { type GlobalFindOneArgs } from '../findOne.js';
6
6
  type BaseFindOneOptions<TSlug extends GlobalSlug, TSelect extends SelectType> = {
@@ -67,7 +67,7 @@ type BaseFindOneOptions<TSlug extends GlobalSlug, TSelect extends SelectType> =
67
67
  /**
68
68
  * If you set `overrideAccess` to `false`, you can pass a user to use against the access control checks.
69
69
  */
70
- user?: Document;
70
+ user?: null | User;
71
71
  } & Pick<FindOptions<string, SelectType>, 'select'> & Pick<GlobalFindOneArgs, 'flattenLocales'>;
72
72
  export type Options<TSlug extends GlobalSlug, TSelect extends SelectType> = BaseFindOneOptions<TSlug, TSelect> & DraftFlagFromGlobalSlug<TSlug>;
73
73
  export declare function findOneGlobalLocal<TSlug extends GlobalSlug, TSelect extends SelectFromGlobalSlug<TSlug>>(payload: Payload, options: Options<TSlug, TSelect>): Promise<TransformGlobalWithSelect<TSlug, TSelect>>;
@@ -1 +1 @@
1
- {"version":3,"file":"findOne.d.ts","sourceRoot":"","sources":["../../../../src/globals/operations/local/findOne.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAA;AAChF,OAAO,KAAK,EACV,UAAU,EACV,OAAO,EACP,cAAc,EACd,mBAAmB,EACnB,WAAW,EACZ,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EACV,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,UAAU,EACV,yBAAyB,EAC1B,MAAM,yBAAyB,CAAA;AAEhC,OAAO,KAAK,EACV,uBAAuB,EACvB,oBAAoB,EACrB,MAAM,uBAAuB,CAAA;AAI9B,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAExE,KAAK,kBAAkB,CAAC,KAAK,SAAS,UAAU,EAAE,OAAO,SAAS,UAAU,IAAI;IAC9E;;;;;OAKG;IACH,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;IACf;;OAEG;IACH,cAAc,CAAC,EAAE,mBAAmB,CAAA;IACpC;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B;;OAEG;IACH,MAAM,CAAC,EAAE,KAAK,GAAG,WAAW,CAAA;IAC5B;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB;;OAEG;IACH,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB;;;OAGG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;IAC7B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B;;OAEG;IACH,IAAI,EAAE,KAAK,CAAA;IAEX;;OAEG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAA;CAChB,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,QAAQ,CAAC,GACjD,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAA;AAE3C,MAAM,MAAM,OAAO,CAAC,KAAK,SAAS,UAAU,EAAE,OAAO,SAAS,UAAU,IACtE,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAA;AAErE,wBAAsB,kBAAkB,CACtC,KAAK,SAAS,UAAU,EACxB,OAAO,SAAS,oBAAoB,CAAC,KAAK,CAAC,EAE3C,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,GAC/B,OAAO,CAAC,yBAAyB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAoCpD"}
1
+ {"version":3,"file":"findOne.d.ts","sourceRoot":"","sources":["../../../../src/globals/operations/local/findOne.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAA;AAChF,OAAO,KAAK,EACV,UAAU,EACV,OAAO,EACP,cAAc,EACd,mBAAmB,EACnB,WAAW,EACX,IAAI,EACL,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,UAAU,EACV,yBAAyB,EAC1B,MAAM,yBAAyB,CAAA;AAEhC,OAAO,KAAK,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAI1F,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAExE,KAAK,kBAAkB,CAAC,KAAK,SAAS,UAAU,EAAE,OAAO,SAAS,UAAU,IAAI;IAC9E;;;;;OAKG;IACH,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;IACf;;OAEG;IACH,cAAc,CAAC,EAAE,mBAAmB,CAAA;IACpC;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B;;OAEG;IACH,MAAM,CAAC,EAAE,KAAK,GAAG,WAAW,CAAA;IAC5B;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB;;OAEG;IACH,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB;;;OAGG;IACH,GAAG,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;IAC7B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B;;OAEG;IACH,IAAI,EAAE,KAAK,CAAA;IACX;;OAEG;IACH,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;CACnB,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,QAAQ,CAAC,GACjD,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAA;AAE3C,MAAM,MAAM,OAAO,CAAC,KAAK,SAAS,UAAU,EAAE,OAAO,SAAS,UAAU,IAAI,kBAAkB,CAC5F,KAAK,EACL,OAAO,CACR,GACC,uBAAuB,CAAC,KAAK,CAAC,CAAA;AAEhC,wBAAsB,kBAAkB,CACtC,KAAK,SAAS,UAAU,EACxB,OAAO,SAAS,oBAAoB,CAAC,KAAK,CAAC,EAE3C,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,GAC/B,OAAO,CAAC,yBAAyB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAoCpD"}