payload 4.0.0-internal.5f0cd13 → 4.0.0-internal.63f8536

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 (541) hide show
  1. package/LICENSE.md +1 -1
  2. package/bin.js +11 -0
  3. package/dist/admin/RichText.d.ts +2 -2
  4. package/dist/admin/RichText.d.ts.map +1 -1
  5. package/dist/admin/RichText.js.map +1 -1
  6. package/dist/admin/adapters/devReload.d.ts +9 -0
  7. package/dist/admin/adapters/devReload.d.ts.map +1 -0
  8. package/dist/admin/adapters/devReload.js +6 -0
  9. package/dist/admin/adapters/devReload.js.map +1 -0
  10. package/dist/admin/adapters/index.d.ts +3 -0
  11. package/dist/admin/adapters/index.d.ts.map +1 -1
  12. package/dist/admin/adapters/index.js.map +1 -1
  13. package/dist/admin/adapters/render.d.ts +16 -0
  14. package/dist/admin/adapters/render.d.ts.map +1 -0
  15. package/dist/admin/adapters/render.js +7 -0
  16. package/dist/admin/adapters/render.js.map +1 -0
  17. package/dist/admin/adapters/views.d.ts +36 -0
  18. package/dist/admin/adapters/views.d.ts.map +1 -0
  19. package/dist/admin/adapters/views.js +7 -0
  20. package/dist/admin/adapters/views.js.map +1 -0
  21. package/dist/admin/fields/Row.d.ts +2 -2
  22. package/dist/admin/fields/Row.d.ts.map +1 -1
  23. package/dist/admin/fields/Row.js.map +1 -1
  24. package/dist/admin/forms/Description.d.ts +2 -2
  25. package/dist/admin/forms/Description.d.ts.map +1 -1
  26. package/dist/admin/forms/Description.js.map +1 -1
  27. package/dist/admin/forms/Field.d.ts +10 -5
  28. package/dist/admin/forms/Field.d.ts.map +1 -1
  29. package/dist/admin/forms/Field.js.map +1 -1
  30. package/dist/admin/functions/index.d.ts +10 -1
  31. package/dist/admin/functions/index.d.ts.map +1 -1
  32. package/dist/admin/functions/index.js.map +1 -1
  33. package/dist/admin/types.d.ts +3 -2
  34. package/dist/admin/types.d.ts.map +1 -1
  35. package/dist/admin/types.js.map +1 -1
  36. package/dist/admin/views/dashboard.d.ts +7 -0
  37. package/dist/admin/views/dashboard.d.ts.map +1 -1
  38. package/dist/admin/views/dashboard.js.map +1 -1
  39. package/dist/admin/views/document.d.ts +5 -3
  40. package/dist/admin/views/document.d.ts.map +1 -1
  41. package/dist/admin/views/document.js.map +1 -1
  42. package/dist/admin/views/list.d.ts +5 -0
  43. package/dist/admin/views/list.d.ts.map +1 -1
  44. package/dist/admin/views/list.js.map +1 -1
  45. package/dist/auth/baseFields/apiKey.d.ts +10 -2
  46. package/dist/auth/baseFields/apiKey.d.ts.map +1 -1
  47. package/dist/auth/baseFields/apiKey.js +35 -24
  48. package/dist/auth/baseFields/apiKey.js.map +1 -1
  49. package/dist/auth/defaultAccess.d.ts +1 -1
  50. package/dist/auth/defaultAccess.d.ts.map +1 -1
  51. package/dist/auth/defaultAccess.js +1 -1
  52. package/dist/auth/defaultAccess.js.map +1 -1
  53. package/dist/auth/defaultUser.d.ts.map +1 -1
  54. package/dist/auth/defaultUser.js +2 -1
  55. package/dist/auth/defaultUser.js.map +1 -1
  56. package/dist/auth/getAuthFields.js +2 -2
  57. package/dist/auth/getAuthFields.js.map +1 -1
  58. package/dist/auth/operations/auth.d.ts +2 -2
  59. package/dist/auth/operations/auth.d.ts.map +1 -1
  60. package/dist/auth/operations/auth.js.map +1 -1
  61. package/dist/auth/operations/login.d.ts +2 -1
  62. package/dist/auth/operations/login.d.ts.map +1 -1
  63. package/dist/auth/operations/login.js.map +1 -1
  64. package/dist/auth/operations/me.js.map +1 -1
  65. package/dist/auth/operations/refresh.d.ts.map +1 -1
  66. package/dist/auth/operations/refresh.js +9 -3
  67. package/dist/auth/operations/refresh.js.map +1 -1
  68. package/dist/auth/operations/resetPassword.d.ts.map +1 -1
  69. package/dist/auth/operations/resetPassword.js.map +1 -1
  70. package/dist/auth/sendVerificationEmail.d.ts +2 -2
  71. package/dist/auth/sendVerificationEmail.d.ts.map +1 -1
  72. package/dist/auth/sendVerificationEmail.js +1 -1
  73. package/dist/auth/sendVerificationEmail.js.map +1 -1
  74. package/dist/auth/sessions.d.ts +4 -5
  75. package/dist/auth/sessions.d.ts.map +1 -1
  76. package/dist/auth/sessions.js +5 -3
  77. package/dist/auth/sessions.js.map +1 -1
  78. package/dist/auth/strategies/apiKey.js.map +1 -1
  79. package/dist/auth/strategies/local/incrementLoginAttempts.d.ts +2 -2
  80. package/dist/auth/strategies/local/incrementLoginAttempts.d.ts.map +1 -1
  81. package/dist/auth/strategies/local/incrementLoginAttempts.js +1 -1
  82. package/dist/auth/strategies/local/incrementLoginAttempts.js.map +1 -1
  83. package/dist/auth/types.d.ts +28 -21
  84. package/dist/auth/types.d.ts.map +1 -1
  85. package/dist/auth/types.js.map +1 -1
  86. package/dist/bin/build.d.ts +25 -0
  87. package/dist/bin/build.d.ts.map +1 -0
  88. package/dist/bin/build.js +80 -0
  89. package/dist/bin/build.js.map +1 -0
  90. package/dist/bin/build.spec.js +170 -0
  91. package/dist/bin/build.spec.js.map +1 -0
  92. package/dist/bin/generateImportMap/index.d.ts.map +1 -1
  93. package/dist/bin/generateImportMap/index.js +8 -5
  94. package/dist/bin/generateImportMap/index.js.map +1 -1
  95. package/dist/bin/generateImportMap/iterateCollections.d.ts.map +1 -1
  96. package/dist/bin/generateImportMap/iterateCollections.js +11 -0
  97. package/dist/bin/generateImportMap/iterateCollections.js.map +1 -1
  98. package/dist/bin/generateImportMap/iterateConfig.d.ts.map +1 -1
  99. package/dist/bin/generateImportMap/iterateConfig.js +12 -0
  100. package/dist/bin/generateImportMap/iterateConfig.js.map +1 -1
  101. package/dist/bin/generateImportMap/utilities/resolveImportMapFilePath.d.ts +5 -1
  102. package/dist/bin/generateImportMap/utilities/resolveImportMapFilePath.d.ts.map +1 -1
  103. package/dist/bin/generateImportMap/utilities/resolveImportMapFilePath.js +32 -18
  104. package/dist/bin/generateImportMap/utilities/resolveImportMapFilePath.js.map +1 -1
  105. package/dist/bin/generateTypes.d.ts +3 -2
  106. package/dist/bin/generateTypes.d.ts.map +1 -1
  107. package/dist/bin/generateTypes.js +4 -0
  108. package/dist/bin/generateTypes.js.map +1 -1
  109. package/dist/bin/index.d.ts.map +1 -1
  110. package/dist/bin/index.js +9 -0
  111. package/dist/bin/index.js.map +1 -1
  112. package/dist/bin/loadEnv.d.ts +3 -1
  113. package/dist/bin/loadEnv.d.ts.map +1 -1
  114. package/dist/bin/loadEnv.js +40 -10
  115. package/dist/bin/loadEnv.js.map +1 -1
  116. package/dist/collections/config/client.d.ts +1 -1
  117. package/dist/collections/config/client.d.ts.map +1 -1
  118. package/dist/collections/config/client.js +1 -0
  119. package/dist/collections/config/client.js.map +1 -1
  120. package/dist/collections/config/defaults.d.ts +0 -4
  121. package/dist/collections/config/defaults.d.ts.map +1 -1
  122. package/dist/collections/config/defaults.js +2 -17
  123. package/dist/collections/config/defaults.js.map +1 -1
  124. package/dist/collections/config/defaults.spec.js +47 -0
  125. package/dist/collections/config/defaults.spec.js.map +1 -0
  126. package/dist/collections/config/sanitize.d.ts.map +1 -1
  127. package/dist/collections/config/sanitize.js +1 -11
  128. package/dist/collections/config/sanitize.js.map +1 -1
  129. package/dist/collections/config/types.d.ts +11 -7
  130. package/dist/collections/config/types.d.ts.map +1 -1
  131. package/dist/collections/config/types.js.map +1 -1
  132. package/dist/collections/endpoints/create.d.ts.map +1 -1
  133. package/dist/collections/endpoints/create.js +0 -2
  134. package/dist/collections/endpoints/create.js.map +1 -1
  135. package/dist/collections/endpoints/updateByID.d.ts.map +1 -1
  136. package/dist/collections/endpoints/updateByID.js +1 -2
  137. package/dist/collections/endpoints/updateByID.js.map +1 -1
  138. package/dist/collections/operations/count.d.ts.map +1 -1
  139. package/dist/collections/operations/count.js +1 -0
  140. package/dist/collections/operations/count.js.map +1 -1
  141. package/dist/collections/operations/create.d.ts +0 -1
  142. package/dist/collections/operations/create.d.ts.map +1 -1
  143. package/dist/collections/operations/create.js +15 -6
  144. package/dist/collections/operations/create.js.map +1 -1
  145. package/dist/collections/operations/delete.d.ts.map +1 -1
  146. package/dist/collections/operations/delete.js +3 -0
  147. package/dist/collections/operations/delete.js.map +1 -1
  148. package/dist/collections/operations/findDistinct.d.ts.map +1 -1
  149. package/dist/collections/operations/findDistinct.js +1 -0
  150. package/dist/collections/operations/findDistinct.js.map +1 -1
  151. package/dist/collections/operations/local/count.d.ts +3 -3
  152. package/dist/collections/operations/local/count.d.ts.map +1 -1
  153. package/dist/collections/operations/local/count.js.map +1 -1
  154. package/dist/collections/operations/local/countVersions.d.ts +3 -3
  155. package/dist/collections/operations/local/countVersions.d.ts.map +1 -1
  156. package/dist/collections/operations/local/countVersions.js.map +1 -1
  157. package/dist/collections/operations/local/create.d.ts +3 -3
  158. package/dist/collections/operations/local/create.d.ts.map +1 -1
  159. package/dist/collections/operations/local/create.js.map +1 -1
  160. package/dist/collections/operations/local/delete.d.ts +3 -3
  161. package/dist/collections/operations/local/delete.d.ts.map +1 -1
  162. package/dist/collections/operations/local/delete.js.map +1 -1
  163. package/dist/collections/operations/local/duplicate.d.ts +3 -3
  164. package/dist/collections/operations/local/duplicate.d.ts.map +1 -1
  165. package/dist/collections/operations/local/duplicate.js.map +1 -1
  166. package/dist/collections/operations/local/find.d.ts +3 -3
  167. package/dist/collections/operations/local/find.d.ts.map +1 -1
  168. package/dist/collections/operations/local/find.js.map +1 -1
  169. package/dist/collections/operations/local/findByID.d.ts +3 -3
  170. package/dist/collections/operations/local/findByID.d.ts.map +1 -1
  171. package/dist/collections/operations/local/findByID.js.map +1 -1
  172. package/dist/collections/operations/local/findDistinct.d.ts +2 -2
  173. package/dist/collections/operations/local/findDistinct.d.ts.map +1 -1
  174. package/dist/collections/operations/local/findDistinct.js.map +1 -1
  175. package/dist/collections/operations/local/findVersionByID.d.ts +3 -3
  176. package/dist/collections/operations/local/findVersionByID.d.ts.map +1 -1
  177. package/dist/collections/operations/local/findVersionByID.js.map +1 -1
  178. package/dist/collections/operations/local/findVersions.d.ts +3 -3
  179. package/dist/collections/operations/local/findVersions.d.ts.map +1 -1
  180. package/dist/collections/operations/local/findVersions.js.map +1 -1
  181. package/dist/collections/operations/local/restoreVersion.d.ts +3 -3
  182. package/dist/collections/operations/local/restoreVersion.d.ts.map +1 -1
  183. package/dist/collections/operations/local/restoreVersion.js.map +1 -1
  184. package/dist/collections/operations/local/update.d.ts +7 -11
  185. package/dist/collections/operations/local/update.d.ts.map +1 -1
  186. package/dist/collections/operations/local/update.js +1 -2
  187. package/dist/collections/operations/local/update.js.map +1 -1
  188. package/dist/collections/operations/update.d.ts +0 -1
  189. package/dist/collections/operations/update.d.ts.map +1 -1
  190. package/dist/collections/operations/update.js +8 -4
  191. package/dist/collections/operations/update.js.map +1 -1
  192. package/dist/collections/operations/updateByID.d.ts +0 -1
  193. package/dist/collections/operations/updateByID.d.ts.map +1 -1
  194. package/dist/collections/operations/updateByID.js +1 -5
  195. package/dist/collections/operations/updateByID.js.map +1 -1
  196. package/dist/collections/operations/utilities/copyDataWithFreshRowIDs.d.ts +9 -0
  197. package/dist/collections/operations/utilities/copyDataWithFreshRowIDs.d.ts.map +1 -0
  198. package/dist/collections/operations/utilities/copyDataWithFreshRowIDs.js +170 -0
  199. package/dist/collections/operations/utilities/copyDataWithFreshRowIDs.js.map +1 -0
  200. package/dist/collections/operations/utilities/types.d.ts +0 -9
  201. package/dist/collections/operations/utilities/types.d.ts.map +1 -1
  202. package/dist/collections/operations/utilities/types.js.map +1 -1
  203. package/dist/collections/operations/utilities/update.d.ts +1 -2
  204. package/dist/collections/operations/utilities/update.d.ts.map +1 -1
  205. package/dist/collections/operations/utilities/update.js +64 -65
  206. package/dist/collections/operations/utilities/update.js.map +1 -1
  207. package/dist/config/client.d.ts +2 -2
  208. package/dist/config/client.d.ts.map +1 -1
  209. package/dist/config/client.js.map +1 -1
  210. package/dist/config/defaults.d.ts +0 -4
  211. package/dist/config/defaults.d.ts.map +1 -1
  212. package/dist/config/defaults.js +0 -78
  213. package/dist/config/defaults.js.map +1 -1
  214. package/dist/config/definePlugin.d.ts +10 -10
  215. package/dist/config/definePlugin.d.ts.map +1 -1
  216. package/dist/config/definePlugin.js +7 -11
  217. package/dist/config/definePlugin.js.map +1 -1
  218. package/dist/config/orderable/index.d.ts.map +1 -1
  219. package/dist/config/orderable/index.js +23 -0
  220. package/dist/config/orderable/index.js.map +1 -1
  221. package/dist/config/sanitize.d.ts.map +1 -1
  222. package/dist/config/sanitize.js +137 -13
  223. package/dist/config/sanitize.js.map +1 -1
  224. package/dist/config/types.d.ts +57 -19
  225. package/dist/config/types.d.ts.map +1 -1
  226. package/dist/config/types.js +2 -0
  227. package/dist/config/types.js.map +1 -1
  228. package/dist/database/getLocalizedPaths.d.ts.map +1 -1
  229. package/dist/database/getLocalizedPaths.js +1 -1
  230. package/dist/database/getLocalizedPaths.js.map +1 -1
  231. package/dist/database/migrations/migrationsCollection.d.ts.map +1 -1
  232. package/dist/database/migrations/migrationsCollection.js +2 -1
  233. package/dist/database/migrations/migrationsCollection.js.map +1 -1
  234. package/dist/errors/ValidationError.d.ts +1 -0
  235. package/dist/errors/ValidationError.d.ts.map +1 -1
  236. package/dist/errors/ValidationError.js.map +1 -1
  237. package/dist/exports/internal.d.ts +1 -0
  238. package/dist/exports/internal.d.ts.map +1 -1
  239. package/dist/exports/internal.js +1 -0
  240. package/dist/exports/internal.js.map +1 -1
  241. package/dist/exports/migrations.d.ts +5 -13
  242. package/dist/exports/migrations.d.ts.map +1 -1
  243. package/dist/exports/migrations.js +5 -13
  244. package/dist/exports/migrations.js.map +1 -1
  245. package/dist/exports/shared.d.ts +23 -2
  246. package/dist/exports/shared.d.ts.map +1 -1
  247. package/dist/exports/shared.js +22 -1
  248. package/dist/exports/shared.js.map +1 -1
  249. package/dist/fields/baseFields/slug/countVersions.d.ts.map +1 -1
  250. package/dist/fields/baseFields/slug/countVersions.js +6 -8
  251. package/dist/fields/baseFields/slug/countVersions.js.map +1 -1
  252. package/dist/fields/baseFields/slug/generateSlug.d.ts +14 -7
  253. package/dist/fields/baseFields/slug/generateSlug.d.ts.map +1 -1
  254. package/dist/fields/baseFields/slug/generateSlug.js +53 -73
  255. package/dist/fields/baseFields/slug/generateSlug.js.map +1 -1
  256. package/dist/fields/baseFields/slug/types.d.ts +14 -0
  257. package/dist/fields/baseFields/slug/types.d.ts.map +1 -0
  258. package/dist/fields/baseFields/slug/types.js +6 -0
  259. package/dist/fields/baseFields/slug/types.js.map +1 -0
  260. package/dist/fields/config/client.d.ts +3 -3
  261. package/dist/fields/config/client.d.ts.map +1 -1
  262. package/dist/fields/config/client.js +13 -13
  263. package/dist/fields/config/client.js.map +1 -1
  264. package/dist/fields/config/sanitize.d.ts.map +1 -1
  265. package/dist/fields/config/sanitize.js +40 -4
  266. package/dist/fields/config/sanitize.js.map +1 -1
  267. package/dist/fields/config/types.d.ts +49 -28
  268. package/dist/fields/config/types.d.ts.map +1 -1
  269. package/dist/fields/config/types.js.map +1 -1
  270. package/dist/fields/hooks/afterChange/promise.js +1 -1
  271. package/dist/fields/hooks/afterChange/promise.js.map +1 -1
  272. package/dist/fields/hooks/afterRead/promise.d.ts.map +1 -1
  273. package/dist/fields/hooks/afterRead/promise.js +13 -3
  274. package/dist/fields/hooks/afterRead/promise.js.map +1 -1
  275. package/dist/fields/hooks/beforeChange/promise.d.ts.map +1 -1
  276. package/dist/fields/hooks/beforeChange/promise.js +3 -3
  277. package/dist/fields/hooks/beforeChange/promise.js.map +1 -1
  278. package/dist/fields/hooks/beforeDuplicate/promise.js +2 -2
  279. package/dist/fields/hooks/beforeDuplicate/promise.js.map +1 -1
  280. package/dist/fields/hooks/beforeValidate/promise.d.ts.map +1 -1
  281. package/dist/fields/hooks/beforeValidate/promise.js +11 -2
  282. package/dist/fields/hooks/beforeValidate/promise.js.map +1 -1
  283. package/dist/fields/setDefaultBeforeDuplicate.js +1 -0
  284. package/dist/fields/setDefaultBeforeDuplicate.js.map +1 -1
  285. package/dist/fields/sortableFieldTypes.d.ts.map +1 -1
  286. package/dist/fields/sortableFieldTypes.js +1 -0
  287. package/dist/fields/sortableFieldTypes.js.map +1 -1
  288. package/dist/fields/validations.d.ts +4 -1
  289. package/dist/fields/validations.d.ts.map +1 -1
  290. package/dist/fields/validations.js +12 -4
  291. package/dist/fields/validations.js.map +1 -1
  292. package/dist/globals/config/sanitize.d.ts.map +1 -1
  293. package/dist/globals/config/sanitize.js +2 -6
  294. package/dist/globals/config/sanitize.js.map +1 -1
  295. package/dist/globals/config/sanitize.spec.js +43 -0
  296. package/dist/globals/config/sanitize.spec.js.map +1 -0
  297. package/dist/globals/endpoints/update.d.ts.map +1 -1
  298. package/dist/globals/endpoints/update.js +0 -2
  299. package/dist/globals/endpoints/update.js.map +1 -1
  300. package/dist/globals/operations/local/countVersions.d.ts +3 -3
  301. package/dist/globals/operations/local/countVersions.d.ts.map +1 -1
  302. package/dist/globals/operations/local/countVersions.js.map +1 -1
  303. package/dist/globals/operations/local/findOne.d.ts +3 -3
  304. package/dist/globals/operations/local/findOne.d.ts.map +1 -1
  305. package/dist/globals/operations/local/findOne.js.map +1 -1
  306. package/dist/globals/operations/local/findVersionByID.d.ts +3 -3
  307. package/dist/globals/operations/local/findVersionByID.d.ts.map +1 -1
  308. package/dist/globals/operations/local/findVersionByID.js.map +1 -1
  309. package/dist/globals/operations/local/findVersions.d.ts +3 -3
  310. package/dist/globals/operations/local/findVersions.d.ts.map +1 -1
  311. package/dist/globals/operations/local/findVersions.js.map +1 -1
  312. package/dist/globals/operations/local/restoreVersion.d.ts +3 -3
  313. package/dist/globals/operations/local/restoreVersion.d.ts.map +1 -1
  314. package/dist/globals/operations/local/restoreVersion.js.map +1 -1
  315. package/dist/globals/operations/local/update.d.ts +7 -9
  316. package/dist/globals/operations/local/update.d.ts.map +1 -1
  317. package/dist/globals/operations/local/update.js +1 -2
  318. package/dist/globals/operations/local/update.js.map +1 -1
  319. package/dist/globals/operations/update.d.ts +0 -1
  320. package/dist/globals/operations/update.d.ts.map +1 -1
  321. package/dist/globals/operations/update.js +52 -58
  322. package/dist/globals/operations/update.js.map +1 -1
  323. package/dist/index.bundled.d.ts +595 -368
  324. package/dist/index.d.ts +71 -26
  325. package/dist/index.d.ts.map +1 -1
  326. package/dist/index.js +54 -37
  327. package/dist/index.js.map +1 -1
  328. package/dist/kv/adapters/DatabaseKVAdapter.d.ts.map +1 -1
  329. package/dist/kv/adapters/DatabaseKVAdapter.js +1 -0
  330. package/dist/kv/adapters/DatabaseKVAdapter.js.map +1 -1
  331. package/dist/locked-documents/config.d.ts.map +1 -1
  332. package/dist/locked-documents/config.js +2 -1
  333. package/dist/locked-documents/config.js.map +1 -1
  334. package/dist/preferences/config.d.ts.map +1 -1
  335. package/dist/preferences/config.js +2 -1
  336. package/dist/preferences/config.js.map +1 -1
  337. package/dist/preferences/keys.d.ts +4 -0
  338. package/dist/preferences/keys.d.ts.map +1 -1
  339. package/dist/preferences/keys.js +4 -1
  340. package/dist/preferences/keys.js.map +1 -1
  341. package/dist/preferences/types.d.ts +15 -0
  342. package/dist/preferences/types.d.ts.map +1 -1
  343. package/dist/preferences/types.js +3 -1
  344. package/dist/preferences/types.js.map +1 -1
  345. package/dist/query-presets/config.d.ts.map +1 -1
  346. package/dist/query-presets/config.js +75 -35
  347. package/dist/query-presets/config.js.map +1 -1
  348. package/dist/query-presets/constraints.d.ts.map +1 -1
  349. package/dist/query-presets/constraints.js +2 -1
  350. package/dist/query-presets/constraints.js.map +1 -1
  351. package/dist/queues/config/collection.d.ts.map +1 -1
  352. package/dist/queues/config/collection.js +2 -1
  353. package/dist/queues/config/collection.js.map +1 -1
  354. package/dist/queues/config/generateJobsJSONSchemas.js +2 -2
  355. package/dist/queues/config/generateJobsJSONSchemas.js.map +1 -1
  356. package/dist/queues/config/global.d.ts.map +1 -1
  357. package/dist/queues/config/global.js +2 -1
  358. package/dist/queues/config/global.js.map +1 -1
  359. package/dist/types/index.d.ts +8 -3
  360. package/dist/types/index.d.ts.map +1 -1
  361. package/dist/types/index.js.map +1 -1
  362. package/dist/uploads/generateFileData.d.ts +2 -1
  363. package/dist/uploads/generateFileData.d.ts.map +1 -1
  364. package/dist/uploads/generateFileData.js +5 -2
  365. package/dist/uploads/generateFileData.js.map +1 -1
  366. package/dist/uploads/matchMimeType.d.ts +8 -0
  367. package/dist/uploads/matchMimeType.d.ts.map +1 -0
  368. package/dist/uploads/matchMimeType.js +19 -0
  369. package/dist/uploads/matchMimeType.js.map +1 -0
  370. package/dist/uploads/matchMimeType.spec.js +66 -0
  371. package/dist/uploads/matchMimeType.spec.js.map +1 -0
  372. package/dist/uploads/safeFetch.d.ts.map +1 -1
  373. package/dist/uploads/safeFetch.js +11 -5
  374. package/dist/uploads/safeFetch.js.map +1 -1
  375. package/dist/uploads/types.d.ts +21 -0
  376. package/dist/uploads/types.d.ts.map +1 -1
  377. package/dist/uploads/types.js.map +1 -1
  378. package/dist/utilities/addDataAndFileToRequest.d.ts.map +1 -1
  379. package/dist/utilities/addDataAndFileToRequest.js +6 -0
  380. package/dist/utilities/addDataAndFileToRequest.js.map +1 -1
  381. package/dist/utilities/appendDateTimezoneSelectFields.js +2 -2
  382. package/dist/utilities/appendDateTimezoneSelectFields.js.map +1 -1
  383. package/dist/utilities/configToJSONSchema.d.ts +36 -2
  384. package/dist/utilities/configToJSONSchema.d.ts.map +1 -1
  385. package/dist/utilities/configToJSONSchema.js +204 -84
  386. package/dist/utilities/configToJSONSchema.js.map +1 -1
  387. package/dist/utilities/configToJSONSchema.spec.js +534 -29
  388. package/dist/utilities/configToJSONSchema.spec.js.map +1 -1
  389. package/dist/utilities/createLocalReq.d.ts +2 -2
  390. package/dist/utilities/createLocalReq.d.ts.map +1 -1
  391. package/dist/utilities/createLocalReq.js.map +1 -1
  392. package/dist/utilities/createPayloadRequest.d.ts.map +1 -1
  393. package/dist/utilities/createPayloadRequest.js +1 -0
  394. package/dist/utilities/createPayloadRequest.js.map +1 -1
  395. package/dist/utilities/deepCopyObject.d.ts.map +1 -1
  396. package/dist/utilities/deepCopyObject.js +8 -0
  397. package/dist/utilities/deepCopyObject.js.map +1 -1
  398. package/dist/utilities/dependencies/dependencyChecker.js +1 -1
  399. package/dist/utilities/dependencies/dependencyChecker.js.map +1 -1
  400. package/dist/utilities/dependencies/getDependencies.d.ts.map +1 -1
  401. package/dist/utilities/dependencies/getDependencies.js +5 -5
  402. package/dist/utilities/dependencies/getDependencies.js.map +1 -1
  403. package/dist/utilities/dynamicImport.js +1 -1
  404. package/dist/utilities/dynamicImport.js.map +1 -1
  405. package/dist/utilities/filterDataToSelectedLocales.d.ts.map +1 -1
  406. package/dist/utilities/filterDataToSelectedLocales.js +5 -12
  407. package/dist/utilities/filterDataToSelectedLocales.js.map +1 -1
  408. package/dist/utilities/filterDataToSelectedLocales.spec.js +1 -2
  409. package/dist/utilities/filterDataToSelectedLocales.spec.js.map +1 -1
  410. package/dist/utilities/flattenAllFields.d.ts.map +1 -1
  411. package/dist/utilities/flattenAllFields.js +7 -22
  412. package/dist/utilities/flattenAllFields.js.map +1 -1
  413. package/dist/utilities/formatErrors.d.ts.map +1 -1
  414. package/dist/utilities/formatErrors.js +3 -1
  415. package/dist/utilities/formatErrors.js.map +1 -1
  416. package/dist/utilities/getEntityPermissions/getEntityPermissions.d.ts.map +1 -1
  417. package/dist/utilities/getEntityPermissions/getEntityPermissions.js +2 -0
  418. package/dist/utilities/getEntityPermissions/getEntityPermissions.js.map +1 -1
  419. package/dist/utilities/getEntityPermissions/populateFieldPermissions.d.ts +7 -1
  420. package/dist/utilities/getEntityPermissions/populateFieldPermissions.d.ts.map +1 -1
  421. package/dist/utilities/getEntityPermissions/populateFieldPermissions.js +24 -7
  422. package/dist/utilities/getEntityPermissions/populateFieldPermissions.js.map +1 -1
  423. package/dist/utilities/getFieldByPath.d.ts.map +1 -1
  424. package/dist/utilities/getFieldByPath.js +1 -1
  425. package/dist/utilities/getFieldByPath.js.map +1 -1
  426. package/dist/utilities/getRequestLanguage.d.ts +2 -2
  427. package/dist/utilities/getRequestLanguage.d.ts.map +1 -1
  428. package/dist/utilities/getRequestLanguage.js.map +1 -1
  429. package/dist/utilities/getVersionsConfig.js.map +1 -1
  430. package/dist/utilities/handleEndpoints.d.ts.map +1 -1
  431. package/dist/utilities/handleEndpoints.js +7 -3
  432. package/dist/utilities/handleEndpoints.js.map +1 -1
  433. package/dist/utilities/isURLAllowed.d.ts.map +1 -1
  434. package/dist/utilities/isURLAllowed.js +9 -3
  435. package/dist/utilities/isURLAllowed.js.map +1 -1
  436. package/dist/utilities/isURLAllowed.spec.js +78 -0
  437. package/dist/utilities/isURLAllowed.spec.js.map +1 -0
  438. package/dist/utilities/mergeLocalizedData.d.ts +14 -4
  439. package/dist/utilities/mergeLocalizedData.d.ts.map +1 -1
  440. package/dist/utilities/mergeLocalizedData.js +54 -46
  441. package/dist/utilities/mergeLocalizedData.js.map +1 -1
  442. package/dist/utilities/mergeLocalizedData.spec.js +23 -23
  443. package/dist/utilities/mergeLocalizedData.spec.js.map +1 -1
  444. package/dist/utilities/parseParams/index.d.ts +2 -5
  445. package/dist/utilities/parseParams/index.d.ts.map +1 -1
  446. package/dist/utilities/parseParams/index.js.map +1 -1
  447. package/dist/utilities/parseParams/index.spec.js +0 -9
  448. package/dist/utilities/parseParams/index.spec.js.map +1 -1
  449. package/dist/utilities/telemetry/events/adminInit.d.ts.map +1 -1
  450. package/dist/utilities/telemetry/events/adminInit.js +2 -3
  451. package/dist/utilities/telemetry/events/adminInit.js.map +1 -1
  452. package/dist/utilities/telemetry/events/serverInit.d.ts.map +1 -1
  453. package/dist/utilities/telemetry/events/serverInit.js +2 -3
  454. package/dist/utilities/telemetry/events/serverInit.js.map +1 -1
  455. package/dist/utilities/telemetry/index.d.ts +14 -3
  456. package/dist/utilities/telemetry/index.d.ts.map +1 -1
  457. package/dist/utilities/telemetry/index.js +6 -1
  458. package/dist/utilities/telemetry/index.js.map +1 -1
  459. package/dist/utilities/telemetry/index.spec.js +43 -0
  460. package/dist/utilities/telemetry/index.spec.js.map +1 -0
  461. package/dist/utilities/transformColumnPreferences.js +4 -2
  462. package/dist/utilities/transformColumnPreferences.js.map +1 -1
  463. package/dist/utilities/traverseFields.d.ts.map +1 -1
  464. package/dist/utilities/traverseFields.js +2 -4
  465. package/dist/utilities/traverseFields.js.map +1 -1
  466. package/dist/utilities/traverseForLocalizedFields.d.ts.map +1 -1
  467. package/dist/utilities/traverseForLocalizedFields.js +3 -0
  468. package/dist/utilities/traverseForLocalizedFields.js.map +1 -1
  469. package/dist/versions/baseFields.d.ts +1 -2
  470. package/dist/versions/baseFields.d.ts.map +1 -1
  471. package/dist/versions/baseFields.js +0 -13
  472. package/dist/versions/baseFields.js.map +1 -1
  473. package/dist/versions/buildCollectionFields.d.ts.map +1 -1
  474. package/dist/versions/buildCollectionFields.js +0 -2
  475. package/dist/versions/buildCollectionFields.js.map +1 -1
  476. package/dist/versions/buildGlobalFields.d.ts.map +1 -1
  477. package/dist/versions/buildGlobalFields.js +0 -2
  478. package/dist/versions/buildGlobalFields.js.map +1 -1
  479. package/dist/versions/buildSingleLocalePublishData.d.ts +32 -0
  480. package/dist/versions/buildSingleLocalePublishData.d.ts.map +1 -0
  481. package/dist/versions/buildSingleLocalePublishData.js +37 -0
  482. package/dist/versions/buildSingleLocalePublishData.js.map +1 -0
  483. package/dist/versions/saveVersion.d.ts +0 -2
  484. package/dist/versions/saveVersion.d.ts.map +1 -1
  485. package/dist/versions/saveVersion.js +12 -17
  486. package/dist/versions/saveVersion.js.map +1 -1
  487. package/dist/versions/schedule/job.d.ts.map +1 -1
  488. package/dist/versions/schedule/job.js +6 -10
  489. package/dist/versions/schedule/job.js.map +1 -1
  490. package/dist/versions/types.d.ts +2 -15
  491. package/dist/versions/types.d.ts.map +1 -1
  492. package/dist/versions/types.js.map +1 -1
  493. package/package.json +9 -6
  494. package/dist/database/migrations/templates/localizeStatus.d.ts +0 -10
  495. package/dist/database/migrations/templates/localizeStatus.d.ts.map +0 -1
  496. package/dist/database/migrations/templates/localizeStatus.js +0 -54
  497. package/dist/database/migrations/templates/localizeStatus.js.map +0 -1
  498. package/dist/fields/baseFields/slug/index.d.ts +0 -89
  499. package/dist/fields/baseFields/slug/index.d.ts.map +0 -1
  500. package/dist/fields/baseFields/slug/index.js +0 -81
  501. package/dist/fields/baseFields/slug/index.js.map +0 -1
  502. package/dist/versions/migrations/localizeStatus/index.d.ts +0 -12
  503. package/dist/versions/migrations/localizeStatus/index.d.ts.map +0 -1
  504. package/dist/versions/migrations/localizeStatus/index.js +0 -33
  505. package/dist/versions/migrations/localizeStatus/index.js.map +0 -1
  506. package/dist/versions/migrations/localizeStatus/mongo/down.d.ts +0 -9
  507. package/dist/versions/migrations/localizeStatus/mongo/down.d.ts.map +0 -1
  508. package/dist/versions/migrations/localizeStatus/mongo/down.js +0 -112
  509. package/dist/versions/migrations/localizeStatus/mongo/down.js.map +0 -1
  510. package/dist/versions/migrations/localizeStatus/mongo/index.d.ts +0 -8
  511. package/dist/versions/migrations/localizeStatus/mongo/index.d.ts.map +0 -1
  512. package/dist/versions/migrations/localizeStatus/mongo/index.js +0 -8
  513. package/dist/versions/migrations/localizeStatus/mongo/index.js.map +0 -1
  514. package/dist/versions/migrations/localizeStatus/mongo/up.d.ts +0 -9
  515. package/dist/versions/migrations/localizeStatus/mongo/up.d.ts.map +0 -1
  516. package/dist/versions/migrations/localizeStatus/mongo/up.js +0 -220
  517. package/dist/versions/migrations/localizeStatus/mongo/up.js.map +0 -1
  518. package/dist/versions/migrations/localizeStatus/sql/down.d.ts +0 -11
  519. package/dist/versions/migrations/localizeStatus/sql/down.d.ts.map +0 -1
  520. package/dist/versions/migrations/localizeStatus/sql/down.js +0 -213
  521. package/dist/versions/migrations/localizeStatus/sql/down.js.map +0 -1
  522. package/dist/versions/migrations/localizeStatus/sql/index.d.ts +0 -8
  523. package/dist/versions/migrations/localizeStatus/sql/index.d.ts.map +0 -1
  524. package/dist/versions/migrations/localizeStatus/sql/index.js +0 -8
  525. package/dist/versions/migrations/localizeStatus/sql/index.js.map +0 -1
  526. package/dist/versions/migrations/localizeStatus/sql/migrateMainCollection.d.ts +0 -13
  527. package/dist/versions/migrations/localizeStatus/sql/migrateMainCollection.d.ts.map +0 -1
  528. package/dist/versions/migrations/localizeStatus/sql/migrateMainCollection.js +0 -51
  529. package/dist/versions/migrations/localizeStatus/sql/migrateMainCollection.js.map +0 -1
  530. package/dist/versions/migrations/localizeStatus/sql/migrateMainGlobal.d.ts +0 -13
  531. package/dist/versions/migrations/localizeStatus/sql/migrateMainGlobal.d.ts.map +0 -1
  532. package/dist/versions/migrations/localizeStatus/sql/migrateMainGlobal.js +0 -54
  533. package/dist/versions/migrations/localizeStatus/sql/migrateMainGlobal.js.map +0 -1
  534. package/dist/versions/migrations/localizeStatus/sql/up.d.ts +0 -11
  535. package/dist/versions/migrations/localizeStatus/sql/up.d.ts.map +0 -1
  536. package/dist/versions/migrations/localizeStatus/sql/up.js +0 -277
  537. package/dist/versions/migrations/localizeStatus/sql/up.js.map +0 -1
  538. package/dist/versions/saveSnapshot.d.ts +0 -18
  539. package/dist/versions/saveSnapshot.d.ts.map +0 -1
  540. package/dist/versions/saveSnapshot.js +0 -38
  541. package/dist/versions/saveSnapshot.js.map +0 -1
