payload 4.0.0-internal.40de3ec → 4.0.0-internal.45cfa3d

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 (381) hide show
  1. package/LICENSE.md +1 -1
  2. package/bin.js +11 -0
  3. package/dist/admin/RichText.d.ts +1 -21
  4. package/dist/admin/RichText.d.ts.map +1 -1
  5. package/dist/admin/RichText.js.map +1 -1
  6. package/dist/admin/fields/Row.d.ts +2 -2
  7. package/dist/admin/fields/Row.d.ts.map +1 -1
  8. package/dist/admin/fields/Row.js.map +1 -1
  9. package/dist/admin/forms/Description.d.ts +2 -2
  10. package/dist/admin/forms/Description.d.ts.map +1 -1
  11. package/dist/admin/forms/Description.js.map +1 -1
  12. package/dist/admin/forms/Field.d.ts +3 -5
  13. package/dist/admin/forms/Field.d.ts.map +1 -1
  14. package/dist/admin/forms/Field.js.map +1 -1
  15. package/dist/admin/forms/Form.d.ts +0 -29
  16. package/dist/admin/forms/Form.d.ts.map +1 -1
  17. package/dist/admin/forms/Form.js.map +1 -1
  18. package/dist/admin/types.d.ts +2 -1
  19. package/dist/admin/types.d.ts.map +1 -1
  20. package/dist/admin/types.js.map +1 -1
  21. package/dist/admin/views/document.d.ts +0 -4
  22. package/dist/admin/views/document.d.ts.map +1 -1
  23. package/dist/admin/views/document.js.map +1 -1
  24. package/dist/admin/views/list.d.ts +5 -0
  25. package/dist/admin/views/list.d.ts.map +1 -1
  26. package/dist/admin/views/list.js.map +1 -1
  27. package/dist/auth/baseFields/apiKey.d.ts +10 -2
  28. package/dist/auth/baseFields/apiKey.d.ts.map +1 -1
  29. package/dist/auth/baseFields/apiKey.js +35 -24
  30. package/dist/auth/baseFields/apiKey.js.map +1 -1
  31. package/dist/auth/getAuthFields.js +2 -2
  32. package/dist/auth/getAuthFields.js.map +1 -1
  33. package/dist/auth/operations/auth.d.ts +2 -2
  34. package/dist/auth/operations/auth.d.ts.map +1 -1
  35. package/dist/auth/operations/auth.js.map +1 -1
  36. package/dist/auth/operations/login.d.ts +2 -1
  37. package/dist/auth/operations/login.d.ts.map +1 -1
  38. package/dist/auth/operations/login.js.map +1 -1
  39. package/dist/auth/operations/me.js.map +1 -1
  40. package/dist/auth/operations/refresh.d.ts.map +1 -1
  41. package/dist/auth/operations/refresh.js +9 -3
  42. package/dist/auth/operations/refresh.js.map +1 -1
  43. package/dist/auth/operations/resetPassword.d.ts.map +1 -1
  44. package/dist/auth/operations/resetPassword.js.map +1 -1
  45. package/dist/auth/sendVerificationEmail.d.ts +2 -2
  46. package/dist/auth/sendVerificationEmail.d.ts.map +1 -1
  47. package/dist/auth/sendVerificationEmail.js +1 -1
  48. package/dist/auth/sendVerificationEmail.js.map +1 -1
  49. package/dist/auth/sessions.d.ts +4 -5
  50. package/dist/auth/sessions.d.ts.map +1 -1
  51. package/dist/auth/sessions.js +5 -3
  52. package/dist/auth/sessions.js.map +1 -1
  53. package/dist/auth/strategies/apiKey.js.map +1 -1
  54. package/dist/auth/strategies/local/incrementLoginAttempts.d.ts +2 -2
  55. package/dist/auth/strategies/local/incrementLoginAttempts.d.ts.map +1 -1
  56. package/dist/auth/strategies/local/incrementLoginAttempts.js +1 -1
  57. package/dist/auth/strategies/local/incrementLoginAttempts.js.map +1 -1
  58. package/dist/auth/types.d.ts +28 -21
  59. package/dist/auth/types.d.ts.map +1 -1
  60. package/dist/auth/types.js.map +1 -1
  61. package/dist/bin/generateImportMap/iterateCollections.d.ts.map +1 -1
  62. package/dist/bin/generateImportMap/iterateCollections.js +11 -0
  63. package/dist/bin/generateImportMap/iterateCollections.js.map +1 -1
  64. package/dist/bin/generateImportMap/iterateConfig.d.ts.map +1 -1
  65. package/dist/bin/generateImportMap/iterateConfig.js +12 -0
  66. package/dist/bin/generateImportMap/iterateConfig.js.map +1 -1
  67. package/dist/bin/generateImportMap/utilities/resolveImportMapFilePath.d.ts.map +1 -1
  68. package/dist/bin/generateImportMap/utilities/resolveImportMapFilePath.js +11 -3
  69. package/dist/bin/generateImportMap/utilities/resolveImportMapFilePath.js.map +1 -1
  70. package/dist/collections/config/client.d.ts +1 -1
  71. package/dist/collections/config/client.d.ts.map +1 -1
  72. package/dist/collections/config/client.js +1 -0
  73. package/dist/collections/config/client.js.map +1 -1
  74. package/dist/collections/config/defaults.d.ts +0 -4
  75. package/dist/collections/config/defaults.d.ts.map +1 -1
  76. package/dist/collections/config/defaults.js +0 -15
  77. package/dist/collections/config/defaults.js.map +1 -1
  78. package/dist/collections/config/sanitize.d.ts.map +1 -1
  79. package/dist/collections/config/sanitize.js +1 -11
  80. package/dist/collections/config/sanitize.js.map +1 -1
  81. package/dist/collections/config/types.d.ts +7 -0
  82. package/dist/collections/config/types.d.ts.map +1 -1
  83. package/dist/collections/config/types.js.map +1 -1
  84. package/dist/collections/endpoints/create.d.ts.map +1 -1
  85. package/dist/collections/endpoints/create.js +0 -2
  86. package/dist/collections/endpoints/create.js.map +1 -1
  87. package/dist/collections/endpoints/updateByID.d.ts.map +1 -1
  88. package/dist/collections/endpoints/updateByID.js +1 -2
  89. package/dist/collections/endpoints/updateByID.js.map +1 -1
  90. package/dist/collections/operations/count.d.ts.map +1 -1
  91. package/dist/collections/operations/count.js +1 -0
  92. package/dist/collections/operations/count.js.map +1 -1
  93. package/dist/collections/operations/create.d.ts +0 -1
  94. package/dist/collections/operations/create.d.ts.map +1 -1
  95. package/dist/collections/operations/create.js +14 -6
  96. package/dist/collections/operations/create.js.map +1 -1
  97. package/dist/collections/operations/findDistinct.d.ts.map +1 -1
  98. package/dist/collections/operations/findDistinct.js +1 -0
  99. package/dist/collections/operations/findDistinct.js.map +1 -1
  100. package/dist/collections/operations/local/count.d.ts +3 -3
  101. package/dist/collections/operations/local/count.d.ts.map +1 -1
  102. package/dist/collections/operations/local/count.js.map +1 -1
  103. package/dist/collections/operations/local/countVersions.d.ts +3 -3
  104. package/dist/collections/operations/local/countVersions.d.ts.map +1 -1
  105. package/dist/collections/operations/local/countVersions.js.map +1 -1
  106. package/dist/collections/operations/local/create.d.ts +3 -3
  107. package/dist/collections/operations/local/create.d.ts.map +1 -1
  108. package/dist/collections/operations/local/create.js.map +1 -1
  109. package/dist/collections/operations/local/delete.d.ts +3 -3
  110. package/dist/collections/operations/local/delete.d.ts.map +1 -1
  111. package/dist/collections/operations/local/delete.js.map +1 -1
  112. package/dist/collections/operations/local/duplicate.d.ts +3 -3
  113. package/dist/collections/operations/local/duplicate.d.ts.map +1 -1
  114. package/dist/collections/operations/local/duplicate.js.map +1 -1
  115. package/dist/collections/operations/local/find.d.ts +3 -3
  116. package/dist/collections/operations/local/find.d.ts.map +1 -1
  117. package/dist/collections/operations/local/find.js.map +1 -1
  118. package/dist/collections/operations/local/findByID.d.ts +3 -3
  119. package/dist/collections/operations/local/findByID.d.ts.map +1 -1
  120. package/dist/collections/operations/local/findByID.js.map +1 -1
  121. package/dist/collections/operations/local/findDistinct.d.ts +2 -2
  122. package/dist/collections/operations/local/findDistinct.d.ts.map +1 -1
  123. package/dist/collections/operations/local/findDistinct.js.map +1 -1
  124. package/dist/collections/operations/local/findVersionByID.d.ts +3 -3
  125. package/dist/collections/operations/local/findVersionByID.d.ts.map +1 -1
  126. package/dist/collections/operations/local/findVersionByID.js.map +1 -1
  127. package/dist/collections/operations/local/findVersions.d.ts +3 -3
  128. package/dist/collections/operations/local/findVersions.d.ts.map +1 -1
  129. package/dist/collections/operations/local/findVersions.js.map +1 -1
  130. package/dist/collections/operations/local/restoreVersion.d.ts +3 -3
  131. package/dist/collections/operations/local/restoreVersion.d.ts.map +1 -1
  132. package/dist/collections/operations/local/restoreVersion.js.map +1 -1
  133. package/dist/collections/operations/local/update.d.ts +7 -11
  134. package/dist/collections/operations/local/update.d.ts.map +1 -1
  135. package/dist/collections/operations/local/update.js +1 -2
  136. package/dist/collections/operations/local/update.js.map +1 -1
  137. package/dist/collections/operations/update.d.ts +0 -1
  138. package/dist/collections/operations/update.d.ts.map +1 -1
  139. package/dist/collections/operations/update.js +8 -4
  140. package/dist/collections/operations/update.js.map +1 -1
  141. package/dist/collections/operations/updateByID.d.ts +0 -1
  142. package/dist/collections/operations/updateByID.d.ts.map +1 -1
  143. package/dist/collections/operations/updateByID.js +1 -5
  144. package/dist/collections/operations/updateByID.js.map +1 -1
  145. package/dist/collections/operations/utilities/copyDataWithFreshRowIDs.d.ts +9 -0
  146. package/dist/collections/operations/utilities/copyDataWithFreshRowIDs.d.ts.map +1 -0
  147. package/dist/collections/operations/utilities/copyDataWithFreshRowIDs.js +170 -0
  148. package/dist/collections/operations/utilities/copyDataWithFreshRowIDs.js.map +1 -0
  149. package/dist/collections/operations/utilities/types.d.ts +0 -9
  150. package/dist/collections/operations/utilities/types.d.ts.map +1 -1
  151. package/dist/collections/operations/utilities/types.js.map +1 -1
  152. package/dist/collections/operations/utilities/update.d.ts +1 -2
  153. package/dist/collections/operations/utilities/update.d.ts.map +1 -1
  154. package/dist/collections/operations/utilities/update.js +48 -57
  155. package/dist/collections/operations/utilities/update.js.map +1 -1
  156. package/dist/config/client.d.ts +2 -2
  157. package/dist/config/client.d.ts.map +1 -1
  158. package/dist/config/client.js.map +1 -1
  159. package/dist/config/defaults.d.ts +0 -4
  160. package/dist/config/defaults.d.ts.map +1 -1
  161. package/dist/config/defaults.js +0 -78
  162. package/dist/config/defaults.js.map +1 -1
  163. package/dist/config/definePlugin.d.ts +10 -10
  164. package/dist/config/definePlugin.d.ts.map +1 -1
  165. package/dist/config/definePlugin.js +7 -11
  166. package/dist/config/definePlugin.js.map +1 -1
  167. package/dist/config/orderable/index.d.ts.map +1 -1
  168. package/dist/config/orderable/index.js +23 -0
  169. package/dist/config/orderable/index.js.map +1 -1
  170. package/dist/config/sanitize.d.ts.map +1 -1
  171. package/dist/config/sanitize.js +137 -13
  172. package/dist/config/sanitize.js.map +1 -1
  173. package/dist/config/types.d.ts +49 -20
  174. package/dist/config/types.d.ts.map +1 -1
  175. package/dist/config/types.js +1 -0
  176. package/dist/config/types.js.map +1 -1
  177. package/dist/errors/ValidationError.d.ts +1 -0
  178. package/dist/errors/ValidationError.d.ts.map +1 -1
  179. package/dist/errors/ValidationError.js.map +1 -1
  180. package/dist/exports/migrations.d.ts +5 -13
  181. package/dist/exports/migrations.d.ts.map +1 -1
  182. package/dist/exports/migrations.js +5 -13
  183. package/dist/exports/migrations.js.map +1 -1
  184. package/dist/exports/shared.d.ts +3 -2
  185. package/dist/exports/shared.d.ts.map +1 -1
  186. package/dist/exports/shared.js +3 -2
  187. package/dist/exports/shared.js.map +1 -1
  188. package/dist/fields/config/client.d.ts.map +1 -1
  189. package/dist/fields/config/client.js +10 -3
  190. package/dist/fields/config/client.js.map +1 -1
  191. package/dist/fields/config/types.d.ts +13 -1
  192. package/dist/fields/config/types.d.ts.map +1 -1
  193. package/dist/fields/config/types.js.map +1 -1
  194. package/dist/fields/hooks/afterRead/promise.d.ts.map +1 -1
  195. package/dist/fields/hooks/afterRead/promise.js +10 -1
  196. package/dist/fields/hooks/afterRead/promise.js.map +1 -1
  197. package/dist/fields/hooks/beforeChange/promise.d.ts.map +1 -1
  198. package/dist/fields/hooks/beforeChange/promise.js.map +1 -1
  199. package/dist/fields/hooks/beforeValidate/promise.d.ts.map +1 -1
  200. package/dist/fields/hooks/beforeValidate/promise.js +10 -1
  201. package/dist/fields/hooks/beforeValidate/promise.js.map +1 -1
  202. package/dist/globals/config/sanitize.d.ts.map +1 -1
  203. package/dist/globals/config/sanitize.js +1 -6
  204. package/dist/globals/config/sanitize.js.map +1 -1
  205. package/dist/globals/endpoints/update.d.ts.map +1 -1
  206. package/dist/globals/endpoints/update.js +0 -2
  207. package/dist/globals/endpoints/update.js.map +1 -1
  208. package/dist/globals/operations/local/countVersions.d.ts +3 -3
  209. package/dist/globals/operations/local/countVersions.d.ts.map +1 -1
  210. package/dist/globals/operations/local/countVersions.js.map +1 -1
  211. package/dist/globals/operations/local/findOne.d.ts +3 -3
  212. package/dist/globals/operations/local/findOne.d.ts.map +1 -1
  213. package/dist/globals/operations/local/findOne.js.map +1 -1
  214. package/dist/globals/operations/local/findVersionByID.d.ts +3 -3
  215. package/dist/globals/operations/local/findVersionByID.d.ts.map +1 -1
  216. package/dist/globals/operations/local/findVersionByID.js.map +1 -1
  217. package/dist/globals/operations/local/findVersions.d.ts +3 -3
  218. package/dist/globals/operations/local/findVersions.d.ts.map +1 -1
  219. package/dist/globals/operations/local/findVersions.js.map +1 -1
  220. package/dist/globals/operations/local/restoreVersion.d.ts +3 -3
  221. package/dist/globals/operations/local/restoreVersion.d.ts.map +1 -1
  222. package/dist/globals/operations/local/restoreVersion.js.map +1 -1
  223. package/dist/globals/operations/local/update.d.ts +7 -9
  224. package/dist/globals/operations/local/update.d.ts.map +1 -1
  225. package/dist/globals/operations/local/update.js +1 -2
  226. package/dist/globals/operations/local/update.js.map +1 -1
  227. package/dist/globals/operations/update.d.ts +0 -1
  228. package/dist/globals/operations/update.d.ts.map +1 -1
  229. package/dist/globals/operations/update.js +52 -58
  230. package/dist/globals/operations/update.js.map +1 -1
  231. package/dist/index.bundled.d.ts +441 -311
  232. package/dist/index.d.ts +62 -15
  233. package/dist/index.d.ts.map +1 -1
  234. package/dist/index.js +4 -3
  235. package/dist/index.js.map +1 -1
  236. package/dist/preferences/keys.d.ts +4 -0
  237. package/dist/preferences/keys.d.ts.map +1 -1
  238. package/dist/preferences/keys.js +4 -1
  239. package/dist/preferences/keys.js.map +1 -1
  240. package/dist/preferences/types.d.ts +15 -0
  241. package/dist/preferences/types.d.ts.map +1 -1
  242. package/dist/preferences/types.js +3 -1
  243. package/dist/preferences/types.js.map +1 -1
  244. package/dist/query-presets/config.d.ts.map +1 -1
  245. package/dist/query-presets/config.js +73 -34
  246. package/dist/query-presets/config.js.map +1 -1
  247. package/dist/query-presets/constraints.d.ts.map +1 -1
  248. package/dist/query-presets/constraints.js +2 -1
  249. package/dist/query-presets/constraints.js.map +1 -1
  250. package/dist/types/index.d.ts +8 -3
  251. package/dist/types/index.d.ts.map +1 -1
  252. package/dist/types/index.js.map +1 -1
  253. package/dist/uploads/fetchAPI-multipart/processMultipart.d.ts.map +1 -1
  254. package/dist/uploads/fetchAPI-multipart/processMultipart.js +1 -14
  255. package/dist/uploads/fetchAPI-multipart/processMultipart.js.map +1 -1
  256. package/dist/uploads/matchMimeType.d.ts +8 -0
  257. package/dist/uploads/matchMimeType.d.ts.map +1 -0
  258. package/dist/uploads/matchMimeType.js +19 -0
  259. package/dist/uploads/matchMimeType.js.map +1 -0
  260. package/dist/uploads/matchMimeType.spec.js +66 -0
  261. package/dist/uploads/matchMimeType.spec.js.map +1 -0
  262. package/dist/uploads/types.d.ts +21 -0
  263. package/dist/uploads/types.d.ts.map +1 -1
  264. package/dist/uploads/types.js.map +1 -1
  265. package/dist/utilities/addDataAndFileToRequest.d.ts.map +1 -1
  266. package/dist/utilities/addDataAndFileToRequest.js +6 -0
  267. package/dist/utilities/addDataAndFileToRequest.js.map +1 -1
  268. package/dist/utilities/configToJSONSchema.d.ts +13 -4
  269. package/dist/utilities/configToJSONSchema.d.ts.map +1 -1
  270. package/dist/utilities/configToJSONSchema.js +138 -61
  271. package/dist/utilities/configToJSONSchema.js.map +1 -1
  272. package/dist/utilities/configToJSONSchema.spec.js +319 -0
  273. package/dist/utilities/configToJSONSchema.spec.js.map +1 -1
  274. package/dist/utilities/createLocalReq.d.ts +2 -2
  275. package/dist/utilities/createLocalReq.d.ts.map +1 -1
  276. package/dist/utilities/createLocalReq.js.map +1 -1
  277. package/dist/utilities/createPayloadRequest.d.ts.map +1 -1
  278. package/dist/utilities/createPayloadRequest.js +1 -0
  279. package/dist/utilities/createPayloadRequest.js.map +1 -1
  280. package/dist/utilities/deepCopyObject.d.ts.map +1 -1
  281. package/dist/utilities/deepCopyObject.js +8 -0
  282. package/dist/utilities/deepCopyObject.js.map +1 -1
  283. package/dist/utilities/getEntityPermissions/getEntityPermissions.d.ts.map +1 -1
  284. package/dist/utilities/getEntityPermissions/getEntityPermissions.js +2 -0
  285. package/dist/utilities/getEntityPermissions/getEntityPermissions.js.map +1 -1
  286. package/dist/utilities/getEntityPermissions/populateFieldPermissions.d.ts +7 -1
  287. package/dist/utilities/getEntityPermissions/populateFieldPermissions.d.ts.map +1 -1
  288. package/dist/utilities/getEntityPermissions/populateFieldPermissions.js +19 -2
  289. package/dist/utilities/getEntityPermissions/populateFieldPermissions.js.map +1 -1
  290. package/dist/utilities/getFieldByPath.d.ts.map +1 -1
  291. package/dist/utilities/getFieldByPath.js.map +1 -1
  292. package/dist/utilities/getVersionsConfig.js.map +1 -1
  293. package/dist/utilities/mergeLocalizedData.d.ts +14 -4
  294. package/dist/utilities/mergeLocalizedData.d.ts.map +1 -1
  295. package/dist/utilities/mergeLocalizedData.js +49 -34
  296. package/dist/utilities/mergeLocalizedData.js.map +1 -1
  297. package/dist/utilities/mergeLocalizedData.spec.js +23 -23
  298. package/dist/utilities/mergeLocalizedData.spec.js.map +1 -1
  299. package/dist/utilities/parseParams/index.d.ts +2 -5
  300. package/dist/utilities/parseParams/index.d.ts.map +1 -1
  301. package/dist/utilities/parseParams/index.js.map +1 -1
  302. package/dist/utilities/parseParams/index.spec.js +0 -9
  303. package/dist/utilities/parseParams/index.spec.js.map +1 -1
  304. package/dist/utilities/telemetry/conf/envPaths.d.ts.map +1 -1
  305. package/dist/utilities/telemetry/conf/envPaths.js +40 -31
  306. package/dist/utilities/telemetry/conf/envPaths.js.map +1 -1
  307. package/dist/utilities/traverseFields.d.ts.map +1 -1
  308. package/dist/utilities/traverseFields.js.map +1 -1
  309. package/dist/versions/baseFields.d.ts +1 -2
  310. package/dist/versions/baseFields.d.ts.map +1 -1
  311. package/dist/versions/baseFields.js +0 -13
  312. package/dist/versions/baseFields.js.map +1 -1
  313. package/dist/versions/buildCollectionFields.d.ts.map +1 -1
  314. package/dist/versions/buildCollectionFields.js +0 -2
  315. package/dist/versions/buildCollectionFields.js.map +1 -1
  316. package/dist/versions/buildGlobalFields.d.ts.map +1 -1
  317. package/dist/versions/buildGlobalFields.js +0 -2
  318. package/dist/versions/buildGlobalFields.js.map +1 -1
  319. package/dist/versions/buildSingleLocalePublishData.d.ts +32 -0
  320. package/dist/versions/buildSingleLocalePublishData.d.ts.map +1 -0
  321. package/dist/versions/buildSingleLocalePublishData.js +37 -0
  322. package/dist/versions/buildSingleLocalePublishData.js.map +1 -0
  323. package/dist/versions/saveVersion.d.ts +0 -2
  324. package/dist/versions/saveVersion.d.ts.map +1 -1
  325. package/dist/versions/saveVersion.js +12 -17
  326. package/dist/versions/saveVersion.js.map +1 -1
  327. package/dist/versions/schedule/job.d.ts.map +1 -1
  328. package/dist/versions/schedule/job.js +2 -9
  329. package/dist/versions/schedule/job.js.map +1 -1
  330. package/dist/versions/types.d.ts +2 -15
  331. package/dist/versions/types.d.ts.map +1 -1
  332. package/dist/versions/types.js.map +1 -1
  333. package/package.json +3 -3
  334. package/dist/database/migrations/templates/localizeStatus.d.ts +0 -10
  335. package/dist/database/migrations/templates/localizeStatus.d.ts.map +0 -1
  336. package/dist/database/migrations/templates/localizeStatus.js +0 -54
  337. package/dist/database/migrations/templates/localizeStatus.js.map +0 -1
  338. package/dist/utilities/isRSCEnabled.d.ts +0 -12
  339. package/dist/utilities/isRSCEnabled.d.ts.map +0 -1
  340. package/dist/utilities/isRSCEnabled.js +0 -14
  341. package/dist/utilities/isRSCEnabled.js.map +0 -1
  342. package/dist/versions/migrations/localizeStatus/index.d.ts +0 -12
  343. package/dist/versions/migrations/localizeStatus/index.d.ts.map +0 -1
  344. package/dist/versions/migrations/localizeStatus/index.js +0 -33
  345. package/dist/versions/migrations/localizeStatus/index.js.map +0 -1
  346. package/dist/versions/migrations/localizeStatus/mongo/down.d.ts +0 -9
  347. package/dist/versions/migrations/localizeStatus/mongo/down.d.ts.map +0 -1
  348. package/dist/versions/migrations/localizeStatus/mongo/down.js +0 -112
  349. package/dist/versions/migrations/localizeStatus/mongo/down.js.map +0 -1
  350. package/dist/versions/migrations/localizeStatus/mongo/index.d.ts +0 -8
  351. package/dist/versions/migrations/localizeStatus/mongo/index.d.ts.map +0 -1
  352. package/dist/versions/migrations/localizeStatus/mongo/index.js +0 -8
  353. package/dist/versions/migrations/localizeStatus/mongo/index.js.map +0 -1
  354. package/dist/versions/migrations/localizeStatus/mongo/up.d.ts +0 -9
  355. package/dist/versions/migrations/localizeStatus/mongo/up.d.ts.map +0 -1
  356. package/dist/versions/migrations/localizeStatus/mongo/up.js +0 -220
  357. package/dist/versions/migrations/localizeStatus/mongo/up.js.map +0 -1
  358. package/dist/versions/migrations/localizeStatus/sql/down.d.ts +0 -11
  359. package/dist/versions/migrations/localizeStatus/sql/down.d.ts.map +0 -1
  360. package/dist/versions/migrations/localizeStatus/sql/down.js +0 -213
  361. package/dist/versions/migrations/localizeStatus/sql/down.js.map +0 -1
  362. package/dist/versions/migrations/localizeStatus/sql/index.d.ts +0 -8
  363. package/dist/versions/migrations/localizeStatus/sql/index.d.ts.map +0 -1
  364. package/dist/versions/migrations/localizeStatus/sql/index.js +0 -8
  365. package/dist/versions/migrations/localizeStatus/sql/index.js.map +0 -1
  366. package/dist/versions/migrations/localizeStatus/sql/migrateMainCollection.d.ts +0 -13
  367. package/dist/versions/migrations/localizeStatus/sql/migrateMainCollection.d.ts.map +0 -1
  368. package/dist/versions/migrations/localizeStatus/sql/migrateMainCollection.js +0 -51
  369. package/dist/versions/migrations/localizeStatus/sql/migrateMainCollection.js.map +0 -1
  370. package/dist/versions/migrations/localizeStatus/sql/migrateMainGlobal.d.ts +0 -13
  371. package/dist/versions/migrations/localizeStatus/sql/migrateMainGlobal.d.ts.map +0 -1
  372. package/dist/versions/migrations/localizeStatus/sql/migrateMainGlobal.js +0 -54
  373. package/dist/versions/migrations/localizeStatus/sql/migrateMainGlobal.js.map +0 -1
  374. package/dist/versions/migrations/localizeStatus/sql/up.d.ts +0 -11
  375. package/dist/versions/migrations/localizeStatus/sql/up.d.ts.map +0 -1
  376. package/dist/versions/migrations/localizeStatus/sql/up.js +0 -277
  377. package/dist/versions/migrations/localizeStatus/sql/up.js.map +0 -1
  378. package/dist/versions/saveSnapshot.d.ts +0 -18
  379. package/dist/versions/saveSnapshot.d.ts.map +0 -1
  380. package/dist/versions/saveSnapshot.js +0 -38
  381. package/dist/versions/saveSnapshot.js.map +0 -1
@@ -0,0 +1,66 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { matchMimeType } from './matchMimeType.js';
3
+ describe('matchMimeType', ()=>{
4
+ it('should return the exact match when present', ()=>{
5
+ const map = {
6
+ 'image/png': 'PngComponent',
7
+ '*': 'FallbackComponent'
8
+ };
9
+ expect(matchMimeType(map, 'image/png')).toBe('PngComponent');
10
+ });
11
+ it('should fall back to the category wildcard when no exact match exists', ()=>{
12
+ const map = {
13
+ 'image/*': 'ImageComponent',
14
+ '*': 'FallbackComponent'
15
+ };
16
+ expect(matchMimeType(map, 'image/png')).toBe('ImageComponent');
17
+ });
18
+ it('should fall back to the universal wildcard when no exact or category match exists', ()=>{
19
+ const map = {
20
+ 'video/*': 'VideoComponent',
21
+ '*': 'FallbackComponent'
22
+ };
23
+ expect(matchMimeType(map, 'image/png')).toBe('FallbackComponent');
24
+ });
25
+ it('should return undefined when no entry matches', ()=>{
26
+ const map = {
27
+ 'video/*': 'VideoComponent'
28
+ };
29
+ expect(matchMimeType(map, 'image/png')).toBeUndefined();
30
+ });
31
+ it('should honor an explicit `false` exact match and not fall through to the wildcard', ()=>{
32
+ const map = {
33
+ 'image/png': false,
34
+ '*': 'FallbackComponent'
35
+ };
36
+ expect(matchMimeType(map, 'image/png')).toBe(false);
37
+ });
38
+ it('should honor an explicit `false` category wildcard and not fall through to the universal wildcard', ()=>{
39
+ const map = {
40
+ 'image/*': false,
41
+ '*': 'FallbackComponent'
42
+ };
43
+ expect(matchMimeType(map, 'image/png')).toBe(false);
44
+ });
45
+ it('should handle an empty-string mime type by falling back to the universal wildcard', ()=>{
46
+ const map = {
47
+ '*': 'FallbackComponent'
48
+ };
49
+ expect(matchMimeType(map, '')).toBe('FallbackComponent');
50
+ });
51
+ it('should handle a mime type without a slash', ()=>{
52
+ const map = {
53
+ 'image/*': 'ImageComponent',
54
+ '*': 'FallbackComponent'
55
+ };
56
+ expect(matchMimeType(map, 'notamimetype')).toBe('FallbackComponent');
57
+ });
58
+ it('should match case-sensitively', ()=>{
59
+ const map = {
60
+ 'image/png': 'PngComponent'
61
+ };
62
+ expect(matchMimeType(map, 'IMAGE/PNG')).toBeUndefined();
63
+ });
64
+ });
65
+
66
+ //# sourceMappingURL=matchMimeType.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/uploads/matchMimeType.spec.ts"],"sourcesContent":["import { describe, expect, it } from 'vitest'\n\nimport { matchMimeType } from './matchMimeType.js'\n\ndescribe('matchMimeType', () => {\n it('should return the exact match when present', () => {\n const map = { 'image/png': 'PngComponent', '*': 'FallbackComponent' }\n expect(matchMimeType(map, 'image/png')).toBe('PngComponent')\n })\n\n it('should fall back to the category wildcard when no exact match exists', () => {\n const map = { 'image/*': 'ImageComponent', '*': 'FallbackComponent' }\n expect(matchMimeType(map, 'image/png')).toBe('ImageComponent')\n })\n\n it('should fall back to the universal wildcard when no exact or category match exists', () => {\n const map = { 'video/*': 'VideoComponent', '*': 'FallbackComponent' }\n expect(matchMimeType(map, 'image/png')).toBe('FallbackComponent')\n })\n\n it('should return undefined when no entry matches', () => {\n const map = { 'video/*': 'VideoComponent' }\n expect(matchMimeType(map, 'image/png')).toBeUndefined()\n })\n\n it('should honor an explicit `false` exact match and not fall through to the wildcard', () => {\n const map = { 'image/png': false as const, '*': 'FallbackComponent' }\n expect(matchMimeType(map, 'image/png')).toBe(false)\n })\n\n it('should honor an explicit `false` category wildcard and not fall through to the universal wildcard', () => {\n const map = { 'image/*': false as const, '*': 'FallbackComponent' }\n expect(matchMimeType(map, 'image/png')).toBe(false)\n })\n\n it('should handle an empty-string mime type by falling back to the universal wildcard', () => {\n const map = { '*': 'FallbackComponent' }\n expect(matchMimeType(map, '')).toBe('FallbackComponent')\n })\n\n it('should handle a mime type without a slash', () => {\n const map = { 'image/*': 'ImageComponent', '*': 'FallbackComponent' }\n expect(matchMimeType(map, 'notamimetype')).toBe('FallbackComponent')\n })\n\n it('should match case-sensitively', () => {\n const map = { 'image/png': 'PngComponent' }\n expect(matchMimeType(map, 'IMAGE/PNG')).toBeUndefined()\n })\n})\n"],"names":["describe","expect","it","matchMimeType","map","toBe","toBeUndefined"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,MAAM,EAAEC,EAAE,QAAQ,SAAQ;AAE7C,SAASC,aAAa,QAAQ,qBAAoB;AAElDH,SAAS,iBAAiB;IACxBE,GAAG,8CAA8C;QAC/C,MAAME,MAAM;YAAE,aAAa;YAAgB,KAAK;QAAoB;QACpEH,OAAOE,cAAcC,KAAK,cAAcC,IAAI,CAAC;IAC/C;IAEAH,GAAG,wEAAwE;QACzE,MAAME,MAAM;YAAE,WAAW;YAAkB,KAAK;QAAoB;QACpEH,OAAOE,cAAcC,KAAK,cAAcC,IAAI,CAAC;IAC/C;IAEAH,GAAG,qFAAqF;QACtF,MAAME,MAAM;YAAE,WAAW;YAAkB,KAAK;QAAoB;QACpEH,OAAOE,cAAcC,KAAK,cAAcC,IAAI,CAAC;IAC/C;IAEAH,GAAG,iDAAiD;QAClD,MAAME,MAAM;YAAE,WAAW;QAAiB;QAC1CH,OAAOE,cAAcC,KAAK,cAAcE,aAAa;IACvD;IAEAJ,GAAG,qFAAqF;QACtF,MAAME,MAAM;YAAE,aAAa;YAAgB,KAAK;QAAoB;QACpEH,OAAOE,cAAcC,KAAK,cAAcC,IAAI,CAAC;IAC/C;IAEAH,GAAG,qGAAqG;QACtG,MAAME,MAAM;YAAE,WAAW;YAAgB,KAAK;QAAoB;QAClEH,OAAOE,cAAcC,KAAK,cAAcC,IAAI,CAAC;IAC/C;IAEAH,GAAG,qFAAqF;QACtF,MAAME,MAAM;YAAE,KAAK;QAAoB;QACvCH,OAAOE,cAAcC,KAAK,KAAKC,IAAI,CAAC;IACtC;IAEAH,GAAG,6CAA6C;QAC9C,MAAME,MAAM;YAAE,WAAW;YAAkB,KAAK;QAAoB;QACpEH,OAAOE,cAAcC,KAAK,iBAAiBC,IAAI,CAAC;IAClD;IAEAH,GAAG,iCAAiC;QAClC,MAAME,MAAM;YAAE,aAAa;QAAe;QAC1CH,OAAOE,cAAcC,KAAK,cAAcE,aAAa;IACvD;AACF"}
@@ -105,12 +105,33 @@ export type FileAllowList = Array<{
105
105
  extensions: string[];
106
106
  mimeType: string;
107
107
  }>;