@@ -1,11 +1,13 @@
1
1
  import { createHash } from 'crypto';
2
2
  import { MissingEditorProp } from '../errors/MissingEditorProp.js';
3
- import { fieldAffectsData } from '../fields/config/types.js';
3
+ import { fieldAffectsData, fieldIsVirtual } from '../fields/config/types.js';
4
4
  import { generateJobsJSONSchemas } from '../queues/config/generateJobsJSONSchemas.js';
5
5
  import { flattenAllFields } from './flattenAllFields.js';
6
6
  import { formatNames, toWords } from './formatLabels.js';
7
7
  import { getCollectionIDFieldTypes } from './getCollectionIDFieldTypes.js';
8
8
  import { optionsAreEqual } from './optionsAreEqual.js';
9
+ // Virtual fields (computed) and join fields (derived from the inverse relationship) are read-only.
10
+ const fieldIsInputExcluded = (field)=>field.type === 'join' || fieldIsVirtual(field);
9
11
  const fieldIsRequired = (field)=>{
10
12
  const isConditional = Boolean(field?.admin && field?.admin?.condition);
11
13
  if (isConditional) {
@@ -34,7 +36,7 @@ function generateEntitySchemas(entities) {
34
36
  ...entities
35
37
  ].reduce((acc, { slug })=>{
36
38
  acc[slug] = {
37
- $ref: `#/definitions/${slug}`
39
+ $ref: `#/$defs/${slug}`
38
40
  };
39
41
  return acc;
40
42
  }, {});
@@ -50,7 +52,23 @@ function generateEntitySelectSchemas(entities) {
50
52
  ...entities
51
53
  ].reduce((acc, { slug })=>{
52
54
  acc[slug] = {
53
- $ref: `#/definitions/${slug}_select`
55
+ $ref: `#/$defs/${slug}_select`
56
+ };
57
+ return acc;
58
+ }, {});
59
+ return {
60
+ type: 'object',
61
+ additionalProperties: false,
62
+ properties,
63
+ required: Object.keys(properties)
64
+ };
65
+ }
66
+ function generateEntityInputSchemas(entities) {
67
+ const properties = [
68
+ ...entities
69
+ ].reduce((acc, { slug })=>{
70
+ acc[slug] = {
71
+ $ref: `#/$defs/${slug}_input`
54
72
  };
55
73
  return acc;
56
74
  }, {});
@@ -170,7 +188,7 @@ function generateWidgetSchemas({ collectionIDFieldTypes, config, forceInlineBloc
170
188
  ]
171
189
  };
172
190
  properties[widget.slug] = {
173
- $ref: `#/definitions/${definition}`
191
+ $ref: `#/$defs/${definition}`
174
192
  };
175
193
  }
176
194
  return {
@@ -249,7 +267,7 @@ function generateAuthEntitySchemas(entities) {
249
267
  ...entities
250
268
  ].filter(({ auth })=>Boolean(auth)).map(({ slug })=>{
251
269
  return {
252
- $ref: `#/definitions/${slug}`
270
+ $ref: `#/$defs/${slug}`
253
271
  };
254
272
  }, {});
255
273
  return {
@@ -308,11 +326,35 @@ function entityOrFieldToJsDocs({ entity, i18n }) {
308
326
  }
309
327
  return description;
310
328
  }
311
- export function fieldsToJSONSchema({ collectionIDFieldTypes, config, fields, forceInlineBlocks, i18n, interfaceNameDefinitions, typeStringDefinitions }) {
329
+ export function fieldsToJSONSchema({ collectionIDFieldTypes, config, fields, forceInlineBlocks, i18n, interfaceNameDefinitions, typeStringDefinitions, variant = 'output' }) {
312
330
  const requiredFieldNames = new Set();
331
+ // Registers a named-interface (group/tab/array/select) def and returns its `$ref` name. For input,
332
+ // shares the read-shaped def when byte-identical; otherwise registers an `Input`-suffixed twin so
333
+ // the write shape doesn't collide with the read one.
334
+ const registerNamedInterface = (name, schema)=>{
335
+ if (variant === 'input') {
336
+ const outputDef = interfaceNameDefinitions.get(name);
337
+ if (outputDef && JSON.stringify(outputDef) === JSON.stringify(schema)) {
338
+ return name;
339
+ }
340
+ const inputName = `${name}Input`;
341
+ interfaceNameDefinitions.set(inputName, schema);
342
+ return inputName;
343
+ }
344
+ interfaceNameDefinitions.set(name, schema);
345
+ return name;
346
+ };
313
347
  return {
314
348
  properties: Object.fromEntries(fields.reduce((fieldSchemas, field, index)=>{
349
+ if (variant === 'input' && fieldIsInputExcluded(field)) {
350
+ return fieldSchemas;
351
+ }
352
+ const hasDefaultValue = 'defaultValue' in field && field.defaultValue !== undefined;
353
+ // `isRequired` only controls nullability (a non-required field gets `| null`). It does not
354
+ // change between variants, so e.g. a defaulted field stays non-null on input.
315
355
  const isRequired = fieldAffectsData(field) && fieldIsRequired(field);
356
+ // `isOptionalOnInput` controls the `?`: on input, defaulted fields can be omitted.
357
+ const isOptionalOnInput = variant === 'input' && hasDefaultValue;
316
358
  const fieldDescription = entityOrFieldToJsDocs({
317
359
  entity: field,
318
360
  i18n
@@ -338,14 +380,14 @@ export function fieldsToJSONSchema({ collectionIDFieldTypes, config, fields, for
338
380
  forceInlineBlocks,
339
381
  i18n,
340
382
  interfaceNameDefinitions,
341
- typeStringDefinitions
383
+ typeStringDefinitions,
384
+ variant
342
385
  })
343
386
  }
344
387
  };
345
388
  if (field.interfaceName) {
346
- interfaceNameDefinitions.set(field.interfaceName, fieldSchema);
347
389
  fieldSchema = {
348
- $ref: `#/definitions/${field.interfaceName}`
390
+ $ref: `#/$defs/${registerNamedInterface(field.interfaceName, fieldSchema)}`
349
391
  };
350
392
  }
351
393
  break;
@@ -355,12 +397,12 @@ export function fieldsToJSONSchema({ collectionIDFieldTypes, config, fields, for
355
397
  // Check for a case where no blocks are provided.
356
398
  // We need to generate an empty array for this case, note that JSON schema 4 doesn't support empty arrays
357
399
  // so the best we can get is `unknown[]`
358
- const hasBlocks = Boolean(field.blockReferences ? field.blockReferences.length : field.blocks.length);
400
+ const hasBlocks = Boolean(field.blocks.length);
359
401
  fieldSchema = {
360
402
  ...baseFieldSchema,
361
403
  type: withNullableJSONSchemaType('array', isRequired),
362
404
  items: hasBlocks ? {
363
- oneOf: (field.blockReferences ?? field.blocks).map((blockOrReference)=>{
405
+ oneOf: field.blocks.map((blockOrReference)=>{
364
406
  const block = typeof blockOrReference === 'string' ? config?.blocks?.find((b)=>b.slug === blockOrReference) : blockOrReference;
365
407
  if (!block) {
366
408
  return {};
@@ -372,7 +414,8 @@ export function fieldsToJSONSchema({ collectionIDFieldTypes, config, fields, for
372
414
  forceInlineBlocks,
373
415
  i18n,
374
416
  interfaceNameDefinitions,
375
- typeStringDefinitions
417
+ typeStringDefinitions,
418
+ variant
376
419
  });
377
420
  const blockSchema = {
378
421
  type: 'object',
@@ -389,7 +432,7 @@ export function fieldsToJSONSchema({ collectionIDFieldTypes, config, fields, for
389
432
  ]
390
433
  };
391
434
  return forceInlineBlocks ? blockSchema : {
392
- $ref: `#/definitions/${registerBlockInterface(block, blockSchema, interfaceNameDefinitions)}`
435
+ $ref: `#/$defs/${registerBlockInterface(block, blockSchema, interfaceNameDefinitions, variant)}`
393
436
  };
394
437
  })
395
438
  } : {}
@@ -407,6 +450,7 @@ export function fieldsToJSONSchema({ collectionIDFieldTypes, config, fields, for
407
450
  case 'code':
408
451
  case 'date':
409
452
  case 'email':
453
+ case 'slug':
410
454
  case 'textarea':
411
455
  {
412
456
  fieldSchema = {
@@ -429,13 +473,13 @@ export function fieldsToJSONSchema({ collectionIDFieldTypes, config, fields, for
429
473
  forceInlineBlocks,
430
474
  i18n,
431
475
  interfaceNameDefinitions,
432
- typeStringDefinitions
476
+ typeStringDefinitions,
477
+ variant
433
478
  })
434
479
  };
435
480
  if (field.interfaceName) {
436
- interfaceNameDefinitions.set(field.interfaceName, fieldSchema);
437
481
  fieldSchema = {
438
- $ref: `#/definitions/${field.interfaceName}`
482
+ $ref: `#/$defs/${registerNamedInterface(field.interfaceName, fieldSchema)}`
439
483
  };
440
484
  }
441
485
  }
@@ -459,7 +503,7 @@ export function fieldsToJSONSchema({ collectionIDFieldTypes, config, fields, for
459
503
  type: collectionIDFieldTypes[collection]
460
504
  },
461
505
  {
462
- $ref: `#/definitions/${collection}`
506
+ $ref: `#/$defs/${collection}`
463
507
  }
464
508
  ]
465
509
  }
@@ -477,7 +521,7 @@ export function fieldsToJSONSchema({ collectionIDFieldTypes, config, fields, for
477
521
  type: collectionIDFieldTypes[field.collection]
478
522
  },
479
523
  {
480
- $ref: `#/definitions/${field.collection}`
524
+ $ref: `#/$defs/${field.collection}`
481
525
  }
482
526
  ]
483
527
  };
@@ -560,9 +604,8 @@ export function fieldsToJSONSchema({ collectionIDFieldTypes, config, fields, for
560
604
  enum: buildOptionEnums(field.options)
561
605
  };
562
606
  if (field.interfaceName) {
563
- interfaceNameDefinitions.set(field.interfaceName, fieldSchema);
564
607
  fieldSchema = {
565
- $ref: `#/definitions/${field.interfaceName}`
608
+ $ref: `#/$defs/${registerNamedInterface(field.interfaceName, fieldSchema)}`
566
609
  };
567
610
  }
568
611
  break;
@@ -570,6 +613,19 @@ export function fieldsToJSONSchema({ collectionIDFieldTypes, config, fields, for
570
613
  case 'relationship':
571
614
  case 'upload':
572
615
  {
616
+ // Read: an ID or the populated doc. Input: only the ID, so drop the `$ref`.
617
+ const relationValueSchema = (relation)=>variant === 'input' ? {
618
+ type: collectionIDFieldTypes[relation]
619
+ } : {
620
+ oneOf: [
621
+ {
622
+ type: collectionIDFieldTypes[relation]
623
+ },
624
+ {
625
+ $ref: `#/$defs/${relation}`
626
+ }
627
+ ]
628
+ };
573
629
  if (Array.isArray(field.relationTo)) {
574
630
  if (field.hasMany) {
575
631
  fieldSchema = {
@@ -584,16 +640,7 @@ export function fieldsToJSONSchema({ collectionIDFieldTypes, config, fields, for
584
640
  relationTo: {
585
641
  const: relation
586
642
  },
587
- value: {
588
- oneOf: [
589
- {
590
- type: collectionIDFieldTypes[relation]
591
- },
592
- {
593
- $ref: `#/definitions/${relation}`
594
- }
595
- ]
596
- }
643
+ value: relationValueSchema(relation)
597
644
  },
598
645
  required: [
599
646
  'value',
@@ -614,16 +661,7 @@ export function fieldsToJSONSchema({ collectionIDFieldTypes, config, fields, for
614
661
  relationTo: {
615
662
  const: relation
616
663
  },
617
- value: {
618
- oneOf: [
619
- {
620
- type: collectionIDFieldTypes[relation]
621
- },
622
- {
623
- $ref: `#/definitions/${relation}`
624
- }
625
- ]
626
- }
664
+ value: relationValueSchema(relation)
627
665
  },
628
666
  required: [
629
667
  'value',
@@ -637,17 +675,24 @@ export function fieldsToJSONSchema({ collectionIDFieldTypes, config, fields, for
637
675
  fieldSchema = {
638
676
  ...baseFieldSchema,
639
677
  type: withNullableJSONSchemaType('array', isRequired),
640
- items: {
678
+ items: variant === 'input' ? {
679
+ type: collectionIDFieldTypes[field.relationTo]
680
+ } : {
641
681
  oneOf: [
642
682
  {
643
683
  type: collectionIDFieldTypes[field.relationTo]
644
684
  },
645
685
  {
646
- $ref: `#/definitions/${field.relationTo}`
686
+ $ref: `#/$defs/${field.relationTo}`
647
687
  }
648
688
  ]
649
689
  }
650
690
  };
691
+ } else if (variant === 'input') {
692
+ fieldSchema = {
693
+ ...baseFieldSchema,
694
+ type: withNullableJSONSchemaType(collectionIDFieldTypes[field.relationTo], isRequired)
695
+ };
651
696
  } else {
652
697
  fieldSchema = {
653
698
  ...baseFieldSchema,
@@ -656,7 +701,7 @@ export function fieldsToJSONSchema({ collectionIDFieldTypes, config, fields, for
656
701
  type: withNullableJSONSchemaType(collectionIDFieldTypes[field.relationTo], isRequired)
657
702
  },
658
703
  {
659
- $ref: `#/definitions/${field.relationTo}`
704
+ $ref: `#/$defs/${field.relationTo}`
660
705
  }
661
706
  ]
662
707
  };
@@ -682,7 +727,8 @@ export function fieldsToJSONSchema({ collectionIDFieldTypes, config, fields, for
682
727
  i18n,
683
728
  interfaceNameDefinitions,
684
729
  isRequired,
685
- typeStringDefinitions
730
+ typeStringDefinitions,
731
+ variant
686
732
  })
687
733
  };
688
734
  } else {
@@ -710,7 +756,7 @@ export function fieldsToJSONSchema({ collectionIDFieldTypes, config, fields, for
710
756
  // only if the field's options match the global config
711
757
  if (isTimezoneField && hasMatchingGlobalTimezones) {
712
758
  fieldSchema = {
713
- $ref: `#/definitions/supportedTimezones`
759
+ $ref: `#/$defs/supportedTimezones`
714
760
  };
715
761
  } else {
716
762
  if (field.hasMany) {
@@ -735,9 +781,8 @@ export function fieldsToJSONSchema({ collectionIDFieldTypes, config, fields, for
735
781
  }
736
782
  }
737
783
  if (field.interfaceName) {
738
- interfaceNameDefinitions.set(field.interfaceName, fieldSchema);
739
784
  fieldSchema = {
740
- $ref: `#/definitions/${field.interfaceName}`
785
+ $ref: `#/$defs/${registerNamedInterface(field.interfaceName, fieldSchema)}`
741
786
  };
742
787
  }
743
788
  break;
@@ -757,13 +802,13 @@ export function fieldsToJSONSchema({ collectionIDFieldTypes, config, fields, for
757
802
  forceInlineBlocks,
758
803
  i18n,
759
804
  interfaceNameDefinitions,
760
- typeStringDefinitions
805
+ typeStringDefinitions,
806
+ variant
761
807
  })
762
808
  };
763
809
  if (field.interfaceName) {
764
- interfaceNameDefinitions.set(field.interfaceName, fieldSchema);
765
810
  fieldSchema = {
766
- $ref: `#/definitions/${field.interfaceName}`
811
+ $ref: `#/$defs/${registerNamedInterface(field.interfaceName, fieldSchema)}`
767
812
  };
768
813
  }
769
814
  break;
@@ -792,12 +837,13 @@ export function fieldsToJSONSchema({ collectionIDFieldTypes, config, fields, for
792
837
  if ('jsonSchema' in field && field?.jsonSchema?.length) {
793
838
  for (const schema of field.jsonSchema){
794
839
  fieldSchema = schema({
795
- jsonSchema: fieldSchema
840
+ jsonSchema: fieldSchema,
841
+ variant
796
842
  });
797
843
  }
798
844
  }
799
845
  if (fieldSchema && fieldAffectsData(field)) {
800
- if (isRequired && fieldSchema.required !== false) {
846
+ if (isRequired && !isOptionalOnInput && fieldSchema.required !== false) {
801
847
  requiredFieldNames.add(field.name);
802
848
  }
803
849
  fieldSchemas.set(field.name, fieldSchema);
@@ -808,17 +854,21 @@ export function fieldsToJSONSchema({ collectionIDFieldTypes, config, fields, for
808
854
  };
809
855
  }
810
856
  // This function is part of the public API and is exported through payload/utilities
811
- export function entityToJSONSchema(config, entity, interfaceNameDefinitions, defaultIDType, typeStringDefinitions, collectionIDFieldTypes, i18n, forceInlineBlocks) {
857
+ export function entityToJSONSchema(config, entity, interfaceNameDefinitions, defaultIDType, typeStringDefinitions, collectionIDFieldTypes, i18n, forceInlineBlocks, variant = 'output') {
812
858
  if (!collectionIDFieldTypes) {
813
859
  collectionIDFieldTypes = getCollectionIDFieldTypes({
814
860
  config,
815
861
  defaultIDType
816
862
  });
817
863
  }
818
- const title = entity.typescript?.interface ? entity.typescript.interface : formatNames(entity.slug).singular;
864
+ const isInput = variant === 'input';
865
+ const baseTitle = entity.typescript?.interface ? entity.typescript.interface : formatNames(entity.slug).singular;
866
+ const title = isInput ? `${baseTitle}Input` : baseTitle;
819
867
  let mutableFields = [
820
868
  ...entity.flattenedFields
821
869
  ];
870
+ // `required: true` keeps `id` non-null. On input it's made optional further below (it's dropped
871
+ // from `required`) so you can omit it or pass a custom ID, but it's still never `null`.
822
872
  const idField = {
823
873
  name: 'id',
824
874
  type: defaultIDType,
@@ -826,20 +876,18 @@ export function entityToJSONSchema(config, entity, interfaceNameDefinitions, def
826
876
  };
827
877
  const customIdField = mutableFields.find((field)=>field.name === 'id');
828
878
  if (customIdField && customIdField.type !== 'group' && customIdField.type !== 'tab') {
829
- mutableFields = mutableFields.map((field)=>{
830
- if (field === customIdField) {
831
- return {
832
- ...field,
833
- required: true
834
- };
835
- }
836
- return field;
837
- });
879
+ mutableFields = mutableFields.map((field)=>field === customIdField ? {
880
+ ...field,
881
+ required: true
882
+ } : field);
838
883
  } else {
839
884
  mutableFields.unshift(idField);
840
885
  }
841
- // mark timestamp fields required
842
- if ('timestamps' in entity && entity.timestamps !== false) {
886
+ if (isInput) {
887
+ // Managed by Payload, not set by a client.
888
+ mutableFields = mutableFields.filter((field)=>field.name !== 'createdAt' && field.name !== 'updatedAt' && field.name !== '_status');
889
+ } else if ('timestamps' in entity && entity.timestamps !== false) {
890
+ // mark timestamp fields required
843
891
  mutableFields = mutableFields.map((field)=>{
844
892
  if (field.name === 'createdAt' || field.name === 'updatedAt') {
845
893
  return {
@@ -864,10 +912,16 @@ export function entityToJSONSchema(config, entity, interfaceNameDefinitions, def
864
912
  forceInlineBlocks,
865
913
  i18n,
866
914
  interfaceNameDefinitions,
867
- typeStringDefinitions
915
+ typeStringDefinitions,
916
+ variant
868
917
  });
869
- // Add collection property to auth collections
870
- if (isAuthCollection) {
918
+ // On input, `id` is optional (omit it, or pass a custom ID). Removing it from `required` makes
919
+ // it optional without making it nullable.
920
+ if (isInput && Array.isArray(fieldsSchema.required)) {
921
+ fieldsSchema.required = fieldsSchema.required.filter((name)=>name !== 'id');
922
+ }
923
+ // The `User`-union discriminator (read-side, e.g. `req.user`); not part of create/update data.
924
+ if (isAuthCollection && !isInput) {
871
925
  fieldsSchema.properties = {
872
926
  ...fieldsSchema.properties,
873
927
  collection: {
@@ -897,6 +951,47 @@ export function entityToJSONSchema(config, entity, interfaceNameDefinitions, def
897
951
  }
898
952
  return jsonSchema;
899
953
  }
954
+ /**
955
+ * Like {@link entityToJSONSchema}, but returns a standalone schema for one collection or global:
956
+ * the entity plus only the `$defs` it actually uses, so it resolves on its own rather than
957
+ * as part of the whole config schema.
958
+ *
959
+ * Relationship/upload `$ref`s to other collections are left in place - the caller handles those.
960
+ * (The `input` variant reduces relationships to IDs, so only rich-text node `$defs` still ref them.)
961
+ */ export function entityToStandaloneJSONSchema({ config, defaultIDType, entity, i18n, variant = 'output' }) {
962
+ const definitions = new Map();
963
+ // entityToJSONSchema fills `definitions` with everything the fields reference (node unions, blocks).
964
+ const schema = entityToJSONSchema(config, entity, definitions, defaultIDType, new Set(), undefined, i18n, true, variant);
965
+ // Timezone fields `$ref` supportedTimezones, which lives on the root config schema, so add it here.
966
+ const supportedTimezones = config.admin?.timezones?.supportedTimezones;
967
+ if (supportedTimezones?.length && schemaHasRef([
968
+ schema,
969
+ ...definitions.values()
970
+ ], '#/$defs/supportedTimezones')) {
971
+ definitions.set('supportedTimezones', timezonesToJSONSchema(supportedTimezones));
972
+ }
973
+ return {
974
+ $schema: 'https://json-schema.org/draft/2020-12/schema',
975
+ ...schema,
976
+ $defs: Object.fromEntries(definitions)
977
+ };
978
+ }
979
+ /**
980
+ * Recursive function that returns true if
981
+ * `node` has a `$ref` to `ref` somewhere inside it.
982
+ * */ function schemaHasRef(node, ref) {
983
+ if (Array.isArray(node)) {
984
+ return node.some((child)=>schemaHasRef(child, ref));
985
+ }
986
+ if (node && typeof node === 'object') {
987
+ const obj = node;
988
+ if (obj.$ref === ref) {
989
+ return true;
990
+ }
991
+ return Object.values(obj).some((value)=>schemaHasRef(value, ref));
992
+ }
993
+ return false;
994
+ }
900
995
  export function fieldsToSelectJSONSchema({ config, fields, interfaceNameDefinitions }) {
901
996
  const schema = {
902
997
  type: 'object',
@@ -918,7 +1013,7 @@ export function fieldsToSelectJSONSchema({ config, fields, interfaceNameDefiniti
918
1013
  const definition = `${field.interfaceName}_select`;
919
1014
  interfaceNameDefinitions.set(definition, fieldSchema);
920
1015
  fieldSchema = {
921
- $ref: `#/definitions/${definition}`
1016
+ $ref: `#/$defs/${definition}`
922
1017
  };
923
1018
  }
924
1019
  schema.properties[field.name] = {
@@ -938,7 +1033,7 @@ export function fieldsToSelectJSONSchema({ config, fields, interfaceNameDefiniti
938
1033
  additionalProperties: false,
939
1034
  properties: {}
940
1035
  };
941
- for (const block of field.blockReferences ?? field.blocks){
1036
+ for (const block of field.blocks){
942
1037
  if (typeof block === 'string') {
943
1038
  continue; // TODO
944
1039
  }
@@ -951,7 +1046,7 @@ export function fieldsToSelectJSONSchema({ config, fields, interfaceNameDefiniti
951
1046
  const definition = `${block.interfaceName}_select`;
952
1047
  interfaceNameDefinitions.set(definition, blockSchema);
953
1048
  blockSchema = {
954
- $ref: `#/definitions/${definition}`
1049
+ $ref: `#/$defs/${definition}`
955
1050
  };
956
1051
  }
957
1052
  blocksSchema.properties[block.slug] = {
@@ -1153,7 +1248,7 @@ function generateAuthOperationSchemas(collections) {
1153
1248
  const properties = collections.reduce((acc, collection)=>{
1154
1249
  if (collection.auth) {
1155
1250
  acc[collection.slug] = {
1156
- $ref: `#/definitions/auth/${collection.slug}`
1251
+ $ref: `#/$defs/auth/${collection.slug}`
1157
1252
  };
1158
1253
  }
1159
1254
  return acc;
@@ -1169,14 +1264,26 @@ const hashBlockSchema = (schema)=>createHash('sha256').update(JSON.stringify(sch
1169
1264
  /**
1170
1265
  * Registers a block's schema as a top-level definition and returns its name.
1171
1266
  *
1172
- * The name is the block's `interfaceName`, or a PascalCase form of its slug. If a different
1173
- * block already uses that name, this one gets a content-hash suffix (`Hero_3F2A1B0C`) so the
1174
- * two don't overwrite each other. Registering the same block shape again reuses its name.
1175
- */ function registerBlockInterface(block, blockSchema, interfaceNameDefinitions) {
1176
- const baseName = block.interfaceName ?? toWords(block.slug, true);
1267
+ * The name is the block's `interfaceName`, or a PascalCase form of its slug. If a different block
1268
+ * already uses that name - whether it was auto-generated or an explicit `interfaceName` - this one
1269
+ * gets a content-hash suffix (`Hero_3F2A1B0C`) so the two don't overwrite each other. Registering
1270
+ * the same block shape again reuses its name.
1271
+ *
1272
+ * The `input` variant adds an `Input` suffix (`HeroInput`) - unless the read-shaped def is already
1273
+ * registered with byte-identical content (a block with nothing that differs between input and
1274
+ * output), in which case it's shared as-is rather than emitting a redundant twin.
1275
+ */ export function registerBlockInterface(block, blockSchema, interfaceNameDefinitions, variant = 'output') {
1276
+ const rawName = block.interfaceName ?? toWords(block.slug, true);
1277
+ if (variant === 'input') {
1278
+ const outputDef = interfaceNameDefinitions.get(rawName);
1279
+ if (outputDef && hashBlockSchema(outputDef) === hashBlockSchema(blockSchema)) {
1280
+ return rawName;
1281
+ }
1282
+ }
1283
+ const baseName = variant === 'input' ? `${rawName}Input` : rawName;
1177
1284
  const existing = interfaceNameDefinitions.get(baseName);
1178
- // Use the clean name if it is free, or if the block sets an explicit interfaceName.
1179
- if (!existing || block.interfaceName) {
1285
+ // The name is free - claim it.
1286
+ if (!existing) {
1180
1287
  interfaceNameDefinitions.set(baseName, blockSchema);
1181
1288
  return baseName;
1182
1289
  }
@@ -1185,7 +1292,7 @@ const hashBlockSchema = (schema)=>createHash('sha256').update(JSON.stringify(sch
1185
1292
  if (hashBlockSchema(existing) === hash) {
1186
1293
  return baseName;
1187
1294
  }
1188
- // A different block already owns the clean name. Disambiguate this one with its hash.
1295
+ // A different block already owns the name. Disambiguate this one with its hash.
1189
1296
  blockSchema.description = `Multiple blocks resolve to the \`${baseName}\` interface with different fields, so a content hash is appended to keep the generated types stable and unambiguous. Set a unique \`interfaceName\` on the block to choose the name yourself. See https://payloadcms.com/docs/typescript/generating-types#block-interface-name-collisions`;
1190
1297
  const uniqueName = `${baseName}_${hash}`;
1191
1298
  interfaceNameDefinitions.set(uniqueName, blockSchema);
@@ -1220,8 +1327,12 @@ const hashBlockSchema = (schema)=>createHash('sha256').update(JSON.stringify(sch
1220
1327
  entity: collection
1221
1328
  }))
1222
1329
  ];
1330
+ const generateInputTypes = config.typescript?.generateInputTypes === true;
1223
1331
  const entityDefinitions = entities.reduce((acc, { type, entity })=>{
1224
1332
  acc[entity.slug] = entityToJSONSchema(config, entity, interfaceNameDefinitions, defaultIDType, typeStringDefinitions, collectionIDFieldTypes, i18n, forceInlineBlocks);
1333
+ if (generateInputTypes) {
1334
+ acc[`${entity.slug}_input`] = entityToJSONSchema(config, entity, interfaceNameDefinitions, defaultIDType, typeStringDefinitions, collectionIDFieldTypes, i18n, forceInlineBlocks, 'input');
1335
+ }
1225
1336
  const select = fieldsToSelectJSONSchema({
1226
1337
  config,
1227
1338
  fields: entity.flattenedFields,
@@ -1289,20 +1400,21 @@ const hashBlockSchema = (schema)=>createHash('sha256').update(JSON.stringify(sch
1289
1400
  ]
1290
1401
  };
1291
1402
  blocksDefinition.properties[block.slug] = {
1292
- $ref: `#/definitions/${registerBlockInterface(block, blockSchema, interfaceNameDefinitions)}`
1403
+ $ref: `#/$defs/${registerBlockInterface(block, blockSchema, interfaceNameDefinitions)}`
1293
1404
  };
1294
1405
  blocksDefinition.required.push(block.slug);
1295
1406
  }
1296
1407
  }
1297
1408
  let jsonSchema = {
1298
- additionalProperties: false,
1299
- definitions: {
1409
+ $defs: {
1300
1410
  supportedTimezones: timezoneDefinitions,
1301
1411
  ...entityDefinitions,
1302
1412
  ...widgetSchemas.definitions,
1303
1413
  ...Object.fromEntries(interfaceNameDefinitions),
1304
1414
  ...authOperationDefinitions
1305
1415
  },
1416
+ $schema: 'https://json-schema.org/draft/2020-12/schema',
1417
+ additionalProperties: false,
1306
1418
  // These properties here will be very simple, as all the complexity is in the definitions. These are just the properties for the top-level `Config` type
1307
1419
  type: 'object',
1308
1420
  properties: {
@@ -1317,6 +1429,10 @@ const hashBlockSchema = (schema)=>createHash('sha256').update(JSON.stringify(sch
1317
1429
  globalsSelect: generateEntitySelectSchemas(config.globals || []),
1318
1430
  locale: generateLocaleEntitySchemas(config.localization),
1319
1431
  widgets: widgetSchemas.schema,
1432
+ ...generateInputTypes ? {
1433
+ collectionsInput: generateEntityInputSchemas(config.collections || []),
1434
+ globalsInput: generateEntityInputSchemas(config.globals || [])
1435
+ } : {},
1320
1436
  ...config.typescript?.strictDraftTypes ? {
1321
1437
  strictDraftTypes: {
1322
1438
  type: 'boolean',
@@ -1333,6 +1449,10 @@ const hashBlockSchema = (schema)=>createHash('sha256').update(JSON.stringify(sch
1333
1449
  'collectionsSelect',
1334
1450
  'collectionsJoins',
1335
1451
  'globalsSelect',
1452
+ ...generateInputTypes ? [
1453
+ 'collectionsInput',
1454
+ 'globalsInput'
1455
+ ] : [],
1336
1456
  ...config.typescript?.strictDraftTypes ? [
1337
1457
  'strictDraftTypes'
1338
1458
  ] : [],
@@ -1347,7 +1467,7 @@ const hashBlockSchema = (schema)=>createHash('sha256').update(JSON.stringify(sch
1347
1467
  };
1348
1468
  if (jobsSchemas.definitions?.size) {
1349
1469
  for (const [key, value] of jobsSchemas.definitions){
1350
- jsonSchema.definitions[key] = value;
1470
+ jsonSchema.$defs[key] = value;
1351
1471
  }
1352
1472
  }
1353
1473
  if (jobsSchemas.properties) {