108
+ export type UploadFilePreviewClientProps = {
109
+ filename: string;
110
+ filesize: number;
111
+ /** Resolved URL of the file (data.url). */
112
+ fileSrc: string;
113
+ height?: number;
114
+ mimeType: string;
115
+ width?: number;
116
+ };
117
+ type UploadFilePreviewMap = {
118
+ [mimeTypePattern: string]: PayloadComponent;
119
+ };
108
120
  type Admin = {
109
121
  components?: {
110
122
  /**
111
123
  * The Controls component to extend the upload controls in the admin panel.
112
124
  */
113
125
  controls?: PayloadComponent[];
126
+ /**
127
+ * A custom component to render in place of the default Thumbnail in the upload side panel.
128
+ *
129
+ * Can be a single PayloadComponent (renders for all MIME types) or a Record keyed by
130
+ * MIME type patterns. Pattern resolution priority: exact match → category wildcard
131
+ * (e.g. `video/*`) → universal fallback (`*`). Falls back to the default Thumbnail
132
+ * when nothing matches.
133
+ */
134
+ filePreview?: PayloadComponent | UploadFilePreviewMap;
114
135
  };
115
136
  };
116
137
  export type UploadConfig = {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/uploads/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/uploads/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/uploads/types.ts"],"sourcesContent":["import type { ResizeOptions, Sharp, SharpOptions } from 'sharp'\n\nimport type { CollectionConfig, TypeWithID } from '../collections/config/types.js'\nimport type { PayloadComponent } from '../config/types.js'\nimport type { PayloadRequest } from '../types/index.js'\nimport type { WithMetadata } from './optionallyAppendMetadata.js'\n\nexport type FileSize = {\n filename: null | string\n filesize: null | number\n height: null | number\n mimeType: null | string\n url: null | string\n width: null | number\n}\n\nexport type FileSizes = {\n [size: string]: FileSize\n}\n\nexport type FileData = {\n filename: string\n filesize: number\n focalX?: number\n focalY?: number\n height: number\n mimeType: string\n sizes: FileSizes\n tempFilePath?: string\n url?: string\n width: number\n}\n\nexport type ProbedImageSize = {\n height: number\n width: number\n}\n\n/**\n * Params sent to the sharp `toFormat()` function\n * @link https://sharp.pixelplumbing.com/api-output#toformat\n */\nexport type ImageUploadFormatOptions = {\n format: Parameters<Sharp['toFormat']>[0]\n options?: Parameters<Sharp['toFormat']>[1]\n}\n\n/**\n * Params sent to the sharp trim() function\n * @link https://sharp.pixelplumbing.com/api-resize#trim\n */\nexport type ImageUploadTrimOptions = Parameters<Sharp['trim']>[0]\n\nexport type GenerateImageName = (args: {\n extension: string\n height: number\n originalName: string\n sizeName: string\n width: number\n}) => string\n\nexport type ImageSize = {\n /**\n * Admin UI options that control how this image size appears in list views.\n */\n admin?: {\n /**\n * Controls visibility of this image size in the collection list view.\n * Defaults to hiding the image size from columns, filters, and group-by to reduce noise.\n *\n * - `column` — whether to hide this size from selectable list columns. @default false\n * - `filter` — whether to hide this size from filter options. @default false\n * - `groupBy` — whether to hide this size from group-by options. @default false\n */\n disabled?: {\n column?: boolean\n filter?: boolean\n groupBy?: boolean\n }\n }\n /**\n * @deprecated prefer position\n */\n crop?: string // comes from sharp package\n formatOptions?: ImageUploadFormatOptions\n /**\n * Generate a custom name for the file of this image size.\n */\n generateImageName?: GenerateImageName\n name: string\n trimOptions?: ImageUploadTrimOptions\n /**\n * When an uploaded image is smaller than the defined image size, we have 3 options:\n *\n * `undefined | false | true`\n *\n * 1. `undefined` [default]: uploading images with smaller width AND height than the image size will return null\n * 2. `false`: always enlarge images to the image size\n * 3. `true`: if the image is smaller than the image size, return the original image\n */\n withoutEnlargement?: ResizeOptions['withoutEnlargement']\n} & Omit<ResizeOptions, 'withoutEnlargement'>\n\nexport type GetAdminThumbnail = (args: { doc: Record<string, unknown> }) => false | null | string\n\nexport type AllowList = Array<{\n hostname: string\n pathname?: string\n port?: string\n protocol?: 'http' | 'https'\n search?: string\n}>\n\nexport type FileAllowList = Array<{\n extensions: string[]\n mimeType: string\n}>\n\ntype Admin = {\n components?: {\n /**\n * The Controls component to extend the upload controls in the admin panel.\n */\n controls?: PayloadComponent[]\n }\n}\n\nexport type UploadConfig = {\n /**\n * The adapter name to use for uploads. Used for storage adapter telemetry.\n * @default undefined\n */\n adapter?: string\n /**\n * The admin configuration for the upload field.\n */\n admin?: Admin\n /**\n * Represents an admin thumbnail, which can be either a React component or a string.\n * - If a string, it should be one of the image size names.\n * - A function that generates a fully qualified URL for the thumbnail, receives the doc as the only argument.\n **/\n adminThumbnail?: GetAdminThumbnail | string\n /**\n * Allow restricted file types known to be problematic.\n * - If set to `true`, it will allow all file types.\n * - If set to `false`, it will not allow file types and extensions known to be problematic.\n * - This setting is overriden by the `mimeTypes` option.\n * @default false\n */\n allowRestrictedFileTypes?: boolean\n /**\n * Enables bulk upload of files from the list view.\n * @default true\n */\n bulkUpload?: boolean\n /**\n * Appends a cache tag to the image URL when fetching the thumbnail in the admin panel. It may be desirable to disable this when hosting via CDNs with strict parameters.\n *\n * @default true\n */\n cacheTags?: boolean\n /**\n * Sharp constructor options to be passed to the uploaded file.\n * @link https://sharp.pixelplumbing.com/api-constructor/#sharp\n */\n constructorOptions?: SharpOptions\n /**\n * Enables cropping of images.\n * @default true\n */\n crop?: boolean\n /**\n * Disable the ability to save files to disk.\n * @default false\n */\n disableLocalStorage?: boolean\n /**\n * Enable displaying preview of the uploaded file in Upload fields related to this Collection.\n * Can be locally overridden by `displayPreview` option in Upload field.\n * @default false\n */\n displayPreview?: boolean\n /**\n *\n * Accepts existing headers and returns the headers after filtering or modifying.\n * If using this option, you should handle the removal of any sensitive cookies\n * (like payload-prefixed cookies) to prevent leaking session information to external\n * services. By default, Payload automatically filters out payload-prefixed cookies\n * when this option is NOT defined.\n *\n * Useful for adding custom headers to fetch from external providers.\n * @default undefined\n */\n externalFileHeaderFilter?: (headers: Record<string, string>) => Record<string, string>\n /**\n * Field slugs to use for a compound index instead of the default filename index.\n */\n filenameCompoundIndex?: string[]\n /**\n * Require files to be uploaded when creating a document.\n * @default true\n */\n filesRequiredOnCreate?: boolean\n /**\n * Enables focal point positioning for image manipulation.\n * @default true\n */\n focalPoint?: boolean\n /**\n * Format options for the uploaded file. Formatting image sizes needs to be done within each formatOptions individually.\n */\n formatOptions?: ImageUploadFormatOptions\n /**\n * Custom handlers to run when a file is fetched.\n *\n * - If a handler returns a Response, the response will be sent to the client and no further handlers will be run.\n * - If a handler returns null, the next handler will be run.\n * - If no handlers return a response the file will be returned by default.\n *\n * @link https://sharp.pixelplumbing.com/api-output/#toformat\n * @default undefined\n */\n handlers?: ((\n req: PayloadRequest,\n args: {\n doc: TypeWithID\n headers?: Headers\n params: {\n clientUploadContext?: unknown\n collection: string\n filename: string\n prefix?: string\n }\n },\n ) => Promise<Response> | Promise<void> | Response | void)[]\n /**\n * Set to `true` to prevent the admin UI from showing file inputs during document creation, useful for programmatic file generation.\n */\n hideFileInputOnCreate?: boolean\n /**\n * Set to `true` to prevent the admin UI having a way to remove an existing file while editing.\n */\n hideRemoveFile?: boolean\n imageSizes?: ImageSize[]\n /**\n * Restrict mimeTypes in the file picker. Array of valid mime types or mimetype wildcards\n * @example ['image/*', 'application/pdf']\n * @default undefined\n */\n mimeTypes?: string[]\n /**\n * Ability to modify the response headers fetching a file.\n * @default undefined\n */\n modifyResponseHeaders?: ({ headers }: { headers: Headers }) => Headers | void\n /**\n * Controls the behavior of pasting/uploading files from URLs.\n * If set to `false`, fetching from remote URLs is disabled.\n * If an `allowList` is provided, server-side fetching will be enabled for specified URLs.\n *\n * @default true (client-side fetching enabled)\n */\n pasteURL?:\n | {\n allowList: AllowList\n }\n | false\n /**\n * Sharp resize options for the original image.\n * @link https://sharp.pixelplumbing.com/api-resize#resize\n * @default undefined\n */\n resizeOptions?: ResizeOptions\n /**\n * Skip safe fetch when using server-side fetching for external files from these URLs.\n * @default false\n */\n skipSafeFetch?: AllowList | boolean\n /**\n * The directory to serve static files from. Defaults to collection slug.\n * @default undefined\n */\n staticDir?: string\n trimOptions?: ImageUploadTrimOptions\n /**\n * Optionally append metadata to the image during processing.\n *\n * Can be a boolean or a function.\n *\n * If true, metadata will be appended to the image.\n * If false, no metadata will be appended.\n * If a function, it will receive an object containing the metadata and should return a boolean indicating whether to append the metadata.\n * @default false\n */\n withMetadata?: WithMetadata\n}\nexport type checkFileRestrictionsParams = {\n collection: CollectionConfig\n file: File\n req: PayloadRequest\n}\n\nexport type SanitizedUploadConfig = {\n staticDir: UploadConfig['staticDir']\n} & UploadConfig\n\nexport type File = {\n /**\n * The buffer of the file.\n */\n data: Buffer\n /**\n * The mimetype of the file.\n */\n mimetype: string\n /**\n * The name of the file.\n */\n name: string\n /**\n * The size of the file in bytes.\n */\n size: number\n /**\n * Path to the temp file on disk when useTempFiles is enabled. In this case file.data will be an empty buffer.\n */\n tempFilePath?: string\n}\n\nexport type FileToSave = {\n /**\n * The buffer of the file.\n */\n buffer: Buffer\n /**\n * The path to save the file.\n */\n path: string\n}\n\ntype Crop = {\n height: number\n unit: '%' | 'px'\n width: number\n x: number\n y: number\n}\n\nexport type FocalPoint = {\n x: number\n y: number\n}\n\nexport type UploadEdits = {\n crop?: Crop\n focalPoint?: FocalPoint\n heightInPixels?: number\n widthInPixels?: number\n}\n"],"names":[],"mappings":"AAkWA,WAKC"}
1
+ {"version":3,"sources":["../../src/uploads/types.ts"],"sourcesContent":["import type { ResizeOptions, Sharp, SharpOptions } from 'sharp'\n\nimport type { CollectionConfig, TypeWithID } from '../collections/config/types.js'\nimport type { PayloadComponent } from '../config/types.js'\nimport type { PayloadRequest } from '../types/index.js'\nimport type { WithMetadata } from './optionallyAppendMetadata.js'\n\nexport type FileSize = {\n filename: null | string\n filesize: null | number\n height: null | number\n mimeType: null | string\n url: null | string\n width: null | number\n}\n\nexport type FileSizes = {\n [size: string]: FileSize\n}\n\nexport type FileData = {\n filename: string\n filesize: number\n focalX?: number\n focalY?: number\n height: number\n mimeType: string\n sizes: FileSizes\n tempFilePath?: string\n url?: string\n width: number\n}\n\nexport type ProbedImageSize = {\n height: number\n width: number\n}\n\n/**\n * Params sent to the sharp `toFormat()` function\n * @link https://sharp.pixelplumbing.com/api-output#toformat\n */\nexport type ImageUploadFormatOptions = {\n format: Parameters<Sharp['toFormat']>[0]\n options?: Parameters<Sharp['toFormat']>[1]\n}\n\n/**\n * Params sent to the sharp trim() function\n * @link https://sharp.pixelplumbing.com/api-resize#trim\n */\nexport type ImageUploadTrimOptions = Parameters<Sharp['trim']>[0]\n\nexport type GenerateImageName = (args: {\n extension: string\n height: number\n originalName: string\n sizeName: string\n width: number\n}) => string\n\nexport type ImageSize = {\n /**\n * Admin UI options that control how this image size appears in list views.\n */\n admin?: {\n /**\n * Controls visibility of this image size in the collection list view.\n * Defaults to hiding the image size from columns, filters, and group-by to reduce noise.\n *\n * - `column` — whether to hide this size from selectable list columns. @default false\n * - `filter` — whether to hide this size from filter options. @default false\n * - `groupBy` — whether to hide this size from group-by options. @default false\n */\n disabled?: {\n column?: boolean\n filter?: boolean\n groupBy?: boolean\n }\n }\n /**\n * @deprecated prefer position\n */\n crop?: string // comes from sharp package\n formatOptions?: ImageUploadFormatOptions\n /**\n * Generate a custom name for the file of this image size.\n */\n generateImageName?: GenerateImageName\n name: string\n trimOptions?: ImageUploadTrimOptions\n /**\n * When an uploaded image is smaller than the defined image size, we have 3 options:\n *\n * `undefined | false | true`\n *\n * 1. `undefined` [default]: uploading images with smaller width AND height than the image size will return null\n * 2. `false`: always enlarge images to the image size\n * 3. `true`: if the image is smaller than the image size, return the original image\n */\n withoutEnlargement?: ResizeOptions['withoutEnlargement']\n} & Omit<ResizeOptions, 'withoutEnlargement'>\n\nexport type GetAdminThumbnail = (args: { doc: Record<string, unknown> }) => false | null | string\n\nexport type AllowList = Array<{\n hostname: string\n pathname?: string\n port?: string\n protocol?: 'http' | 'https'\n search?: string\n}>\n\nexport type FileAllowList = Array<{\n extensions: string[]\n mimeType: string\n}>\n\nexport type UploadFilePreviewClientProps = {\n filename: string\n filesize: number\n /** Resolved URL of the file (data.url). */\n fileSrc: string\n height?: number\n mimeType: string\n width?: number\n}\n\ntype UploadFilePreviewMap = {\n [mimeTypePattern: string]: PayloadComponent\n}\n\ntype Admin = {\n components?: {\n /**\n * The Controls component to extend the upload controls in the admin panel.\n */\n controls?: PayloadComponent[]\n /**\n * A custom component to render in place of the default Thumbnail in the upload side panel.\n *\n * Can be a single PayloadComponent (renders for all MIME types) or a Record keyed by\n * MIME type patterns. Pattern resolution priority: exact match → category wildcard\n * (e.g. `video/*`) → universal fallback (`*`). Falls back to the default Thumbnail\n * when nothing matches.\n */\n filePreview?: PayloadComponent | UploadFilePreviewMap\n }\n}\n\nexport type UploadConfig = {\n /**\n * The adapter name to use for uploads. Used for storage adapter telemetry.\n * @default undefined\n */\n adapter?: string\n /**\n * The admin configuration for the upload field.\n */\n admin?: Admin\n /**\n * Represents an admin thumbnail, which can be either a React component or a string.\n * - If a string, it should be one of the image size names.\n * - A function that generates a fully qualified URL for the thumbnail, receives the doc as the only argument.\n **/\n adminThumbnail?: GetAdminThumbnail | string\n /**\n * Allow restricted file types known to be problematic.\n * - If set to `true`, it will allow all file types.\n * - If set to `false`, it will not allow file types and extensions known to be problematic.\n * - This setting is overriden by the `mimeTypes` option.\n * @default false\n */\n allowRestrictedFileTypes?: boolean\n /**\n * Enables bulk upload of files from the list view.\n * @default true\n */\n bulkUpload?: boolean\n /**\n * Appends a cache tag to the image URL when fetching the thumbnail in the admin panel. It may be desirable to disable this when hosting via CDNs with strict parameters.\n *\n * @default true\n */\n cacheTags?: boolean\n /**\n * Sharp constructor options to be passed to the uploaded file.\n * @link https://sharp.pixelplumbing.com/api-constructor/#sharp\n */\n constructorOptions?: SharpOptions\n /**\n * Enables cropping of images.\n * @default true\n */\n crop?: boolean\n /**\n * Disable the ability to save files to disk.\n * @default false\n */\n disableLocalStorage?: boolean\n /**\n * Enable displaying preview of the uploaded file in Upload fields related to this Collection.\n * Can be locally overridden by `displayPreview` option in Upload field.\n * @default false\n */\n displayPreview?: boolean\n /**\n *\n * Accepts existing headers and returns the headers after filtering or modifying.\n * If using this option, you should handle the removal of any sensitive cookies\n * (like payload-prefixed cookies) to prevent leaking session information to external\n * services. By default, Payload automatically filters out payload-prefixed cookies\n * when this option is NOT defined.\n *\n * Useful for adding custom headers to fetch from external providers.\n * @default undefined\n */\n externalFileHeaderFilter?: (headers: Record<string, string>) => Record<string, string>\n /**\n * Field slugs to use for a compound index instead of the default filename index.\n */\n filenameCompoundIndex?: string[]\n /**\n * Require files to be uploaded when creating a document.\n * @default true\n */\n filesRequiredOnCreate?: boolean\n /**\n * Enables focal point positioning for image manipulation.\n * @default true\n */\n focalPoint?: boolean\n /**\n * Format options for the uploaded file. Formatting image sizes needs to be done within each formatOptions individually.\n */\n formatOptions?: ImageUploadFormatOptions\n /**\n * Custom handlers to run when a file is fetched.\n *\n * - If a handler returns a Response, the response will be sent to the client and no further handlers will be run.\n * - If a handler returns null, the next handler will be run.\n * - If no handlers return a response the file will be returned by default.\n *\n * @link https://sharp.pixelplumbing.com/api-output/#toformat\n * @default undefined\n */\n handlers?: ((\n req: PayloadRequest,\n args: {\n doc: TypeWithID\n headers?: Headers\n params: {\n clientUploadContext?: unknown\n collection: string\n filename: string\n prefix?: string\n }\n },\n ) => Promise<Response> | Promise<void> | Response | void)[]\n /**\n * Set to `true` to prevent the admin UI from showing file inputs during document creation, useful for programmatic file generation.\n */\n hideFileInputOnCreate?: boolean\n /**\n * Set to `true` to prevent the admin UI having a way to remove an existing file while editing.\n */\n hideRemoveFile?: boolean\n imageSizes?: ImageSize[]\n /**\n * Restrict mimeTypes in the file picker. Array of valid mime types or mimetype wildcards\n * @example ['image/*', 'application/pdf']\n * @default undefined\n */\n mimeTypes?: string[]\n /**\n * Ability to modify the response headers fetching a file.\n * @default undefined\n */\n modifyResponseHeaders?: ({ headers }: { headers: Headers }) => Headers | void\n /**\n * Controls the behavior of pasting/uploading files from URLs.\n * If set to `false`, fetching from remote URLs is disabled.\n * If an `allowList` is provided, server-side fetching will be enabled for specified URLs.\n *\n * @default true (client-side fetching enabled)\n */\n pasteURL?:\n | {\n allowList: AllowList\n }\n | false\n /**\n * Sharp resize options for the original image.\n * @link https://sharp.pixelplumbing.com/api-resize#resize\n * @default undefined\n */\n resizeOptions?: ResizeOptions\n /**\n * Skip safe fetch when using server-side fetching for external files from these URLs.\n * @default false\n */\n skipSafeFetch?: AllowList | boolean\n /**\n * The directory to serve static files from. Defaults to collection slug.\n * @default undefined\n */\n staticDir?: string\n trimOptions?: ImageUploadTrimOptions\n /**\n * Optionally append metadata to the image during processing.\n *\n * Can be a boolean or a function.\n *\n * If true, metadata will be appended to the image.\n * If false, no metadata will be appended.\n * If a function, it will receive an object containing the metadata and should return a boolean indicating whether to append the metadata.\n * @default false\n */\n withMetadata?: WithMetadata\n}\nexport type checkFileRestrictionsParams = {\n collection: CollectionConfig\n file: File\n req: PayloadRequest\n}\n\nexport type SanitizedUploadConfig = {\n staticDir: UploadConfig['staticDir']\n} & UploadConfig\n\nexport type File = {\n /**\n * The buffer of the file.\n */\n data: Buffer\n /**\n * The mimetype of the file.\n */\n mimetype: string\n /**\n * The name of the file.\n */\n name: string\n /**\n * The size of the file in bytes.\n */\n size: number\n /**\n * Path to the temp file on disk when useTempFiles is enabled. In this case file.data will be an empty buffer.\n */\n tempFilePath?: string\n}\n\nexport type FileToSave = {\n /**\n * The buffer of the file.\n */\n buffer: Buffer\n /**\n * The path to save the file.\n */\n path: string\n}\n\ntype Crop = {\n height: number\n unit: '%' | 'px'\n width: number\n x: number\n y: number\n}\n\nexport type FocalPoint = {\n x: number\n y: number\n}\n\nexport type UploadEdits = {\n crop?: Crop\n focalPoint?: FocalPoint\n heightInPixels?: number\n widthInPixels?: number\n}\n"],"names":[],"mappings":"AAyXA,WAKC"}
@@ -1 +1 @@
1
- {"version":3,"file":"addDataAndFileToRequest.d.ts","sourceRoot":"","sources":["../../src/utilities/addDataAndFileToRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAKvD,KAAK,uBAAuB,GAAG,CAAC,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;AAErE;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAE,uBAwGrC,CAAA"}
1
+ {"version":3,"file":"addDataAndFileToRequest.d.ts","sourceRoot":"","sources":["../../src/utilities/addDataAndFileToRequest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAKvD,KAAK,uBAAuB,GAAG,CAAC,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;AAErE;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAE,uBA+GrC,CAAA"}
@@ -87,6 +87,12 @@ import { processMultipartFormdata } from '../uploads/fetchAPI-multipart/index.js
87
87
  }
88
88
  throw new APIError('Expected response from the upload handler.');
89
89
  }
90
+ if (response.status >= 300 && response.status < 400) {
91
+ const redirectUrl = response.headers.get('Location');
92
+ if (redirectUrl) {
93
+ response = await fetch(redirectUrl);
94
+ }
95
+ }
90
96
  req.file = {
91
97
  name: filename,
92
98
  clientUploadContext,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utilities/addDataAndFileToRequest.ts"],"sourcesContent":["import type { PayloadRequest } from '../types/index.js'\n\nimport { APIError } from '../errors/APIError.js'\nimport { processMultipartFormdata } from '../uploads/fetchAPI-multipart/index.js'\n\ntype AddDataAndFileToRequest = (req: PayloadRequest) => Promise<void>\n\n/**\n * Mutates the Request, appending 'data' and 'file' if found\n */\nexport const addDataAndFileToRequest: AddDataAndFileToRequest = async (req) => {\n const { body, headers, method, payload } = req\n\n if (method && ['PATCH', 'POST', 'PUT'].includes(method.toUpperCase()) && body) {\n const [contentType] = (headers.get('Content-Type') || '').split(';', 1)\n const bodyByteSize = parseInt(req.headers.get('Content-Length') || '0', 10)\n const hasBodyStream = req.body !== null\n\n if (contentType === 'application/json') {\n try {\n const text = await req.text?.()\n const data = text ? JSON.parse(text) : {}\n req.data = data\n // @ts-expect-error attach json method to request\n req.json = () => Promise.resolve(data)\n } catch (error) {\n if (error instanceof SyntaxError) {\n throw new APIError('Invalid JSON', 400)\n }\n req.payload.logger.error(error)\n throw error\n }\n } else if ((bodyByteSize || hasBodyStream) && contentType?.includes('multipart/')) {\n const { error, fields, files } = await processMultipartFormdata({\n options: {\n ...(payload.config.bodyParser || {}),\n ...(payload.config.upload || {}),\n },\n request: req as Request,\n })\n\n if (error) {\n throw new APIError(error.message)\n }\n\n // Set all files on req.files for access by hooks\n if (files) {\n req.files = files\n // Backwards compatibility: set req.file for standard upload collections\n // Guard: if multiple files share the field name \"file\", files.file is an array — skip\n if (files.file && !Array.isArray(files.file)) {\n req.file = files.file\n }\n }\n\n if (fields?._payload && typeof fields._payload === 'string') {\n req.data = JSON.parse(fields._payload)\n }\n\n if (!req.file && fields?.file && typeof fields?.file === 'string') {\n let clientUploadContext, collectionSlug, filename, mimeType, size\n try {\n ;({ clientUploadContext, collectionSlug, filename, mimeType, size } = JSON.parse(\n fields.file,\n ))\n } catch {\n throw new APIError('A file name is required.', 400)\n }\n const uploadConfig = req.payload.collections[collectionSlug]!.config.upload\n\n if (!uploadConfig.handlers) {\n throw new APIError('uploadConfig.handlers is not present for ' + collectionSlug)\n }\n\n let response: null | Response = null\n let error: unknown\n\n for (const handler of uploadConfig.handlers) {\n try {\n const result = await handler(req, {\n doc: null!,\n params: {\n clientUploadContext, // Pass additional specific to adapters context returned from UploadHandler, then staticHandler can use them.\n collection: collectionSlug,\n filename,\n },\n })\n if (result) {\n response = result\n }\n // If we couldn't get the file from that handler, save the error and try other.\n } catch (err) {\n error = err\n }\n }\n\n if (!response) {\n if (error) {\n payload.logger.error(error)\n }\n\n throw new APIError('Expected response from the upload handler.')\n }\n\n req.file = {\n name: filename,\n clientUploadContext,\n data: Buffer.from(await response.arrayBuffer()),\n mimetype: response.headers.get('Content-Type') || mimeType,\n size,\n }\n }\n }\n }\n}\n"],"names":["APIError","processMultipartFormdata","addDataAndFileToRequest","req","body","headers","method","payload","includes","toUpperCase","contentType","get","split","bodyByteSize","parseInt","hasBodyStream","text","data","JSON","parse","json","Promise","resolve","error","SyntaxError","logger","fields","files","options","config","bodyParser","upload","request","message","file","Array","isArray","_payload","clientUploadContext","collectionSlug","filename","mimeType","size","uploadConfig","collections","handlers","response","handler","result","doc","params","collection","err","name","Buffer","from","arrayBuffer","mimetype"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/utilities/addDataAndFileToRequest.ts"],"sourcesContent":["import type { PayloadRequest } from '../types/index.js'\n\nimport { APIError } from '../errors/APIError.js'\nimport { processMultipartFormdata } from '../uploads/fetchAPI-multipart/index.js'\n\ntype AddDataAndFileToRequest = (req: PayloadRequest) => Promise<void>\n\n/**\n * Mutates the Request, appending 'data' and 'file' if found\n */\nexport const addDataAndFileToRequest: AddDataAndFileToRequest = async (req) => {\n const { body, headers, method, payload } = req\n\n if (method && ['PATCH', 'POST', 'PUT'].includes(method.toUpperCase()) && body) {\n const [contentType] = (headers.get('Content-Type') || '').split(';', 1)\n const bodyByteSize = parseInt(req.headers.get('Content-Length') || '0', 10)\n const hasBodyStream = req.body !== null\n\n if (contentType === 'application/json') {\n try {\n const text = await req.text?.()\n const data = text ? JSON.parse(text) : {}\n req.data = data\n // @ts-expect-error attach json method to request\n req.json = () => Promise.resolve(data)\n } catch (error) {\n if (error instanceof SyntaxError) {\n throw new APIError('Invalid JSON', 400)\n }\n req.payload.logger.error(error)\n throw error\n }\n } else if ((bodyByteSize || hasBodyStream) && contentType?.includes('multipart/')) {\n const { error, fields, files } = await processMultipartFormdata({\n options: {\n ...(payload.config.bodyParser || {}),\n ...(payload.config.upload || {}),\n },\n request: req as Request,\n })\n\n if (error) {\n throw new APIError(error.message)\n }\n\n // Set all files on req.files for access by hooks\n if (files) {\n req.files = files\n // Backwards compatibility: set req.file for standard upload collections\n // Guard: if multiple files share the field name \"file\", files.file is an array — skip\n if (files.file && !Array.isArray(files.file)) {\n req.file = files.file\n }\n }\n\n if (fields?._payload && typeof fields._payload === 'string') {\n req.data = JSON.parse(fields._payload)\n }\n\n if (!req.file && fields?.file && typeof fields?.file === 'string') {\n let clientUploadContext, collectionSlug, filename, mimeType, size\n try {\n ;({ clientUploadContext, collectionSlug, filename, mimeType, size } = JSON.parse(\n fields.file,\n ))\n } catch {\n throw new APIError('A file name is required.', 400)\n }\n const uploadConfig = req.payload.collections[collectionSlug]!.config.upload\n\n if (!uploadConfig.handlers) {\n throw new APIError('uploadConfig.handlers is not present for ' + collectionSlug)\n }\n\n let response: null | Response = null\n let error: unknown\n\n for (const handler of uploadConfig.handlers) {\n try {\n const result = await handler(req, {\n doc: null!,\n params: {\n clientUploadContext, // Pass additional specific to adapters context returned from UploadHandler, then staticHandler can use them.\n collection: collectionSlug,\n filename,\n },\n })\n if (result) {\n response = result\n }\n // If we couldn't get the file from that handler, save the error and try other.\n } catch (err) {\n error = err\n }\n }\n\n if (!response) {\n if (error) {\n payload.logger.error(error)\n }\n\n throw new APIError('Expected response from the upload handler.')\n }\n\n if (response.status >= 300 && response.status < 400) {\n const redirectUrl = response.headers.get('Location')\n if (redirectUrl) {\n response = await fetch(redirectUrl)\n }\n }\n\n req.file = {\n name: filename,\n clientUploadContext,\n data: Buffer.from(await response.arrayBuffer()),\n mimetype: response.headers.get('Content-Type') || mimeType,\n size,\n }\n }\n }\n }\n}\n"],"names":["APIError","processMultipartFormdata","addDataAndFileToRequest","req","body","headers","method","payload","includes","toUpperCase","contentType","get","split","bodyByteSize","parseInt","hasBodyStream","text","data","JSON","parse","json","Promise","resolve","error","SyntaxError","logger","fields","files","options","config","bodyParser","upload","request","message","file","Array","isArray","_payload","clientUploadContext","collectionSlug","filename","mimeType","size","uploadConfig","collections","handlers","response","handler","result","doc","params","collection","err","status","redirectUrl","fetch","name","Buffer","from","arrayBuffer","mimetype"],"mappings":"AAEA,SAASA,QAAQ,QAAQ,wBAAuB;AAChD,SAASC,wBAAwB,QAAQ,yCAAwC;AAIjF;;CAEC,GACD,OAAO,MAAMC,0BAAmD,OAAOC;IACrE,MAAM,EAAEC,IAAI,EAAEC,OAAO,EAAEC,MAAM,EAAEC,OAAO,EAAE,GAAGJ;IAE3C,IAAIG,UAAU;QAAC;QAAS;QAAQ;KAAM,CAACE,QAAQ,CAACF,OAAOG,WAAW,OAAOL,MAAM;QAC7E,MAAM,CAACM,YAAY,GAAG,AAACL,CAAAA,QAAQM,GAAG,CAAC,mBAAmB,EAAC,EAAGC,KAAK,CAAC,KAAK;QACrE,MAAMC,eAAeC,SAASX,IAAIE,OAAO,CAACM,GAAG,CAAC,qBAAqB,KAAK;QACxE,MAAMI,gBAAgBZ,IAAIC,IAAI,KAAK;QAEnC,IAAIM,gBAAgB,oBAAoB;YACtC,IAAI;gBACF,MAAMM,OAAO,MAAMb,IAAIa,IAAI;gBAC3B,MAAMC,OAAOD,OAAOE,KAAKC,KAAK,CAACH,QAAQ,CAAC;gBACxCb,IAAIc,IAAI,GAAGA;gBACX,iDAAiD;gBACjDd,IAAIiB,IAAI,GAAG,IAAMC,QAAQC,OAAO,CAACL;YACnC,EAAE,OAAOM,OAAO;gBACd,IAAIA,iBAAiBC,aAAa;oBAChC,MAAM,IAAIxB,SAAS,gBAAgB;gBACrC;gBACAG,IAAII,OAAO,CAACkB,MAAM,CAACF,KAAK,CAACA;gBACzB,MAAMA;YACR;QACF,OAAO,IAAI,AAACV,CAAAA,gBAAgBE,aAAY,KAAML,aAAaF,SAAS,eAAe;YACjF,MAAM,EAAEe,KAAK,EAAEG,MAAM,EAAEC,KAAK,EAAE,GAAG,MAAM1B,yBAAyB;gBAC9D2B,SAAS;oBACP,GAAIrB,QAAQsB,MAAM,CAACC,UAAU,IAAI,CAAC,CAAC;oBACnC,GAAIvB,QAAQsB,MAAM,CAACE,MAAM,IAAI,CAAC,CAAC;gBACjC;gBACAC,SAAS7B;YACX;YAEA,IAAIoB,OAAO;gBACT,MAAM,IAAIvB,SAASuB,MAAMU,OAAO;YAClC;YAEA,iDAAiD;YACjD,IAAIN,OAAO;gBACTxB,IAAIwB,KAAK,GAAGA;gBACZ,wEAAwE;gBACxE,sFAAsF;gBACtF,IAAIA,MAAMO,IAAI,IAAI,CAACC,MAAMC,OAAO,CAACT,MAAMO,IAAI,GAAG;oBAC5C/B,IAAI+B,IAAI,GAAGP,MAAMO,IAAI;gBACvB;YACF;YAEA,IAAIR,QAAQW,YAAY,OAAOX,OAAOW,QAAQ,KAAK,UAAU;gBAC3DlC,IAAIc,IAAI,GAAGC,KAAKC,KAAK,CAACO,OAAOW,QAAQ;YACvC;YAEA,IAAI,CAAClC,IAAI+B,IAAI,IAAIR,QAAQQ,QAAQ,OAAOR,QAAQQ,SAAS,UAAU;gBACjE,IAAII,qBAAqBC,gBAAgBC,UAAUC,UAAUC;gBAC7D,IAAI;;oBACA,CAAA,EAAEJ,mBAAmB,EAAEC,cAAc,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,IAAI,EAAE,GAAGxB,KAAKC,KAAK,CAC9EO,OAAOQ,IAAI,CACb;gBACF,EAAE,OAAM;oBACN,MAAM,IAAIlC,SAAS,4BAA4B;gBACjD;gBACA,MAAM2C,eAAexC,IAAII,OAAO,CAACqC,WAAW,CAACL,eAAe,CAAEV,MAAM,CAACE,MAAM;gBAE3E,IAAI,CAACY,aAAaE,QAAQ,EAAE;oBAC1B,MAAM,IAAI7C,SAAS,8CAA8CuC;gBACnE;gBAEA,IAAIO,WAA4B;gBAChC,IAAIvB;gBAEJ,KAAK,MAAMwB,WAAWJ,aAAaE,QAAQ,CAAE;oBAC3C,IAAI;wBACF,MAAMG,SAAS,MAAMD,QAAQ5C,KAAK;4BAChC8C,KAAK;4BACLC,QAAQ;gCACNZ;gCACAa,YAAYZ;gCACZC;4BACF;wBACF;wBACA,IAAIQ,QAAQ;4BACVF,WAAWE;wBACb;oBACA,+EAA+E;oBACjF,EAAE,OAAOI,KAAK;wBACZ7B,QAAQ6B;oBACV;gBACF;gBAEA,IAAI,CAACN,UAAU;oBACb,IAAIvB,OAAO;wBACThB,QAAQkB,MAAM,CAACF,KAAK,CAACA;oBACvB;oBAEA,MAAM,IAAIvB,SAAS;gBACrB;gBAEA,IAAI8C,SAASO,MAAM,IAAI,OAAOP,SAASO,MAAM,GAAG,KAAK;oBACnD,MAAMC,cAAcR,SAASzC,OAAO,CAACM,GAAG,CAAC;oBACzC,IAAI2C,aAAa;wBACfR,WAAW,MAAMS,MAAMD;oBACzB;gBACF;gBAEAnD,IAAI+B,IAAI,GAAG;oBACTsB,MAAMhB;oBACNF;oBACArB,MAAMwC,OAAOC,IAAI,CAAC,MAAMZ,SAASa,WAAW;oBAC5CC,UAAUd,SAASzC,OAAO,CAACM,GAAG,CAAC,mBAAmB8B;oBAClDC;gBACF;YACF;QACF;IACF;AACF,EAAC"}
@@ -4,6 +4,8 @@ import type { SanitizedCollectionConfig } from '../collections/config/types.js';
4
4
  import type { SanitizedConfig } from '../config/types.js';
5
5
  import type { FlattenedField } from '../fields/config/types.js';
6
6
  import type { SanitizedGlobalConfig } from '../globals/config/types.js';
7
+ /** Read (`output`) vs write (`input`) shape: `input` is what `create`/`update` accept. */
8
+ export type SchemaVariant = 'input' | 'output';
7
9
  /**
8
10
  * Returns a JSON Schema Type with 'null' added if the field is not required.
9
11
  */
@@ -37,8 +39,9 @@ export type FieldsToJSONSchemaArgs = {
37
39
  * ends up emitted once.
38
40
  */
39
41
  typeStringDefinitions: Set<string>;
42
+ variant?: SchemaVariant;
40
43
  };
41
- export declare function fieldsToJSONSchema({ collectionIDFieldTypes, config, fields, forceInlineBlocks, i18n, interfaceNameDefinitions, typeStringDefinitions, }: FieldsToJSONSchemaArgs): {
44
+ export declare function fieldsToJSONSchema({ collectionIDFieldTypes, config, fields, forceInlineBlocks, i18n, interfaceNameDefinitions, typeStringDefinitions, variant, }: FieldsToJSONSchemaArgs): {
42
45
  properties: {
43
46
  [k: string]: JSONSchema4;
44
47
  };
@@ -46,19 +49,21 @@ export declare function fieldsToJSONSchema({ collectionIDFieldTypes, config, fie
46
49
  };
47
50
  export declare function entityToJSONSchema(config: SanitizedConfig, entity: SanitizedCollectionConfig | SanitizedGlobalConfig, interfaceNameDefinitions: Map<string, JSONSchema4>, defaultIDType: 'number' | 'text', typeStringDefinitions: Set<string>, collectionIDFieldTypes?: {
48
51
  [key: string]: 'number' | 'string';
49
- }, i18n?: I18n, forceInlineBlocks?: boolean): JSONSchema4;
52
+ }, i18n?: I18n, forceInlineBlocks?: boolean, variant?: SchemaVariant): JSONSchema4;
50
53
  /**
51
54
  * Like {@link entityToJSONSchema}, but returns a standalone schema for one collection or global:
52
55
  * the entity plus only the `$defs` it actually uses, so it resolves on its own rather than
53
56
  * as part of the whole config schema.
54
57
  *
55
58
  * Relationship/upload `$ref`s to other collections are left in place - the caller handles those.
59
+ * (The `input` variant reduces relationships to IDs, so only rich-text node `$defs` still ref them.)
56
60
  */
57
- export declare function entityToStandaloneJSONSchema({ config, defaultIDType, entity, i18n, }: {
61
+ export declare function entityToStandaloneJSONSchema({ config, defaultIDType, entity, i18n, variant, }: {
58
62
  config: SanitizedConfig;
59
63
  defaultIDType: 'number' | 'text';
60
64
  entity: SanitizedCollectionConfig | SanitizedGlobalConfig;
61
65
  i18n?: I18n;
66
+ variant?: SchemaVariant;
62
67
  }): JSONSchema4;
63
68
  export declare function fieldsToSelectJSONSchema({ config, fields, interfaceNameDefinitions, }: {
64
69
  config: SanitizedConfig;
@@ -74,11 +79,15 @@ export declare function timezonesToJSONSchema(supportedTimezones: SanitizedConfi
74
79
  * already uses that name - whether it was auto-generated or an explicit `interfaceName` - this one
75
80
  * gets a content-hash suffix (`Hero_3F2A1B0C`) so the two don't overwrite each other. Registering
76
81
  * the same block shape again reuses its name.
82
+ *
83
+ * The `input` variant adds an `Input` suffix (`HeroInput`) - unless the read-shaped def is already
84
+ * registered with byte-identical content (a block with nothing that differs between input and
85
+ * output), in which case it's shared as-is rather than emitting a redundant twin.
77
86
  */
78
87
  export declare function registerBlockInterface(block: {
79
88
  interfaceName?: string;
80
89
  slug: string;
81
- }, blockSchema: JSONSchema4, interfaceNameDefinitions: Map<string, JSONSchema4>): string;
90
+ }, blockSchema: JSONSchema4, interfaceNameDefinitions: Map<string, JSONSchema4>, variant?: SchemaVariant): string;
82
91
  /**
83
92
  * This is used for generating the TypeScript types (payload-types.ts) with the payload generate:types command.
84
93
  */
@@ -1 +1 @@
1
- {"version":3,"file":"configToJSONSchema.d.ts","sourceRoot":"","sources":["../../src/utilities/configToJSONSchema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"configToJSONSchema.d.ts","sourceRoot":"","sources":["../../src/utilities/configToJSONSchema.ts"],"names":[],"mappings":"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"}