payload 3.0.0-beta.5 → 3.0.0-beta.50

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 (816) hide show
  1. package/bin.js +6 -3
  2. package/bundle.js +75 -0
  3. package/dist/admin/LanguageOptions.d.ts +6 -0
  4. package/dist/admin/LanguageOptions.d.ts.map +1 -0
  5. package/dist/admin/LanguageOptions.js +3 -0
  6. package/dist/admin/LanguageOptions.js.map +1 -0
  7. package/dist/admin/RichText.d.ts +140 -25
  8. package/dist/admin/RichText.d.ts.map +1 -1
  9. package/dist/admin/RichText.js.map +1 -1
  10. package/dist/admin/elements/Cell.d.ts +2 -7
  11. package/dist/admin/elements/Cell.d.ts.map +1 -1
  12. package/dist/admin/elements/Cell.js.map +1 -1
  13. package/dist/admin/elements/Tab.d.ts +4 -0
  14. package/dist/admin/elements/Tab.d.ts.map +1 -1
  15. package/dist/admin/elements/Tab.js.map +1 -1
  16. package/dist/admin/elements/WithServerSideProps.d.ts +6 -2
  17. package/dist/admin/elements/WithServerSideProps.d.ts.map +1 -1
  18. package/dist/admin/elements/WithServerSideProps.js.map +1 -1
  19. package/dist/admin/forms/Error.d.ts +1 -0
  20. package/dist/admin/forms/Error.d.ts.map +1 -1
  21. package/dist/admin/forms/FieldDescription.d.ts +1 -1
  22. package/dist/admin/forms/FieldDescription.d.ts.map +1 -1
  23. package/dist/admin/forms/FieldDescription.js.map +1 -1
  24. package/dist/admin/forms/FieldTypes.d.ts +1 -0
  25. package/dist/admin/forms/FieldTypes.d.ts.map +1 -1
  26. package/dist/admin/forms/Label.d.ts +4 -2
  27. package/dist/admin/forms/Label.d.ts.map +1 -1
  28. package/dist/admin/forms/Label.js.map +1 -1
  29. package/dist/admin/forms/RowLabel.d.ts +1 -1
  30. package/dist/admin/forms/RowLabel.d.ts.map +1 -1
  31. package/dist/admin/forms/RowLabel.js.map +1 -1
  32. package/dist/admin/types.d.ts +4 -3
  33. package/dist/admin/types.d.ts.map +1 -1
  34. package/dist/admin/types.js.map +1 -1
  35. package/dist/admin/views/types.d.ts +8 -5
  36. package/dist/admin/views/types.d.ts.map +1 -1
  37. package/dist/admin/views/types.js.map +1 -1
  38. package/dist/auth/baseFields/apiKey.d.ts.map +1 -1
  39. package/dist/auth/baseFields/apiKey.js +6 -4
  40. package/dist/auth/baseFields/apiKey.js.map +1 -1
  41. package/dist/auth/cookies.d.ts +16 -4
  42. package/dist/auth/cookies.d.ts.map +1 -1
  43. package/dist/auth/cookies.js +45 -14
  44. package/dist/auth/cookies.js.map +1 -1
  45. package/dist/auth/defaultAccess.d.ts +2 -2
  46. package/dist/auth/defaultAccess.d.ts.map +1 -1
  47. package/dist/auth/defaultAccess.js.map +1 -1
  48. package/dist/auth/executeAccess.d.ts +2 -2
  49. package/dist/auth/executeAccess.d.ts.map +1 -1
  50. package/dist/auth/executeAccess.js.map +1 -1
  51. package/dist/auth/getAccessResults.d.ts +2 -2
  52. package/dist/auth/getAccessResults.d.ts.map +1 -1
  53. package/dist/auth/getAccessResults.js +1 -1
  54. package/dist/auth/getAccessResults.js.map +1 -1
  55. package/dist/auth/getFieldsToSign.d.ts +2 -2
  56. package/dist/auth/getFieldsToSign.d.ts.map +1 -1
  57. package/dist/auth/getFieldsToSign.js.map +1 -1
  58. package/dist/auth/operations/access.d.ts +2 -2
  59. package/dist/auth/operations/access.d.ts.map +1 -1
  60. package/dist/auth/operations/access.js.map +1 -1
  61. package/dist/auth/operations/auth.d.ts +2 -2
  62. package/dist/auth/operations/auth.d.ts.map +1 -1
  63. package/dist/auth/operations/auth.js.map +1 -1
  64. package/dist/auth/operations/forgotPassword.d.ts +2 -2
  65. package/dist/auth/operations/forgotPassword.d.ts.map +1 -1
  66. package/dist/auth/operations/forgotPassword.js +7 -9
  67. package/dist/auth/operations/forgotPassword.js.map +1 -1
  68. package/dist/auth/operations/init.d.ts +2 -2
  69. package/dist/auth/operations/init.d.ts.map +1 -1
  70. package/dist/auth/operations/init.js.map +1 -1
  71. package/dist/auth/operations/local/auth.js.map +1 -1
  72. package/dist/auth/operations/local/forgotPassword.d.ts +2 -2
  73. package/dist/auth/operations/local/forgotPassword.d.ts.map +1 -1
  74. package/dist/auth/operations/local/forgotPassword.js.map +1 -1
  75. package/dist/auth/operations/local/login.d.ts +3 -4
  76. package/dist/auth/operations/local/login.d.ts.map +1 -1
  77. package/dist/auth/operations/local/login.js.map +1 -1
  78. package/dist/auth/operations/local/resetPassword.d.ts +3 -4
  79. package/dist/auth/operations/local/resetPassword.d.ts.map +1 -1
  80. package/dist/auth/operations/local/resetPassword.js.map +1 -1
  81. package/dist/auth/operations/local/unlock.d.ts +3 -4
  82. package/dist/auth/operations/local/unlock.d.ts.map +1 -1
  83. package/dist/auth/operations/local/unlock.js.map +1 -1
  84. package/dist/auth/operations/local/verifyEmail.d.ts +3 -4
  85. package/dist/auth/operations/local/verifyEmail.d.ts.map +1 -1
  86. package/dist/auth/operations/local/verifyEmail.js.map +1 -1
  87. package/dist/auth/operations/login.d.ts +2 -2
  88. package/dist/auth/operations/login.d.ts.map +1 -1
  89. package/dist/auth/operations/login.js +21 -1
  90. package/dist/auth/operations/login.js.map +1 -1
  91. package/dist/auth/operations/logout.d.ts +2 -2
  92. package/dist/auth/operations/logout.d.ts.map +1 -1
  93. package/dist/auth/operations/logout.js.map +1 -1
  94. package/dist/auth/operations/me.d.ts +2 -2
  95. package/dist/auth/operations/me.d.ts.map +1 -1
  96. package/dist/auth/operations/me.js.map +1 -1
  97. package/dist/auth/operations/refresh.d.ts +2 -3
  98. package/dist/auth/operations/refresh.d.ts.map +1 -1
  99. package/dist/auth/operations/refresh.js.map +1 -1
  100. package/dist/auth/operations/registerFirstUser.d.ts +2 -2
  101. package/dist/auth/operations/registerFirstUser.d.ts.map +1 -1
  102. package/dist/auth/operations/registerFirstUser.js.map +1 -1
  103. package/dist/auth/operations/resetPassword.d.ts +2 -2
  104. package/dist/auth/operations/resetPassword.d.ts.map +1 -1
  105. package/dist/auth/operations/resetPassword.js.map +1 -1
  106. package/dist/auth/operations/unlock.d.ts +2 -2
  107. package/dist/auth/operations/unlock.d.ts.map +1 -1
  108. package/dist/auth/operations/unlock.js.map +1 -1
  109. package/dist/auth/operations/verifyEmail.d.ts +2 -2
  110. package/dist/auth/operations/verifyEmail.d.ts.map +1 -1
  111. package/dist/auth/operations/verifyEmail.js.map +1 -1
  112. package/dist/auth/sendVerificationEmail.d.ts +7 -8
  113. package/dist/auth/sendVerificationEmail.d.ts.map +1 -1
  114. package/dist/auth/sendVerificationEmail.js +7 -8
  115. package/dist/auth/sendVerificationEmail.js.map +1 -1
  116. package/dist/auth/strategies/local/incrementLoginAttempts.d.ts +2 -2
  117. package/dist/auth/strategies/local/incrementLoginAttempts.d.ts.map +1 -1
  118. package/dist/auth/strategies/local/incrementLoginAttempts.js.map +1 -1
  119. package/dist/auth/strategies/local/register.d.ts +2 -2
  120. package/dist/auth/strategies/local/register.d.ts.map +1 -1
  121. package/dist/auth/strategies/local/register.js +1 -1
  122. package/dist/auth/strategies/local/register.js.map +1 -1
  123. package/dist/auth/strategies/local/resetLoginAttempts.d.ts +2 -2
  124. package/dist/auth/strategies/local/resetLoginAttempts.d.ts.map +1 -1
  125. package/dist/auth/strategies/local/resetLoginAttempts.js.map +1 -1
  126. package/dist/auth/types.d.ts +6 -6
  127. package/dist/auth/types.d.ts.map +1 -1
  128. package/dist/auth/types.js.map +1 -1
  129. package/dist/bin/generateTypes.d.ts +3 -1
  130. package/dist/bin/generateTypes.d.ts.map +1 -1
  131. package/dist/bin/generateTypes.js +23 -9
  132. package/dist/bin/generateTypes.js.map +1 -1
  133. package/dist/bin/loadEnv.d.ts +2 -2
  134. package/dist/bin/loadEnv.d.ts.map +1 -1
  135. package/dist/bin/loadEnv.js +18 -17
  136. package/dist/bin/loadEnv.js.map +1 -1
  137. package/dist/bin/loader/ignores.d.ts +2 -0
  138. package/dist/bin/loader/ignores.d.ts.map +1 -0
  139. package/dist/bin/loader/ignores.js +5 -0
  140. package/dist/bin/loader/ignores.js.map +1 -0
  141. package/dist/bin/loader/index.d.ts.map +1 -1
  142. package/dist/bin/loader/index.js +14 -15
  143. package/dist/bin/loader/index.js.map +1 -1
  144. package/dist/bin/loader/read-default-tsconfig.d.ts +25 -0
  145. package/dist/bin/loader/read-default-tsconfig.d.ts.map +1 -1
  146. package/dist/bin/loader/read-default-tsconfig.js +25 -1
  147. package/dist/bin/loader/read-default-tsconfig.js.map +1 -1
  148. package/dist/bin/loader/resolveOriginalPath.d.ts +10 -0
  149. package/dist/bin/loader/resolveOriginalPath.d.ts.map +1 -0
  150. package/dist/bin/loader/resolveOriginalPath.js +36 -0
  151. package/dist/bin/loader/resolveOriginalPath.js.map +1 -0
  152. package/dist/collections/config/client.d.ts +38 -11
  153. package/dist/collections/config/client.d.ts.map +1 -1
  154. package/dist/collections/config/client.js +3 -1
  155. package/dist/collections/config/client.js.map +1 -1
  156. package/dist/collections/config/defaults.d.ts +6 -5
  157. package/dist/collections/config/defaults.d.ts.map +1 -1
  158. package/dist/collections/config/defaults.js +1 -0
  159. package/dist/collections/config/defaults.js.map +1 -1
  160. package/dist/collections/config/sanitize.d.ts +2 -3
  161. package/dist/collections/config/sanitize.d.ts.map +1 -1
  162. package/dist/collections/config/sanitize.js +14 -6
  163. package/dist/collections/config/sanitize.js.map +1 -1
  164. package/dist/collections/config/schema.d.ts.map +1 -1
  165. package/dist/collections/config/schema.js +14 -3
  166. package/dist/collections/config/schema.js.map +1 -1
  167. package/dist/collections/config/types.d.ts +33 -18
  168. package/dist/collections/config/types.d.ts.map +1 -1
  169. package/dist/collections/config/types.js.map +1 -1
  170. package/dist/collections/dataloader.d.ts +14 -0
  171. package/dist/collections/dataloader.d.ts.map +1 -1
  172. package/dist/collections/dataloader.js +28 -13
  173. package/dist/collections/dataloader.js.map +1 -1
  174. package/dist/collections/operations/count.d.ts +13 -0
  175. package/dist/collections/operations/count.d.ts.map +1 -0
  176. package/dist/collections/operations/count.js +75 -0
  177. package/dist/collections/operations/count.js.map +1 -0
  178. package/dist/collections/operations/create.d.ts +2 -2
  179. package/dist/collections/operations/create.d.ts.map +1 -1
  180. package/dist/collections/operations/create.js +7 -13
  181. package/dist/collections/operations/create.js.map +1 -1
  182. package/dist/collections/operations/delete.d.ts +2 -2
  183. package/dist/collections/operations/delete.d.ts.map +1 -1
  184. package/dist/collections/operations/delete.js +1 -0
  185. package/dist/collections/operations/delete.js.map +1 -1
  186. package/dist/collections/operations/deleteByID.d.ts +2 -2
  187. package/dist/collections/operations/deleteByID.d.ts.map +1 -1
  188. package/dist/collections/operations/deleteByID.js +1 -0
  189. package/dist/collections/operations/deleteByID.js.map +1 -1
  190. package/dist/collections/operations/docAccess.d.ts +2 -2
  191. package/dist/collections/operations/docAccess.d.ts.map +1 -1
  192. package/dist/collections/operations/docAccess.js.map +1 -1
  193. package/dist/collections/operations/duplicate.d.ts +2 -2
  194. package/dist/collections/operations/duplicate.d.ts.map +1 -1
  195. package/dist/collections/operations/duplicate.js +3 -1
  196. package/dist/collections/operations/duplicate.js.map +1 -1
  197. package/dist/collections/operations/find.d.ts +2 -2
  198. package/dist/collections/operations/find.d.ts.map +1 -1
  199. package/dist/collections/operations/find.js +1 -0
  200. package/dist/collections/operations/find.js.map +1 -1
  201. package/dist/collections/operations/findByID.d.ts +2 -2
  202. package/dist/collections/operations/findByID.d.ts.map +1 -1
  203. package/dist/collections/operations/findByID.js +1 -0
  204. package/dist/collections/operations/findByID.js.map +1 -1
  205. package/dist/collections/operations/findVersionByID.d.ts +2 -2
  206. package/dist/collections/operations/findVersionByID.d.ts.map +1 -1
  207. package/dist/collections/operations/findVersionByID.js +1 -0
  208. package/dist/collections/operations/findVersionByID.js.map +1 -1
  209. package/dist/collections/operations/findVersions.d.ts +2 -2
  210. package/dist/collections/operations/findVersions.d.ts.map +1 -1
  211. package/dist/collections/operations/findVersions.js +1 -0
  212. package/dist/collections/operations/findVersions.js.map +1 -1
  213. package/dist/collections/operations/local/count.d.ts +20 -0
  214. package/dist/collections/operations/local/count.d.ts.map +1 -0
  215. package/dist/collections/operations/local/count.js +19 -0
  216. package/dist/collections/operations/local/count.js.map +1 -0
  217. package/dist/collections/operations/local/create.d.ts +5 -6
  218. package/dist/collections/operations/local/create.d.ts.map +1 -1
  219. package/dist/collections/operations/local/create.js.map +1 -1
  220. package/dist/collections/operations/local/delete.d.ts +5 -7
  221. package/dist/collections/operations/local/delete.d.ts.map +1 -1
  222. package/dist/collections/operations/local/delete.js.map +1 -1
  223. package/dist/collections/operations/local/duplicate.d.ts +4 -4
  224. package/dist/collections/operations/local/duplicate.d.ts.map +1 -1
  225. package/dist/collections/operations/local/duplicate.js.map +1 -1
  226. package/dist/collections/operations/local/find.d.ts +4 -4
  227. package/dist/collections/operations/local/find.d.ts.map +1 -1
  228. package/dist/collections/operations/local/find.js.map +1 -1
  229. package/dist/collections/operations/local/findByID.d.ts +4 -4
  230. package/dist/collections/operations/local/findByID.d.ts.map +1 -1
  231. package/dist/collections/operations/local/findByID.js.map +1 -1
  232. package/dist/collections/operations/local/findVersionByID.d.ts +4 -4
  233. package/dist/collections/operations/local/findVersionByID.d.ts.map +1 -1
  234. package/dist/collections/operations/local/findVersionByID.js.map +1 -1
  235. package/dist/collections/operations/local/findVersions.d.ts +4 -4
  236. package/dist/collections/operations/local/findVersions.d.ts.map +1 -1
  237. package/dist/collections/operations/local/findVersions.js.map +1 -1
  238. package/dist/collections/operations/local/index.d.ts +2 -0
  239. package/dist/collections/operations/local/index.d.ts.map +1 -1
  240. package/dist/collections/operations/local/index.js +2 -0
  241. package/dist/collections/operations/local/index.js.map +1 -1
  242. package/dist/collections/operations/local/restoreVersion.d.ts +4 -4
  243. package/dist/collections/operations/local/restoreVersion.d.ts.map +1 -1
  244. package/dist/collections/operations/local/restoreVersion.js.map +1 -1
  245. package/dist/collections/operations/local/update.d.ts +4 -4
  246. package/dist/collections/operations/local/update.d.ts.map +1 -1
  247. package/dist/collections/operations/local/update.js.map +1 -1
  248. package/dist/collections/operations/restoreVersion.d.ts +2 -2
  249. package/dist/collections/operations/restoreVersion.d.ts.map +1 -1
  250. package/dist/collections/operations/restoreVersion.js +2 -0
  251. package/dist/collections/operations/restoreVersion.js.map +1 -1
  252. package/dist/collections/operations/update.d.ts +2 -2
  253. package/dist/collections/operations/update.d.ts.map +1 -1
  254. package/dist/collections/operations/update.js +6 -3
  255. package/dist/collections/operations/update.js.map +1 -1
  256. package/dist/collections/operations/updateByID.d.ts +2 -2
  257. package/dist/collections/operations/updateByID.d.ts.map +1 -1
  258. package/dist/collections/operations/updateByID.js +5 -2
  259. package/dist/collections/operations/updateByID.js.map +1 -1
  260. package/dist/collections/operations/utils.d.ts +8 -2
  261. package/dist/collections/operations/utils.d.ts.map +1 -1
  262. package/dist/collections/operations/utils.js.map +1 -1
  263. package/dist/config/build.d.ts.map +1 -1
  264. package/dist/config/build.js +3 -4
  265. package/dist/config/build.js.map +1 -1
  266. package/dist/config/client.d.ts +2 -1
  267. package/dist/config/client.d.ts.map +1 -1
  268. package/dist/config/client.js +3 -1
  269. package/dist/config/client.js.map +1 -1
  270. package/dist/config/defaults.d.ts.map +1 -1
  271. package/dist/config/defaults.js +17 -4
  272. package/dist/config/defaults.js.map +1 -1
  273. package/dist/config/find.d.ts.map +1 -1
  274. package/dist/config/find.js +20 -22
  275. package/dist/config/find.js.map +1 -1
  276. package/dist/config/sanitize.d.ts +1 -1
  277. package/dist/config/sanitize.d.ts.map +1 -1
  278. package/dist/config/sanitize.js +49 -10
  279. package/dist/config/sanitize.js.map +1 -1
  280. package/dist/config/schema.d.ts.map +1 -1
  281. package/dist/config/schema.js +32 -8
  282. package/dist/config/schema.js.map +1 -1
  283. package/dist/config/shared/openGraphSchema.d.ts +3 -0
  284. package/dist/config/shared/openGraphSchema.d.ts.map +1 -0
  285. package/dist/config/shared/openGraphSchema.js +16 -0
  286. package/dist/config/shared/openGraphSchema.js.map +1 -0
  287. package/dist/config/types.d.ts +153 -78
  288. package/dist/config/types.d.ts.map +1 -1
  289. package/dist/config/types.js +7 -13
  290. package/dist/config/types.js.map +1 -1
  291. package/dist/database/migrations/getPredefinedMigration.d.ts +12 -0
  292. package/dist/database/migrations/getPredefinedMigration.d.ts.map +1 -0
  293. package/dist/database/migrations/getPredefinedMigration.js +38 -0
  294. package/dist/database/migrations/getPredefinedMigration.js.map +1 -0
  295. package/dist/database/migrations/migrate.js.map +1 -1
  296. package/dist/database/migrations/migrateDown.js.map +1 -1
  297. package/dist/database/migrations/migrateRefresh.js.map +1 -1
  298. package/dist/database/migrations/migrateReset.js.map +1 -1
  299. package/dist/database/queryValidation/validateQueryPaths.d.ts +2 -2
  300. package/dist/database/queryValidation/validateQueryPaths.d.ts.map +1 -1
  301. package/dist/database/queryValidation/validateQueryPaths.js +1 -1
  302. package/dist/database/queryValidation/validateQueryPaths.js.map +1 -1
  303. package/dist/database/queryValidation/validateSearchParams.d.ts +2 -2
  304. package/dist/database/queryValidation/validateSearchParams.d.ts.map +1 -1
  305. package/dist/database/queryValidation/validateSearchParams.js.map +1 -1
  306. package/dist/database/types.d.ts +34 -19
  307. package/dist/database/types.d.ts.map +1 -1
  308. package/dist/database/types.js.map +1 -1
  309. package/dist/email/consoleEmailAdapter.d.ts +3 -0
  310. package/dist/email/consoleEmailAdapter.d.ts.map +1 -0
  311. package/dist/email/consoleEmailAdapter.js +17 -0
  312. package/dist/email/consoleEmailAdapter.js.map +1 -0
  313. package/dist/email/defaults.d.ts +2 -2
  314. package/dist/email/defaults.d.ts.map +1 -1
  315. package/dist/email/defaults.js +3 -3
  316. package/dist/email/defaults.js.map +1 -1
  317. package/dist/email/getStringifiedToAddress.d.ts +3 -0
  318. package/dist/email/getStringifiedToAddress.d.ts.map +1 -0
  319. package/dist/email/getStringifiedToAddress.js +20 -0
  320. package/dist/email/getStringifiedToAddress.js.map +1 -0
  321. package/dist/email/sendEmail.d.ts +3 -2
  322. package/dist/email/sendEmail.d.ts.map +1 -1
  323. package/dist/email/sendEmail.js +8 -4
  324. package/dist/email/sendEmail.js.map +1 -1
  325. package/dist/email/types.d.ts +26 -18
  326. package/dist/email/types.d.ts.map +1 -1
  327. package/dist/email/types.js +5 -1
  328. package/dist/email/types.js.map +1 -1
  329. package/dist/errors/APIError.d.ts +2 -2
  330. package/dist/errors/APIError.d.ts.map +1 -1
  331. package/dist/errors/APIError.js +1 -2
  332. package/dist/errors/APIError.js.map +1 -1
  333. package/dist/errors/AuthenticationError.d.ts +2 -3
  334. package/dist/errors/AuthenticationError.d.ts.map +1 -1
  335. package/dist/errors/AuthenticationError.js +2 -3
  336. package/dist/errors/AuthenticationError.js.map +1 -1
  337. package/dist/errors/DuplicateCollection.d.ts +2 -3
  338. package/dist/errors/DuplicateCollection.d.ts.map +1 -1
  339. package/dist/errors/DuplicateCollection.js +2 -3
  340. package/dist/errors/DuplicateCollection.js.map +1 -1
  341. package/dist/errors/DuplicateFieldName.d.ts +2 -3
  342. package/dist/errors/DuplicateFieldName.d.ts.map +1 -1
  343. package/dist/errors/DuplicateFieldName.js +2 -3
  344. package/dist/errors/DuplicateFieldName.js.map +1 -1
  345. package/dist/errors/DuplicateGlobal.d.ts +2 -3
  346. package/dist/errors/DuplicateGlobal.d.ts.map +1 -1
  347. package/dist/errors/DuplicateGlobal.js +2 -3
  348. package/dist/errors/DuplicateGlobal.js.map +1 -1
  349. package/dist/errors/ErrorDeletingFile.d.ts +2 -3
  350. package/dist/errors/ErrorDeletingFile.d.ts.map +1 -1
  351. package/dist/errors/ErrorDeletingFile.js +2 -3
  352. package/dist/errors/ErrorDeletingFile.js.map +1 -1
  353. package/dist/errors/FileRetrievalError.d.ts +6 -0
  354. package/dist/errors/FileRetrievalError.d.ts.map +1 -0
  355. package/dist/errors/FileRetrievalError.js +13 -0
  356. package/dist/errors/FileRetrievalError.js.map +1 -0
  357. package/dist/errors/FileUploadError.d.ts +2 -3
  358. package/dist/errors/FileUploadError.d.ts.map +1 -1
  359. package/dist/errors/FileUploadError.js +2 -3
  360. package/dist/errors/FileUploadError.js.map +1 -1
  361. package/dist/errors/Forbidden.d.ts +2 -3
  362. package/dist/errors/Forbidden.d.ts.map +1 -1
  363. package/dist/errors/Forbidden.js +2 -3
  364. package/dist/errors/Forbidden.js.map +1 -1
  365. package/dist/errors/InvalidConfiguration.d.ts +2 -3
  366. package/dist/errors/InvalidConfiguration.d.ts.map +1 -1
  367. package/dist/errors/InvalidConfiguration.js +2 -3
  368. package/dist/errors/InvalidConfiguration.js.map +1 -1
  369. package/dist/errors/InvalidFieldName.d.ts +2 -3
  370. package/dist/errors/InvalidFieldName.d.ts.map +1 -1
  371. package/dist/errors/InvalidFieldName.js +2 -3
  372. package/dist/errors/InvalidFieldName.js.map +1 -1
  373. package/dist/errors/InvalidFieldRelationship.d.ts +2 -3
  374. package/dist/errors/InvalidFieldRelationship.d.ts.map +1 -1
  375. package/dist/errors/InvalidFieldRelationship.js +2 -3
  376. package/dist/errors/InvalidFieldRelationship.js.map +1 -1
  377. package/dist/errors/InvalidSchema.d.ts +2 -3
  378. package/dist/errors/InvalidSchema.d.ts.map +1 -1
  379. package/dist/errors/InvalidSchema.js +2 -3
  380. package/dist/errors/InvalidSchema.js.map +1 -1
  381. package/dist/errors/LockedAuth.d.ts +2 -3
  382. package/dist/errors/LockedAuth.d.ts.map +1 -1
  383. package/dist/errors/LockedAuth.js +2 -3
  384. package/dist/errors/LockedAuth.js.map +1 -1
  385. package/dist/errors/MissingCollectionLabel.d.ts +2 -3
  386. package/dist/errors/MissingCollectionLabel.d.ts.map +1 -1
  387. package/dist/errors/MissingCollectionLabel.js +2 -3
  388. package/dist/errors/MissingCollectionLabel.js.map +1 -1
  389. package/dist/errors/MissingEditorProp.d.ts +2 -3
  390. package/dist/errors/MissingEditorProp.d.ts.map +1 -1
  391. package/dist/errors/MissingEditorProp.js +3 -4
  392. package/dist/errors/MissingEditorProp.js.map +1 -1
  393. package/dist/errors/MissingFieldInputOptions.d.ts +2 -3
  394. package/dist/errors/MissingFieldInputOptions.d.ts.map +1 -1
  395. package/dist/errors/MissingFieldInputOptions.js +2 -3
  396. package/dist/errors/MissingFieldInputOptions.js.map +1 -1
  397. package/dist/errors/MissingFieldType.d.ts +2 -3
  398. package/dist/errors/MissingFieldType.d.ts.map +1 -1
  399. package/dist/errors/MissingFieldType.js +2 -3
  400. package/dist/errors/MissingFieldType.js.map +1 -1
  401. package/dist/errors/MissingFile.d.ts +2 -3
  402. package/dist/errors/MissingFile.d.ts.map +1 -1
  403. package/dist/errors/MissingFile.js +2 -3
  404. package/dist/errors/MissingFile.js.map +1 -1
  405. package/dist/errors/NotFound.d.ts +2 -3
  406. package/dist/errors/NotFound.d.ts.map +1 -1
  407. package/dist/errors/NotFound.js +2 -3
  408. package/dist/errors/NotFound.js.map +1 -1
  409. package/dist/errors/QueryError.d.ts +2 -3
  410. package/dist/errors/QueryError.d.ts.map +1 -1
  411. package/dist/errors/QueryError.js +2 -3
  412. package/dist/errors/QueryError.js.map +1 -1
  413. package/dist/errors/TimestampsRequired.d.ts +2 -3
  414. package/dist/errors/TimestampsRequired.d.ts.map +1 -1
  415. package/dist/errors/TimestampsRequired.js +2 -3
  416. package/dist/errors/TimestampsRequired.js.map +1 -1
  417. package/dist/errors/UnathorizedError.d.ts +2 -3
  418. package/dist/errors/UnathorizedError.d.ts.map +1 -1
  419. package/dist/errors/UnathorizedError.js +2 -3
  420. package/dist/errors/UnathorizedError.js.map +1 -1
  421. package/dist/errors/ValidationError.d.ts +2 -3
  422. package/dist/errors/ValidationError.d.ts.map +1 -1
  423. package/dist/errors/ValidationError.js +2 -3
  424. package/dist/errors/ValidationError.js.map +1 -1
  425. package/dist/errors/index.d.ts +21 -19
  426. package/dist/errors/index.d.ts.map +1 -1
  427. package/dist/errors/index.js +21 -19
  428. package/dist/errors/index.js.map +1 -1
  429. package/dist/exports/i18n/he.d.ts +2 -0
  430. package/dist/exports/i18n/he.d.ts.map +1 -0
  431. package/dist/exports/i18n/he.js +3 -0
  432. package/dist/exports/i18n/he.js.map +1 -0
  433. package/dist/exports/index.d.ts +122 -0
  434. package/dist/exports/index.d.ts.map +1 -0
  435. package/dist/exports/index.js +103 -0
  436. package/dist/exports/index.js.map +1 -0
  437. package/dist/exports/node.d.ts +5 -0
  438. package/dist/exports/node.d.ts.map +1 -1
  439. package/dist/exports/node.js +5 -1
  440. package/dist/exports/node.js.map +1 -1
  441. package/dist/exports/shared.d.ts +19 -0
  442. package/dist/exports/shared.d.ts.map +1 -0
  443. package/dist/exports/shared.js +20 -0
  444. package/dist/exports/shared.js.map +1 -0
  445. package/dist/fields/config/client.d.ts +235 -79
  446. package/dist/fields/config/client.d.ts.map +1 -1
  447. package/dist/fields/config/client.js +2 -1
  448. package/dist/fields/config/client.js.map +1 -1
  449. package/dist/fields/config/sanitize.d.ts +7 -2
  450. package/dist/fields/config/sanitize.d.ts.map +1 -1
  451. package/dist/fields/config/sanitize.js +53 -34
  452. package/dist/fields/config/sanitize.js.map +1 -1
  453. package/dist/fields/config/sanitize.spec.js +76 -85
  454. package/dist/fields/config/sanitize.spec.js.map +1 -1
  455. package/dist/fields/config/schema.d.ts.map +1 -1
  456. package/dist/fields/config/schema.js +34 -7
  457. package/dist/fields/config/schema.js.map +1 -1
  458. package/dist/fields/config/types.d.ts +121 -45
  459. package/dist/fields/config/types.d.ts.map +1 -1
  460. package/dist/fields/config/types.js.map +1 -1
  461. package/dist/fields/getDefaultValue.d.ts +2 -2
  462. package/dist/fields/getDefaultValue.d.ts.map +1 -1
  463. package/dist/fields/getDefaultValue.js.map +1 -1
  464. package/dist/fields/getFieldPaths.d.ts +10 -0
  465. package/dist/fields/getFieldPaths.d.ts.map +1 -0
  466. package/dist/fields/getFieldPaths.js +45 -0
  467. package/dist/fields/getFieldPaths.js.map +1 -0
  468. package/dist/fields/hooks/afterChange/index.d.ts +8 -2
  469. package/dist/fields/hooks/afterChange/index.d.ts.map +1 -1
  470. package/dist/fields/hooks/afterChange/index.js +2 -0
  471. package/dist/fields/hooks/afterChange/index.js.map +1 -1
  472. package/dist/fields/hooks/afterChange/promise.d.ts +11 -3
  473. package/dist/fields/hooks/afterChange/promise.d.ts.map +1 -1
  474. package/dist/fields/hooks/afterChange/promise.js +67 -3
  475. package/dist/fields/hooks/afterChange/promise.js.map +1 -1
  476. package/dist/fields/hooks/afterChange/traverseFields.d.ts +5 -3
  477. package/dist/fields/hooks/afterChange/traverseFields.d.ts.map +1 -1
  478. package/dist/fields/hooks/afterChange/traverseFields.js +3 -1
  479. package/dist/fields/hooks/afterChange/traverseFields.js.map +1 -1
  480. package/dist/fields/hooks/afterRead/index.d.ts +4 -3
  481. package/dist/fields/hooks/afterRead/index.d.ts.map +1 -1
  482. package/dist/fields/hooks/afterRead/index.js +5 -2
  483. package/dist/fields/hooks/afterRead/index.js.map +1 -1
  484. package/dist/fields/hooks/afterRead/promise.d.ts +15 -3
  485. package/dist/fields/hooks/afterRead/promise.d.ts.map +1 -1
  486. package/dist/fields/hooks/afterRead/promise.js +146 -35
  487. package/dist/fields/hooks/afterRead/promise.js.map +1 -1
  488. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.d.ts +4 -3
  489. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.d.ts.map +1 -1
  490. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.js +16 -10
  491. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.js.map +1 -1
  492. package/dist/fields/hooks/afterRead/traverseFields.d.ts +9 -3
  493. package/dist/fields/hooks/afterRead/traverseFields.d.ts.map +1 -1
  494. package/dist/fields/hooks/afterRead/traverseFields.js +4 -1
  495. package/dist/fields/hooks/afterRead/traverseFields.js.map +1 -1
  496. package/dist/fields/hooks/beforeChange/index.d.ts +3 -3
  497. package/dist/fields/hooks/beforeChange/index.d.ts.map +1 -1
  498. package/dist/fields/hooks/beforeChange/index.js +3 -2
  499. package/dist/fields/hooks/beforeChange/index.js.map +1 -1
  500. package/dist/fields/hooks/beforeChange/promise.d.ts +11 -4
  501. package/dist/fields/hooks/beforeChange/promise.d.ts.map +1 -1
  502. package/dist/fields/hooks/beforeChange/promise.js +80 -11
  503. package/dist/fields/hooks/beforeChange/promise.js.map +1 -1
  504. package/dist/fields/hooks/beforeChange/traverseFields.d.ts +18 -5
  505. package/dist/fields/hooks/beforeChange/traverseFields.d.ts.map +1 -1
  506. package/dist/fields/hooks/beforeChange/traverseFields.js +4 -3
  507. package/dist/fields/hooks/beforeChange/traverseFields.js.map +1 -1
  508. package/dist/fields/hooks/beforeValidate/index.d.ts +2 -2
  509. package/dist/fields/hooks/beforeValidate/index.d.ts.map +1 -1
  510. package/dist/fields/hooks/beforeValidate/index.js +2 -0
  511. package/dist/fields/hooks/beforeValidate/index.js.map +1 -1
  512. package/dist/fields/hooks/beforeValidate/promise.d.ts +11 -3
  513. package/dist/fields/hooks/beforeValidate/promise.d.ts.map +1 -1
  514. package/dist/fields/hooks/beforeValidate/promise.js +71 -4
  515. package/dist/fields/hooks/beforeValidate/promise.js.map +1 -1
  516. package/dist/fields/hooks/beforeValidate/traverseFields.d.ts +11 -3
  517. package/dist/fields/hooks/beforeValidate/traverseFields.d.ts.map +1 -1
  518. package/dist/fields/hooks/beforeValidate/traverseFields.js +3 -1
  519. package/dist/fields/hooks/beforeValidate/traverseFields.js.map +1 -1
  520. package/dist/fields/validations.d.ts +6 -0
  521. package/dist/fields/validations.d.ts.map +1 -1
  522. package/dist/fields/validations.js +65 -7
  523. package/dist/fields/validations.js.map +1 -1
  524. package/dist/fields/validations.spec.js +1 -0
  525. package/dist/fields/validations.spec.js.map +1 -1
  526. package/dist/globals/config/client.d.ts +1 -1
  527. package/dist/globals/config/client.d.ts.map +1 -1
  528. package/dist/globals/config/client.js +2 -1
  529. package/dist/globals/config/client.js.map +1 -1
  530. package/dist/globals/config/sanitize.d.ts +2 -3
  531. package/dist/globals/config/sanitize.d.ts.map +1 -1
  532. package/dist/globals/config/sanitize.js +43 -37
  533. package/dist/globals/config/sanitize.js.map +1 -1
  534. package/dist/globals/config/schema.d.ts.map +1 -1
  535. package/dist/globals/config/schema.js +12 -2
  536. package/dist/globals/config/schema.js.map +1 -1
  537. package/dist/globals/config/types.d.ts +16 -10
  538. package/dist/globals/config/types.d.ts.map +1 -1
  539. package/dist/globals/config/types.js.map +1 -1
  540. package/dist/globals/operations/docAccess.d.ts +2 -2
  541. package/dist/globals/operations/docAccess.d.ts.map +1 -1
  542. package/dist/globals/operations/docAccess.js.map +1 -1
  543. package/dist/globals/operations/findOne.d.ts +2 -3
  544. package/dist/globals/operations/findOne.d.ts.map +1 -1
  545. package/dist/globals/operations/findOne.js +1 -0
  546. package/dist/globals/operations/findOne.js.map +1 -1
  547. package/dist/globals/operations/findVersionByID.d.ts +2 -2
  548. package/dist/globals/operations/findVersionByID.d.ts.map +1 -1
  549. package/dist/globals/operations/findVersionByID.js +1 -0
  550. package/dist/globals/operations/findVersionByID.js.map +1 -1
  551. package/dist/globals/operations/findVersions.d.ts +2 -2
  552. package/dist/globals/operations/findVersions.d.ts.map +1 -1
  553. package/dist/globals/operations/findVersions.js +1 -0
  554. package/dist/globals/operations/findVersions.js.map +1 -1
  555. package/dist/globals/operations/local/findOne.d.ts +4 -4
  556. package/dist/globals/operations/local/findOne.d.ts.map +1 -1
  557. package/dist/globals/operations/local/findOne.js.map +1 -1
  558. package/dist/globals/operations/local/findVersionByID.d.ts +4 -4
  559. package/dist/globals/operations/local/findVersionByID.d.ts.map +1 -1
  560. package/dist/globals/operations/local/findVersionByID.js.map +1 -1
  561. package/dist/globals/operations/local/findVersions.d.ts +4 -4
  562. package/dist/globals/operations/local/findVersions.d.ts.map +1 -1
  563. package/dist/globals/operations/local/findVersions.js.map +1 -1
  564. package/dist/globals/operations/local/restoreVersion.d.ts +4 -4
  565. package/dist/globals/operations/local/restoreVersion.d.ts.map +1 -1
  566. package/dist/globals/operations/local/restoreVersion.js.map +1 -1
  567. package/dist/globals/operations/local/update.d.ts +4 -4
  568. package/dist/globals/operations/local/update.d.ts.map +1 -1
  569. package/dist/globals/operations/local/update.js.map +1 -1
  570. package/dist/globals/operations/restoreVersion.d.ts +2 -2
  571. package/dist/globals/operations/restoreVersion.d.ts.map +1 -1
  572. package/dist/globals/operations/restoreVersion.js +1 -0
  573. package/dist/globals/operations/restoreVersion.js.map +1 -1
  574. package/dist/globals/operations/update.d.ts +2 -2
  575. package/dist/globals/operations/update.d.ts.map +1 -1
  576. package/dist/globals/operations/update.js +3 -1
  577. package/dist/globals/operations/update.js.map +1 -1
  578. package/dist/index.d.ts +23 -10
  579. package/dist/index.d.ts.map +1 -1
  580. package/dist/index.js +65 -14
  581. package/dist/index.js.map +1 -1
  582. package/dist/preferences/deleteUserPreferences.d.ts +2 -2
  583. package/dist/preferences/deleteUserPreferences.d.ts.map +1 -1
  584. package/dist/preferences/deleteUserPreferences.js.map +1 -1
  585. package/dist/preferences/operations/delete.js +2 -2
  586. package/dist/preferences/operations/delete.js.map +1 -1
  587. package/dist/preferences/operations/update.js +1 -1
  588. package/dist/preferences/operations/update.js.map +1 -1
  589. package/dist/preferences/requestHandlers/delete.d.ts.map +1 -1
  590. package/dist/preferences/requestHandlers/delete.js +18 -5
  591. package/dist/preferences/requestHandlers/delete.js.map +1 -1
  592. package/dist/preferences/requestHandlers/findOne.d.ts.map +1 -1
  593. package/dist/preferences/requestHandlers/findOne.js +18 -5
  594. package/dist/preferences/requestHandlers/findOne.js.map +1 -1
  595. package/dist/preferences/requestHandlers/update.d.ts.map +1 -1
  596. package/dist/preferences/requestHandlers/update.js +19 -7
  597. package/dist/preferences/requestHandlers/update.js.map +1 -1
  598. package/dist/preferences/types.d.ts +3 -3
  599. package/dist/preferences/types.d.ts.map +1 -1
  600. package/dist/preferences/types.js.map +1 -1
  601. package/dist/translations/getLocalI18n.d.ts +1 -1
  602. package/dist/translations/getLocalI18n.d.ts.map +1 -1
  603. package/dist/translations/getLocalI18n.js +1 -1
  604. package/dist/translations/getLocalI18n.js.map +1 -1
  605. package/dist/types/index.d.ts +21 -29
  606. package/dist/types/index.d.ts.map +1 -1
  607. package/dist/types/index.js.map +1 -1
  608. package/dist/uploads/canResizeImage.d.ts +1 -1
  609. package/dist/uploads/canResizeImage.d.ts.map +1 -1
  610. package/dist/uploads/canResizeImage.js +1 -1
  611. package/dist/uploads/canResizeImage.js.map +1 -1
  612. package/dist/uploads/cropImage.d.ts +1 -1
  613. package/dist/uploads/cropImage.d.ts.map +1 -1
  614. package/dist/uploads/cropImage.js +9 -2
  615. package/dist/uploads/cropImage.js.map +1 -1
  616. package/dist/uploads/deleteAssociatedFiles.d.ts +2 -2
  617. package/dist/uploads/deleteAssociatedFiles.d.ts.map +1 -1
  618. package/dist/uploads/deleteAssociatedFiles.js.map +1 -1
  619. package/dist/uploads/docWithFilenameExists.d.ts +2 -2
  620. package/dist/uploads/docWithFilenameExists.d.ts.map +1 -1
  621. package/dist/uploads/docWithFilenameExists.js.map +1 -1
  622. package/dist/uploads/generateFileData.d.ts +5 -3
  623. package/dist/uploads/generateFileData.d.ts.map +1 -1
  624. package/dist/uploads/generateFileData.js +79 -31
  625. package/dist/uploads/generateFileData.js.map +1 -1
  626. package/dist/uploads/getBaseFields.d.ts.map +1 -1
  627. package/dist/uploads/getBaseFields.js +23 -4
  628. package/dist/uploads/getBaseFields.js.map +1 -1
  629. package/dist/uploads/getExternalFile.d.ts +5 -4
  630. package/dist/uploads/getExternalFile.d.ts.map +1 -1
  631. package/dist/uploads/getExternalFile.js +10 -6
  632. package/dist/uploads/getExternalFile.js.map +1 -1
  633. package/dist/uploads/getFileByPath.d.ts +2 -2
  634. package/dist/uploads/getFileByPath.d.ts.map +1 -1
  635. package/dist/uploads/getFileByPath.js +2 -3
  636. package/dist/uploads/getFileByPath.js.map +1 -1
  637. package/dist/uploads/getImageSize.d.ts +2 -2
  638. package/dist/uploads/getImageSize.d.ts.map +1 -1
  639. package/dist/uploads/getImageSize.js +19 -5
  640. package/dist/uploads/getImageSize.js.map +1 -1
  641. package/dist/uploads/getSafeFilename.d.ts +4 -4
  642. package/dist/uploads/getSafeFilename.d.ts.map +1 -1
  643. package/dist/uploads/getSafeFilename.js +1 -2
  644. package/dist/uploads/getSafeFilename.js.map +1 -1
  645. package/dist/uploads/imageResizer.d.ts +9 -11
  646. package/dist/uploads/imageResizer.d.ts.map +1 -1
  647. package/dist/uploads/imageResizer.js +73 -37
  648. package/dist/uploads/imageResizer.js.map +1 -1
  649. package/dist/uploads/isImage.d.ts +1 -1
  650. package/dist/uploads/isImage.d.ts.map +1 -1
  651. package/dist/uploads/isImage.js +1 -1
  652. package/dist/uploads/isImage.js.map +1 -1
  653. package/dist/uploads/tempFile.d.ts +7 -0
  654. package/dist/uploads/tempFile.d.ts.map +1 -0
  655. package/dist/uploads/tempFile.js +39 -0
  656. package/dist/uploads/tempFile.js.map +1 -0
  657. package/dist/uploads/types.d.ts +28 -5
  658. package/dist/uploads/types.d.ts.map +1 -1
  659. package/dist/uploads/types.js.map +1 -1
  660. package/dist/uploads/unlinkTempFiles.d.ts +2 -2
  661. package/dist/uploads/unlinkTempFiles.d.ts.map +1 -1
  662. package/dist/uploads/unlinkTempFiles.js.map +1 -1
  663. package/dist/uploads/uploadFiles.d.ts +2 -2
  664. package/dist/uploads/uploadFiles.d.ts.map +1 -1
  665. package/dist/uploads/uploadFiles.js.map +1 -1
  666. package/dist/utilities/checkDuplicateCollections.js +1 -1
  667. package/dist/utilities/checkDuplicateCollections.js.map +1 -1
  668. package/dist/utilities/commitTransaction.d.ts +2 -2
  669. package/dist/utilities/commitTransaction.d.ts.map +1 -1
  670. package/dist/utilities/commitTransaction.js.map +1 -1
  671. package/dist/utilities/configToJSONSchema.d.ts.map +1 -1
  672. package/dist/utilities/configToJSONSchema.js +32 -1
  673. package/dist/utilities/configToJSONSchema.js.map +1 -1
  674. package/dist/utilities/configToJSONSchema.spec.js +98 -2
  675. package/dist/utilities/configToJSONSchema.spec.js.map +1 -1
  676. package/dist/utilities/createLocalReq.d.ts +3 -3
  677. package/dist/utilities/createLocalReq.d.ts.map +1 -1
  678. package/dist/utilities/createLocalReq.js +8 -5
  679. package/dist/utilities/createLocalReq.js.map +1 -1
  680. package/dist/utilities/getEntityPolicies.d.ts +2 -2
  681. package/dist/utilities/getEntityPolicies.d.ts.map +1 -1
  682. package/dist/utilities/getEntityPolicies.js.map +1 -1
  683. package/dist/utilities/getUniqueListBy.d.ts +1 -1
  684. package/dist/utilities/getUniqueListBy.d.ts.map +1 -1
  685. package/dist/utilities/getUniqueListBy.js +1 -1
  686. package/dist/utilities/getUniqueListBy.js.map +1 -1
  687. package/dist/utilities/importWithoutClientFiles.d.ts.map +1 -1
  688. package/dist/utilities/importWithoutClientFiles.js +10 -4
  689. package/dist/utilities/importWithoutClientFiles.js.map +1 -1
  690. package/dist/utilities/initTransaction.d.ts +2 -2
  691. package/dist/utilities/initTransaction.d.ts.map +1 -1
  692. package/dist/utilities/initTransaction.js.map +1 -1
  693. package/dist/utilities/isEntityHidden.d.ts +2 -2
  694. package/dist/utilities/isEntityHidden.d.ts.map +1 -1
  695. package/dist/utilities/isEntityHidden.js.map +1 -1
  696. package/dist/utilities/isReactComponent.d.ts +2 -3
  697. package/dist/utilities/isReactComponent.d.ts.map +1 -1
  698. package/dist/utilities/isReactComponent.js +27 -10
  699. package/dist/utilities/isReactComponent.js.map +1 -1
  700. package/dist/utilities/killTransaction.d.ts +2 -2
  701. package/dist/utilities/killTransaction.d.ts.map +1 -1
  702. package/dist/utilities/killTransaction.js.map +1 -1
  703. package/dist/utilities/parseCookies.js +1 -1
  704. package/dist/utilities/parseCookies.js.map +1 -1
  705. package/dist/utilities/telemetry/events/adminInit.d.ts +2 -2
  706. package/dist/utilities/telemetry/events/adminInit.d.ts.map +1 -1
  707. package/dist/utilities/telemetry/events/adminInit.js.map +1 -1
  708. package/dist/utilities/telemetry/index.d.ts +9 -0
  709. package/dist/utilities/telemetry/index.d.ts.map +1 -1
  710. package/dist/utilities/telemetry/index.js +64 -17
  711. package/dist/utilities/telemetry/index.js.map +1 -1
  712. package/dist/versions/defaults.d.ts +4 -0
  713. package/dist/versions/defaults.d.ts.map +1 -0
  714. package/dist/versions/defaults.js +5 -0
  715. package/dist/versions/defaults.js.map +1 -0
  716. package/dist/versions/deleteCollectionVersions.d.ts +2 -2
  717. package/dist/versions/deleteCollectionVersions.d.ts.map +1 -1
  718. package/dist/versions/deleteCollectionVersions.js.map +1 -1
  719. package/dist/versions/drafts/replaceWithDraftIfAvailable.d.ts +2 -2
  720. package/dist/versions/drafts/replaceWithDraftIfAvailable.d.ts.map +1 -1
  721. package/dist/versions/drafts/replaceWithDraftIfAvailable.js.map +1 -1
  722. package/dist/versions/enforceMaxVersions.d.ts +2 -2
  723. package/dist/versions/enforceMaxVersions.d.ts.map +1 -1
  724. package/dist/versions/enforceMaxVersions.js +1 -1
  725. package/dist/versions/enforceMaxVersions.js.map +1 -1
  726. package/dist/versions/getLatestCollectionVersion.d.ts +2 -2
  727. package/dist/versions/getLatestCollectionVersion.d.ts.map +1 -1
  728. package/dist/versions/getLatestCollectionVersion.js.map +1 -1
  729. package/dist/versions/getLatestGlobalVersion.d.ts +2 -2
  730. package/dist/versions/getLatestGlobalVersion.d.ts.map +1 -1
  731. package/dist/versions/getLatestGlobalVersion.js.map +1 -1
  732. package/dist/versions/saveVersion.d.ts +2 -2
  733. package/dist/versions/saveVersion.d.ts.map +1 -1
  734. package/dist/versions/saveVersion.js +2 -1
  735. package/dist/versions/saveVersion.js.map +1 -1
  736. package/dist/versions/types.d.ts +2 -0
  737. package/dist/versions/types.d.ts.map +1 -1
  738. package/dist/versions/types.js.map +1 -1
  739. package/package.json +98 -114
  740. package/auth.d.ts +0 -6
  741. package/auth.js +0 -6
  742. package/config.d.ts +0 -14
  743. package/config.js +0 -14
  744. package/database.d.ts +0 -23
  745. package/database.js +0 -22
  746. package/dist/email/build.d.ts +0 -5
  747. package/dist/email/build.d.ts.map +0 -1
  748. package/dist/email/build.js +0 -63
  749. package/dist/email/build.js.map +0 -1
  750. package/dist/email/mockHandler.d.ts +0 -5
  751. package/dist/email/mockHandler.d.ts.map +0 -1
  752. package/dist/email/mockHandler.js +0 -24
  753. package/dist/email/mockHandler.js.map +0 -1
  754. package/dist/exports/auth.d.ts +0 -6
  755. package/dist/exports/auth.d.ts.map +0 -1
  756. package/dist/exports/auth.js +0 -6
  757. package/dist/exports/auth.js.map +0 -1
  758. package/dist/exports/components/utilities.d.ts +0 -2
  759. package/dist/exports/components/utilities.d.ts.map +0 -1
  760. package/dist/exports/components/utilities.js +0 -2
  761. package/dist/exports/components/utilities.js.map +0 -1
  762. package/dist/exports/config.d.ts +0 -14
  763. package/dist/exports/config.d.ts.map +0 -1
  764. package/dist/exports/config.js +0 -14
  765. package/dist/exports/config.js.map +0 -1
  766. package/dist/exports/database.d.ts +0 -23
  767. package/dist/exports/database.d.ts.map +0 -1
  768. package/dist/exports/database.js +0 -22
  769. package/dist/exports/database.js.map +0 -1
  770. package/dist/exports/errors.d.ts +0 -2
  771. package/dist/exports/errors.d.ts.map +0 -1
  772. package/dist/exports/errors.js +0 -3
  773. package/dist/exports/errors.js.map +0 -1
  774. package/dist/exports/fields/index.d.ts +0 -3
  775. package/dist/exports/fields/index.d.ts.map +0 -1
  776. package/dist/exports/fields/index.js +0 -4
  777. package/dist/exports/fields/index.js.map +0 -1
  778. package/dist/exports/fields/validations.d.ts +0 -2
  779. package/dist/exports/fields/validations.d.ts.map +0 -1
  780. package/dist/exports/fields/validations.js +0 -3
  781. package/dist/exports/fields/validations.js.map +0 -1
  782. package/dist/exports/operations.d.ts +0 -30
  783. package/dist/exports/operations.d.ts.map +0 -1
  784. package/dist/exports/operations.js +0 -31
  785. package/dist/exports/operations.js.map +0 -1
  786. package/dist/exports/types.d.ts +0 -17
  787. package/dist/exports/types.d.ts.map +0 -1
  788. package/dist/exports/types.js +0 -5
  789. package/dist/exports/types.js.map +0 -1
  790. package/dist/exports/uploads.d.ts +0 -2
  791. package/dist/exports/uploads.d.ts.map +0 -1
  792. package/dist/exports/uploads.js +0 -3
  793. package/dist/exports/uploads.js.map +0 -1
  794. package/dist/exports/utilities.d.ts +0 -31
  795. package/dist/exports/utilities.d.ts.map +0 -1
  796. package/dist/exports/utilities.js +0 -32
  797. package/dist/exports/utilities.js.map +0 -1
  798. package/dist/exports/versions.d.ts +0 -9
  799. package/dist/exports/versions.d.ts.map +0 -1
  800. package/dist/exports/versions.js +0 -9
  801. package/dist/exports/versions.js.map +0 -1
  802. package/errors.d.ts +0 -2
  803. package/errors.js +0 -3
  804. package/node.d.ts +0 -3
  805. package/node.js +0 -4
  806. package/operations.d.ts +0 -30
  807. package/operations.js +0 -31
  808. package/src/index.ts +0 -498
  809. package/types.d.ts +0 -17
  810. package/types.js +0 -5
  811. package/uploads.d.ts +0 -2
  812. package/uploads.js +0 -3
  813. package/utilities.d.ts +0 -31
  814. package/utilities.js +0 -32
  815. package/versions.d.ts +0 -9
  816. package/versions.js +0 -9
@@ -6,40 +6,16 @@ import type payload from '../index.js';
6
6
  import type { GeneratedTypes } from '../index.js';
7
7
  import type { validOperators } from './constants.js';
8
8
  export type { Payload as Payload } from '../index.js';
9
- export type UploadEdits = {
10
- crop?: {
11
- height?: number;
12
- width?: number;
13
- x?: number;
14
- y?: number;
15
- };
16
- focalPoint?: {
17
- x?: number;
18
- y?: number;
19
- };
20
- };
21
- export type CustomPayloadRequest<U = unknown> = {
9
+ export type CustomPayloadRequestProperties = {
22
10
  context: RequestContext;
23
- /** Data from the request body */
24
- data?: Record<string, unknown>;
25
11
  /** The locale that should be used for a field when it is not translated to the requested locale */
26
12
  fallbackLocale?: string;
27
- /**
28
- * The files that were uploaded during this request
29
- */
30
- file?: {
31
- data: Buffer;
32
- mimetype: string;
33
- name: string;
34
- size: number;
35
- tempFilePath?: string;
36
- };
37
13
  i18n: I18n;
38
14
  /**
39
15
  * The requested locale if specified
40
16
  * Only available for localized collections
41
17
  */
42
- locale?: string;
18
+ locale?: GeneratedTypes['locale'];
43
19
  /**
44
20
  * The payload object
45
21
  */
@@ -70,10 +46,23 @@ export type CustomPayloadRequest<U = unknown> = {
70
46
  * Used to ensure consistency when multiple operations try to create a transaction concurrently on the same request
71
47
  */
72
48
  transactionIDPromise?: Promise<void>;
73
- /** The signed in user */
74
- user: (U & GeneratedTypes['user']) | null;
49
+ /** The signed-in user */
50
+ user: GeneratedTypes['user'] | null;
75
51
  } & Pick<URL, 'hash' | 'host' | 'href' | 'origin' | 'pathname' | 'port' | 'protocol' | 'search' | 'searchParams'>;
76
- export type PayloadRequest<U = unknown> = Partial<Request> & Required<Pick<Request, 'headers'>> & CustomPayloadRequest<U>;
52
+ export type PayloadRequestData = {
53
+ /** Data from the request body */
54
+ data?: Record<string, unknown>;
55
+ /** The locale that should be used for a field when it is not translated to the requested locale */
56
+ file?: {
57
+ data: Buffer;
58
+ mimetype: string;
59
+ name: string;
60
+ size: number;
61
+ tempFilePath?: string;
62
+ };
63
+ };
64
+ export type PayloadRequest = Partial<Request> & Required<Pick<Request, 'headers'>> & CustomPayloadRequestProperties;
65
+ export type PayloadRequestWithData = PayloadRequest & PayloadRequestData;
77
66
  export interface RequestContext {
78
67
  [key: string]: unknown;
79
68
  }
@@ -92,4 +81,7 @@ export type VersionOperations = 'readVersions';
92
81
  export type AuthOperations = 'unlock';
93
82
  export type AllOperations = AuthOperations | Operation | VersionOperations;
94
83
  export declare function docHasTimestamps(doc: any): doc is TypeWithTimestamps;
84
+ export type IfAny<T, Y, N> = 0 extends 1 & T ? Y : N;
85
+ export type IsAny<T> = IfAny<T, true, false>;
86
+ export type ReplaceAny<T, DefaultType> = IsAny<T> extends true ? DefaultType : T;
95
87
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/types/index.ts"],"sourcesContent":["import type { I18n, TFunction } from '@payloadcms/translations'\nimport type DataLoader from 'dataloader'\n\nimport type { User } from '../auth/types.js'\nimport type { TypeWithID, TypeWithTimestamps } from '../collections/config/types.js'\nimport type payload from '../index.js'\nimport type { GeneratedTypes } from '../index.js'\nimport type { validOperators } from './constants.js'\nexport type { Payload as Payload } from '../index.js'\n\nexport type UploadEdits = {\n crop?: {\n height?: number\n width?: number\n x?: number\n y?: number\n }\n focalPoint?: {\n x?: number\n y?: number\n }\n}\n\nexport type CustomPayloadRequest<U = unknown> = {\n context: RequestContext\n /** Data from the request body */\n data?: Record<string, unknown>\n /** The locale that should be used for a field when it is not translated to the requested locale */\n fallbackLocale?: string\n /**\n * The files that were uploaded during this request\n */\n file?: {\n data: Buffer\n mimetype: string\n name: string\n size: number\n tempFilePath?: string\n }\n i18n: I18n\n /**\n * The requested locale if specified\n * Only available for localized collections\n */\n locale?: string\n /**\n * The payload object\n */\n payload: typeof payload\n /**\n * The context in which the request is being made\n */\n payloadAPI: 'GraphQL' | 'REST' | 'local'\n /** Optimized document loader */\n payloadDataLoader?: DataLoader<string, TypeWithID>\n /** Resized versions of the image that was uploaded during this request */\n payloadUploadSizes?: Record<string, Buffer>\n /** Query params on the request */\n query: Record<string, unknown>\n /** The route parameters\n * @example\n * /:collection/:id -> /posts/123\n * { collection: 'posts', id: '123' }\n */\n routeParams?: Record<string, unknown>\n /** Translate function - duplicate of i18n.t */\n t: TFunction\n /**\n * Identifier for the database transaction for interactions in a single, all-or-nothing operation.\n */\n transactionID?: number | string\n /**\n * Used to ensure consistency when multiple operations try to create a transaction concurrently on the same request\n */\n transactionIDPromise?: Promise<void>\n /** The signed in user */\n user: (U & GeneratedTypes['user']) | null\n} & Pick<\n URL,\n 'hash' | 'host' | 'href' | 'origin' | 'pathname' | 'port' | 'protocol' | 'search' | 'searchParams'\n>\nexport type PayloadRequest<U = unknown> = Partial<Request> &\n Required<Pick<Request, 'headers'>> &\n CustomPayloadRequest<U>\nexport interface RequestContext {\n [key: string]: unknown\n}\n\nexport type Operator = (typeof validOperators)[number]\n\nexport type WhereField = {\n [key in Operator]?: unknown\n}\n\nexport type Where = {\n [key: string]: Where[] | WhereField\n and?: Where[]\n or?: Where[]\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type Document = any\n\nexport type Operation = 'create' | 'delete' | 'read' | 'update'\nexport type VersionOperations = 'readVersions'\nexport type AuthOperations = 'unlock'\nexport type AllOperations = AuthOperations | Operation | VersionOperations\n\nexport function docHasTimestamps(doc: any): doc is TypeWithTimestamps {\n return doc?.createdAt && doc?.updatedAt\n}\n"],"names":["docHasTimestamps","doc","createdAt","updatedAt"],"rangeMappings":";;","mappings":"AA4GA,OAAO,SAASA,iBAAiBC,GAAQ;IACvC,OAAOA,KAAKC,aAAaD,KAAKE;AAChC"}
1
+ {"version":3,"sources":["../../src/types/index.ts"],"sourcesContent":["import type { I18n, TFunction } from '@payloadcms/translations'\nimport type DataLoader from 'dataloader'\n\nimport type { TypeWithID, TypeWithTimestamps } from '../collections/config/types.js'\nimport type payload from '../index.js'\nimport type { GeneratedTypes } from '../index.js'\nimport type { validOperators } from './constants.js'\nexport type { Payload as Payload } from '../index.js'\n\nexport type CustomPayloadRequestProperties = {\n context: RequestContext\n /** The locale that should be used for a field when it is not translated to the requested locale */\n fallbackLocale?: string\n i18n: I18n\n /**\n * The requested locale if specified\n * Only available for localized collections\n */\n locale?: GeneratedTypes['locale']\n /**\n * The payload object\n */\n payload: typeof payload\n /**\n * The context in which the request is being made\n */\n payloadAPI: 'GraphQL' | 'REST' | 'local'\n /** Optimized document loader */\n payloadDataLoader?: DataLoader<string, TypeWithID>\n /** Resized versions of the image that was uploaded during this request */\n payloadUploadSizes?: Record<string, Buffer>\n /** Query params on the request */\n query: Record<string, unknown>\n /** The route parameters\n * @example\n * /:collection/:id -> /posts/123\n * { collection: 'posts', id: '123' }\n */\n routeParams?: Record<string, unknown>\n /** Translate function - duplicate of i18n.t */\n t: TFunction\n /**\n * Identifier for the database transaction for interactions in a single, all-or-nothing operation.\n */\n transactionID?: number | string\n /**\n * Used to ensure consistency when multiple operations try to create a transaction concurrently on the same request\n */\n transactionIDPromise?: Promise<void>\n /** The signed-in user */\n user: GeneratedTypes['user'] | null\n} & Pick<\n URL,\n 'hash' | 'host' | 'href' | 'origin' | 'pathname' | 'port' | 'protocol' | 'search' | 'searchParams'\n>\nexport type PayloadRequestData = {\n /** Data from the request body */\n data?: Record<string, unknown>\n /** The locale that should be used for a field when it is not translated to the requested locale */\n file?: {\n data: Buffer\n mimetype: string\n name: string\n size: number\n tempFilePath?: string\n }\n}\nexport type PayloadRequest = Partial<Request> &\n Required<Pick<Request, 'headers'>> &\n CustomPayloadRequestProperties\nexport type PayloadRequestWithData = PayloadRequest & PayloadRequestData\nexport interface RequestContext {\n [key: string]: unknown\n}\n\nexport type Operator = (typeof validOperators)[number]\n\nexport type WhereField = {\n [key in Operator]?: unknown\n}\n\nexport type Where = {\n [key: string]: Where[] | WhereField\n and?: Where[]\n or?: Where[]\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type Document = any\n\nexport type Operation = 'create' | 'delete' | 'read' | 'update'\nexport type VersionOperations = 'readVersions'\nexport type AuthOperations = 'unlock'\nexport type AllOperations = AuthOperations | Operation | VersionOperations\n\nexport function docHasTimestamps(doc: any): doc is TypeWithTimestamps {\n return doc?.createdAt && doc?.updatedAt\n}\n\nexport type IfAny<T, Y, N> = 0 extends 1 & T ? Y : N // This is a commonly used trick to detect 'any'\nexport type IsAny<T> = IfAny<T, true, false>\nexport type ReplaceAny<T, DefaultType> = IsAny<T> extends true ? DefaultType : T\n"],"names":["docHasTimestamps","doc","createdAt","updatedAt"],"rangeMappings":";;","mappings":"AA+FA,OAAO,SAASA,iBAAiBC,GAAQ;IACvC,OAAOA,KAAKC,aAAaD,KAAKE;AAChC"}
@@ -1,2 +1,2 @@
1
- export default function canResizeImage(mimeType: string): boolean;
1
+ export declare function canResizeImage(mimeType: string): boolean;
2
2
  //# sourceMappingURL=canResizeImage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"canResizeImage.d.ts","sourceRoot":"","sources":["../../src/uploads/canResizeImage.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEhE"}
1
+ {"version":3,"file":"canResizeImage.d.ts","sourceRoot":"","sources":["../../src/uploads/canResizeImage.ts"],"names":[],"mappings":"AAAA,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAExD"}
@@ -1,4 +1,4 @@
1
- export default function canResizeImage(mimeType) {
1
+ export function canResizeImage(mimeType) {
2
2
  return [
3
3
  'image/jpeg',
4
4
  'image/png',
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/uploads/canResizeImage.ts"],"sourcesContent":["export default function canResizeImage(mimeType: string): boolean {\n return ['image/jpeg', 'image/png', 'image/gif', 'image/webp', 'image/tiff'].indexOf(mimeType) > -1\n}\n"],"names":["canResizeImage","mimeType","indexOf"],"rangeMappings":";;;;;;;;","mappings":"AAAA,eAAe,SAASA,eAAeC,QAAgB;IACrD,OAAO;QAAC;QAAc;QAAa;QAAa;QAAc;KAAa,CAACC,OAAO,CAACD,YAAY,CAAC;AACnG"}
1
+ {"version":3,"sources":["../../src/uploads/canResizeImage.ts"],"sourcesContent":["export function canResizeImage(mimeType: string): boolean {\n return ['image/jpeg', 'image/png', 'image/gif', 'image/webp', 'image/tiff'].indexOf(mimeType) > -1\n}\n"],"names":["canResizeImage","mimeType","indexOf"],"rangeMappings":";;;;;;;;","mappings":"AAAA,OAAO,SAASA,eAAeC,QAAgB;IAC7C,OAAO;QAAC;QAAc;QAAa;QAAa;QAAc;KAAa,CAACC,OAAO,CAACD,YAAY,CAAC;AACnG"}
@@ -1,5 +1,5 @@
1
1
  export declare const percentToPixel: (value: any, dimension: any) => number;
2
- export default function cropImage({ cropData, dimensions, file, sharp }: {
2
+ export declare function cropImage({ cropData, dimensions, file, sharp }: {
3
3
  cropData: any;
4
4
  dimensions: any;
5
5
  file: any;
@@ -1 +1 @@
1
- {"version":3,"file":"cropImage.d.ts","sourceRoot":"","sources":["../../src/uploads/cropImage.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,wCAE1B,CAAA;AAED,wBAA8B,SAAS,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE;;;;;CAAA,gBAoB5E"}
1
+ {"version":3,"file":"cropImage.d.ts","sourceRoot":"","sources":["../../src/uploads/cropImage.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc,wCAE1B,CAAA;AAED,wBAAsB,SAAS,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE;;;;;CAAA,gBA0BpE"}
@@ -1,16 +1,23 @@
1
1
  export const percentToPixel = (value, dimension)=>{
2
2
  return Math.floor(parseFloat(value) / 100 * dimension);
3
3
  };
4
- export default async function cropImage({ cropData, dimensions, file, sharp }) {
4
+ export async function cropImage({ cropData, dimensions, file, sharp }) {
5
5
  try {
6
6
  const { height, width, x, y } = cropData;
7
+ const fileIsAnimatedType = [
8
+ 'image/avif',
9
+ 'image/gif',
10
+ 'image/webp'
11
+ ].includes(file.mimetype);
12
+ const sharpOptions = {};
13
+ if (fileIsAnimatedType) sharpOptions.animated = true;
7
14
  const formattedCropData = {
8
15
  height: percentToPixel(height, dimensions.height),
9
16
  left: percentToPixel(x, dimensions.width),
10
17
  top: percentToPixel(y, dimensions.height),
11
18
  width: percentToPixel(width, dimensions.width)
12
19
  };
13
- const cropped = sharp(file.tempFilePath || file.data).extract(formattedCropData);
20
+ const cropped = sharp(file.tempFilePath || file.data, sharpOptions).extract(formattedCropData);
14
21
  return await cropped.toBuffer({
15
22
  resolveWithObject: true
16
23
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/uploads/cropImage.ts"],"sourcesContent":["export const percentToPixel = (value, dimension) => {\n return Math.floor((parseFloat(value) / 100) * dimension)\n}\n\nexport default async function cropImage({ cropData, dimensions, file, sharp }) {\n try {\n const { height, width, x, y } = cropData\n\n const formattedCropData = {\n height: percentToPixel(height, dimensions.height),\n left: percentToPixel(x, dimensions.width),\n top: percentToPixel(y, dimensions.height),\n width: percentToPixel(width, dimensions.width),\n }\n\n const cropped = sharp(file.tempFilePath || file.data).extract(formattedCropData)\n\n return await cropped.toBuffer({\n resolveWithObject: true,\n })\n } catch (error) {\n console.error(`Error cropping image:`, error)\n throw error\n }\n}\n"],"names":["percentToPixel","value","dimension","Math","floor","parseFloat","cropImage","cropData","dimensions","file","sharp","height","width","x","y","formattedCropData","left","top","cropped","tempFilePath","data","extract","toBuffer","resolveWithObject","error","console"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,OAAO,MAAMA,iBAAiB,CAACC,OAAOC;IACpC,OAAOC,KAAKC,KAAK,CAAC,AAACC,WAAWJ,SAAS,MAAOC;AAChD,EAAC;AAED,eAAe,eAAeI,UAAU,EAAEC,QAAQ,EAAEC,UAAU,EAAEC,IAAI,EAAEC,KAAK,EAAE;IAC3E,IAAI;QACF,MAAM,EAAEC,MAAM,EAAEC,KAAK,EAAEC,CAAC,EAAEC,CAAC,EAAE,GAAGP;QAEhC,MAAMQ,oBAAoB;YACxBJ,QAAQX,eAAeW,QAAQH,WAAWG,MAAM;YAChDK,MAAMhB,eAAea,GAAGL,WAAWI,KAAK;YACxCK,KAAKjB,eAAec,GAAGN,WAAWG,MAAM;YACxCC,OAAOZ,eAAeY,OAAOJ,WAAWI,KAAK;QAC/C;QAEA,MAAMM,UAAUR,MAAMD,KAAKU,YAAY,IAAIV,KAAKW,IAAI,EAAEC,OAAO,CAACN;QAE9D,OAAO,MAAMG,QAAQI,QAAQ,CAAC;YAC5BC,mBAAmB;QACrB;IACF,EAAE,OAAOC,OAAO;QACdC,QAAQD,KAAK,CAAC,CAAC,qBAAqB,CAAC,EAAEA;QACvC,MAAMA;IACR;AACF"}
1
+ {"version":3,"sources":["../../src/uploads/cropImage.ts"],"sourcesContent":["import type { SharpOptions } from 'sharp'\n\nexport const percentToPixel = (value, dimension) => {\n return Math.floor((parseFloat(value) / 100) * dimension)\n}\n\nexport async function cropImage({ cropData, dimensions, file, sharp }) {\n try {\n const { height, width, x, y } = cropData\n\n const fileIsAnimatedType = ['image/avif', 'image/gif', 'image/webp'].includes(file.mimetype)\n\n const sharpOptions: SharpOptions = {}\n\n if (fileIsAnimatedType) sharpOptions.animated = true\n\n const formattedCropData = {\n height: percentToPixel(height, dimensions.height),\n left: percentToPixel(x, dimensions.width),\n top: percentToPixel(y, dimensions.height),\n width: percentToPixel(width, dimensions.width),\n }\n\n const cropped = sharp(file.tempFilePath || file.data, sharpOptions).extract(formattedCropData)\n\n return await cropped.toBuffer({\n resolveWithObject: true,\n })\n } catch (error) {\n console.error(`Error cropping image:`, error)\n throw error\n }\n}\n"],"names":["percentToPixel","value","dimension","Math","floor","parseFloat","cropImage","cropData","dimensions","file","sharp","height","width","x","y","fileIsAnimatedType","includes","mimetype","sharpOptions","animated","formattedCropData","left","top","cropped","tempFilePath","data","extract","toBuffer","resolveWithObject","error","console"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAEA,OAAO,MAAMA,iBAAiB,CAACC,OAAOC;IACpC,OAAOC,KAAKC,KAAK,CAAC,AAACC,WAAWJ,SAAS,MAAOC;AAChD,EAAC;AAED,OAAO,eAAeI,UAAU,EAAEC,QAAQ,EAAEC,UAAU,EAAEC,IAAI,EAAEC,KAAK,EAAE;IACnE,IAAI;QACF,MAAM,EAAEC,MAAM,EAAEC,KAAK,EAAEC,CAAC,EAAEC,CAAC,EAAE,GAAGP;QAEhC,MAAMQ,qBAAqB;YAAC;YAAc;YAAa;SAAa,CAACC,QAAQ,CAACP,KAAKQ,QAAQ;QAE3F,MAAMC,eAA6B,CAAC;QAEpC,IAAIH,oBAAoBG,aAAaC,QAAQ,GAAG;QAEhD,MAAMC,oBAAoB;YACxBT,QAAQX,eAAeW,QAAQH,WAAWG,MAAM;YAChDU,MAAMrB,eAAea,GAAGL,WAAWI,KAAK;YACxCU,KAAKtB,eAAec,GAAGN,WAAWG,MAAM;YACxCC,OAAOZ,eAAeY,OAAOJ,WAAWI,KAAK;QAC/C;QAEA,MAAMW,UAAUb,MAAMD,KAAKe,YAAY,IAAIf,KAAKgB,IAAI,EAAEP,cAAcQ,OAAO,CAACN;QAE5E,OAAO,MAAMG,QAAQI,QAAQ,CAAC;YAC5BC,mBAAmB;QACrB;IACF,EAAE,OAAOC,OAAO;QACdC,QAAQD,KAAK,CAAC,CAAC,qBAAqB,CAAC,EAAEA;QACvC,MAAMA;IACR;AACF"}
@@ -1,6 +1,6 @@
1
1
  import type { SanitizedCollectionConfig } from '../collections/config/types.js';
2
2
  import type { SanitizedConfig } from '../config/types.js';
3
- import type { PayloadRequest } from '../types/index.js';
3
+ import type { PayloadRequestWithData } from '../types/index.js';
4
4
  import type { FileToSave } from './types.js';
5
5
  type Args = {
6
6
  collectionConfig: SanitizedCollectionConfig;
@@ -8,7 +8,7 @@ type Args = {
8
8
  doc: Record<string, unknown>;
9
9
  files?: FileToSave[];
10
10
  overrideDelete: boolean;
11
- req: PayloadRequest;
11
+ req: PayloadRequestWithData;
12
12
  };
13
13
  export declare const deleteAssociatedFiles: (args: Args) => Promise<void>;
14
14
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"deleteAssociatedFiles.d.ts","sourceRoot":"","sources":["../../src/uploads/deleteAssociatedFiles.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAC/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,KAAK,EAAY,UAAU,EAAE,MAAM,YAAY,CAAA;AAKtD,KAAK,IAAI,GAAG;IACV,gBAAgB,EAAE,yBAAyB,CAAA;IAC3C,MAAM,EAAE,eAAe,CAAA;IACvB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,KAAK,CAAC,EAAE,UAAU,EAAE,CAAA;IACpB,cAAc,EAAE,OAAO,CAAA;IACvB,GAAG,EAAE,cAAc,CAAA;CACpB,CAAA;AAED,eAAO,MAAM,qBAAqB,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAwC/D,CAAA"}
1
+ {"version":3,"file":"deleteAssociatedFiles.d.ts","sourceRoot":"","sources":["../../src/uploads/deleteAssociatedFiles.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAC/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAC/D,OAAO,KAAK,EAAY,UAAU,EAAE,MAAM,YAAY,CAAA;AAKtD,KAAK,IAAI,GAAG;IACV,gBAAgB,EAAE,yBAAyB,CAAA;IAC3C,MAAM,EAAE,eAAe,CAAA;IACvB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5B,KAAK,CAAC,EAAE,UAAU,EAAE,CAAA;IACpB,cAAc,EAAE,OAAO,CAAA;IACvB,GAAG,EAAE,sBAAsB,CAAA;CAC5B,CAAA;AAED,eAAO,MAAM,qBAAqB,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAwC/D,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/uploads/deleteAssociatedFiles.ts"],"sourcesContent":["import fs from 'fs'\n\nimport type { SanitizedCollectionConfig } from '../collections/config/types.js'\nimport type { SanitizedConfig } from '../config/types.js'\nimport type { PayloadRequest } from '../types/index.js'\nimport type { FileData, FileToSave } from './types.js'\n\nimport { ErrorDeletingFile } from '../errors/index.js'\nimport fileExists from './fileExists.js'\n\ntype Args = {\n collectionConfig: SanitizedCollectionConfig\n config: SanitizedConfig\n doc: Record<string, unknown>\n files?: FileToSave[]\n overrideDelete: boolean\n req: PayloadRequest\n}\n\nexport const deleteAssociatedFiles: (args: Args) => Promise<void> = async ({\n collectionConfig,\n doc,\n files = [],\n overrideDelete,\n req,\n}) => {\n if (!collectionConfig.upload) return\n if (overrideDelete || files.length > 0) {\n const { staticDir: staticPath } = collectionConfig.upload\n\n const fileToDelete = `${staticPath}/${doc.filename as string}`\n\n try {\n if (await fileExists(fileToDelete)) {\n fs.unlinkSync(fileToDelete)\n }\n } catch (err) {\n throw new ErrorDeletingFile(req.t)\n }\n\n if (doc.sizes) {\n const sizes: FileData[] = Object.values(doc.sizes)\n // Since forEach will not wait until unlink is finished it could\n // happen that two operations will try to delete the same file.\n // To avoid this it is recommended to use \"sync\" instead\n // eslint-disable-next-line no-restricted-syntax\n for (const size of sizes) {\n const sizeToDelete = `${staticPath}/${size.filename}`\n try {\n // eslint-disable-next-line no-await-in-loop\n if (await fileExists(sizeToDelete)) {\n fs.unlinkSync(sizeToDelete)\n }\n } catch (err) {\n throw new ErrorDeletingFile(req.t)\n }\n }\n }\n }\n}\n"],"names":["fs","ErrorDeletingFile","fileExists","deleteAssociatedFiles","collectionConfig","doc","files","overrideDelete","req","upload","length","staticDir","staticPath","fileToDelete","filename","unlinkSync","err","t","sizes","Object","values","size","sizeToDelete"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,OAAOA,QAAQ,KAAI;AAOnB,SAASC,iBAAiB,QAAQ,qBAAoB;AACtD,OAAOC,gBAAgB,kBAAiB;AAWxC,OAAO,MAAMC,wBAAuD,OAAO,EACzEC,gBAAgB,EAChBC,GAAG,EACHC,QAAQ,EAAE,EACVC,cAAc,EACdC,GAAG,EACJ;IACC,IAAI,CAACJ,iBAAiBK,MAAM,EAAE;IAC9B,IAAIF,kBAAkBD,MAAMI,MAAM,GAAG,GAAG;QACtC,MAAM,EAAEC,WAAWC,UAAU,EAAE,GAAGR,iBAAiBK,MAAM;QAEzD,MAAMI,eAAe,CAAC,EAAED,WAAW,CAAC,EAAEP,IAAIS,QAAQ,CAAW,CAAC;QAE9D,IAAI;YACF,IAAI,MAAMZ,WAAWW,eAAe;gBAClCb,GAAGe,UAAU,CAACF;YAChB;QACF,EAAE,OAAOG,KAAK;YACZ,MAAM,IAAIf,kBAAkBO,IAAIS,CAAC;QACnC;QAEA,IAAIZ,IAAIa,KAAK,EAAE;YACb,MAAMA,QAAoBC,OAAOC,MAAM,CAACf,IAAIa,KAAK;YACjD,gEAAgE;YAChE,+DAA+D;YAC/D,wDAAwD;YACxD,gDAAgD;YAChD,KAAK,MAAMG,QAAQH,MAAO;gBACxB,MAAMI,eAAe,CAAC,EAAEV,WAAW,CAAC,EAAES,KAAKP,QAAQ,CAAC,CAAC;gBACrD,IAAI;oBACF,4CAA4C;oBAC5C,IAAI,MAAMZ,WAAWoB,eAAe;wBAClCtB,GAAGe,UAAU,CAACO;oBAChB;gBACF,EAAE,OAAON,KAAK;oBACZ,MAAM,IAAIf,kBAAkBO,IAAIS,CAAC;gBACnC;YACF;QACF;IACF;AACF,EAAC"}
1
+ {"version":3,"sources":["../../src/uploads/deleteAssociatedFiles.ts"],"sourcesContent":["import fs from 'fs'\n\nimport type { SanitizedCollectionConfig } from '../collections/config/types.js'\nimport type { SanitizedConfig } from '../config/types.js'\nimport type { PayloadRequestWithData } from '../types/index.js'\nimport type { FileData, FileToSave } from './types.js'\n\nimport { ErrorDeletingFile } from '../errors/index.js'\nimport fileExists from './fileExists.js'\n\ntype Args = {\n collectionConfig: SanitizedCollectionConfig\n config: SanitizedConfig\n doc: Record<string, unknown>\n files?: FileToSave[]\n overrideDelete: boolean\n req: PayloadRequestWithData\n}\n\nexport const deleteAssociatedFiles: (args: Args) => Promise<void> = async ({\n collectionConfig,\n doc,\n files = [],\n overrideDelete,\n req,\n}) => {\n if (!collectionConfig.upload) return\n if (overrideDelete || files.length > 0) {\n const { staticDir: staticPath } = collectionConfig.upload\n\n const fileToDelete = `${staticPath}/${doc.filename as string}`\n\n try {\n if (await fileExists(fileToDelete)) {\n fs.unlinkSync(fileToDelete)\n }\n } catch (err) {\n throw new ErrorDeletingFile(req.t)\n }\n\n if (doc.sizes) {\n const sizes: FileData[] = Object.values(doc.sizes)\n // Since forEach will not wait until unlink is finished it could\n // happen that two operations will try to delete the same file.\n // To avoid this it is recommended to use \"sync\" instead\n // eslint-disable-next-line no-restricted-syntax\n for (const size of sizes) {\n const sizeToDelete = `${staticPath}/${size.filename}`\n try {\n // eslint-disable-next-line no-await-in-loop\n if (await fileExists(sizeToDelete)) {\n fs.unlinkSync(sizeToDelete)\n }\n } catch (err) {\n throw new ErrorDeletingFile(req.t)\n }\n }\n }\n }\n}\n"],"names":["fs","ErrorDeletingFile","fileExists","deleteAssociatedFiles","collectionConfig","doc","files","overrideDelete","req","upload","length","staticDir","staticPath","fileToDelete","filename","unlinkSync","err","t","sizes","Object","values","size","sizeToDelete"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,OAAOA,QAAQ,KAAI;AAOnB,SAASC,iBAAiB,QAAQ,qBAAoB;AACtD,OAAOC,gBAAgB,kBAAiB;AAWxC,OAAO,MAAMC,wBAAuD,OAAO,EACzEC,gBAAgB,EAChBC,GAAG,EACHC,QAAQ,EAAE,EACVC,cAAc,EACdC,GAAG,EACJ;IACC,IAAI,CAACJ,iBAAiBK,MAAM,EAAE;IAC9B,IAAIF,kBAAkBD,MAAMI,MAAM,GAAG,GAAG;QACtC,MAAM,EAAEC,WAAWC,UAAU,EAAE,GAAGR,iBAAiBK,MAAM;QAEzD,MAAMI,eAAe,CAAC,EAAED,WAAW,CAAC,EAAEP,IAAIS,QAAQ,CAAW,CAAC;QAE9D,IAAI;YACF,IAAI,MAAMZ,WAAWW,eAAe;gBAClCb,GAAGe,UAAU,CAACF;YAChB;QACF,EAAE,OAAOG,KAAK;YACZ,MAAM,IAAIf,kBAAkBO,IAAIS,CAAC;QACnC;QAEA,IAAIZ,IAAIa,KAAK,EAAE;YACb,MAAMA,QAAoBC,OAAOC,MAAM,CAACf,IAAIa,KAAK;YACjD,gEAAgE;YAChE,+DAA+D;YAC/D,wDAAwD;YACxD,gDAAgD;YAChD,KAAK,MAAMG,QAAQH,MAAO;gBACxB,MAAMI,eAAe,CAAC,EAAEV,WAAW,CAAC,EAAES,KAAKP,QAAQ,CAAC,CAAC;gBACrD,IAAI;oBACF,4CAA4C;oBAC5C,IAAI,MAAMZ,WAAWoB,eAAe;wBAClCtB,GAAGe,UAAU,CAACO;oBAChB;gBACF,EAAE,OAAON,KAAK;oBACZ,MAAM,IAAIf,kBAAkBO,IAAIS,CAAC;gBACnC;YACF;QACF;IACF;AACF,EAAC"}
@@ -1,9 +1,9 @@
1
- import type { PayloadRequest } from '../types/index.js';
1
+ import type { PayloadRequestWithData } from '../types/index.js';
2
2
  type Args = {
3
3
  collectionSlug: string;
4
4
  filename: string;
5
5
  path: string;
6
- req: PayloadRequest;
6
+ req: PayloadRequestWithData;
7
7
  };
8
8
  declare const docWithFilenameExists: ({ collectionSlug, filename, req }: Args) => Promise<boolean>;
9
9
  export default docWithFilenameExists;
@@ -1 +1 @@
1
- {"version":3,"file":"docWithFilenameExists.d.ts","sourceRoot":"","sources":["../../src/uploads/docWithFilenameExists.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAEvD,KAAK,IAAI,GAAG;IACV,cAAc,EAAE,MAAM,CAAA;IACtB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,cAAc,CAAA;CACpB,CAAA;AAED,QAAA,MAAM,qBAAqB,sCAA6C,IAAI,KAAG,QAAQ,OAAO,CAa7F,CAAA;AAED,eAAe,qBAAqB,CAAA"}
1
+ {"version":3,"file":"docWithFilenameExists.d.ts","sourceRoot":"","sources":["../../src/uploads/docWithFilenameExists.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAE/D,KAAK,IAAI,GAAG;IACV,cAAc,EAAE,MAAM,CAAA;IACtB,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,sBAAsB,CAAA;CAC5B,CAAA;AAED,QAAA,MAAM,qBAAqB,sCAA6C,IAAI,KAAG,QAAQ,OAAO,CAa7F,CAAA;AAED,eAAe,qBAAqB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/uploads/docWithFilenameExists.ts"],"sourcesContent":["import type { PayloadRequest } from '../types/index.js'\n\ntype Args = {\n collectionSlug: string\n filename: string\n path: string\n req: PayloadRequest\n}\n\nconst docWithFilenameExists = async ({ collectionSlug, filename, req }: Args): Promise<boolean> => {\n const doc = await req.payload.db.findOne({\n collection: collectionSlug,\n req,\n where: {\n filename: {\n equals: filename,\n },\n },\n })\n if (doc) return true\n\n return false\n}\n\nexport default docWithFilenameExists\n"],"names":["docWithFilenameExists","collectionSlug","filename","req","doc","payload","db","findOne","collection","where","equals"],"rangeMappings":";;;;;;;;;;;;;","mappings":"AASA,MAAMA,wBAAwB,OAAO,EAAEC,cAAc,EAAEC,QAAQ,EAAEC,GAAG,EAAQ;IAC1E,MAAMC,MAAM,MAAMD,IAAIE,OAAO,CAACC,EAAE,CAACC,OAAO,CAAC;QACvCC,YAAYP;QACZE;QACAM,OAAO;YACLP,UAAU;gBACRQ,QAAQR;YACV;QACF;IACF;IACA,IAAIE,KAAK,OAAO;IAEhB,OAAO;AACT;AAEA,eAAeJ,sBAAqB"}
1
+ {"version":3,"sources":["../../src/uploads/docWithFilenameExists.ts"],"sourcesContent":["import type { PayloadRequestWithData } from '../types/index.js'\n\ntype Args = {\n collectionSlug: string\n filename: string\n path: string\n req: PayloadRequestWithData\n}\n\nconst docWithFilenameExists = async ({ collectionSlug, filename, req }: Args): Promise<boolean> => {\n const doc = await req.payload.db.findOne({\n collection: collectionSlug,\n req,\n where: {\n filename: {\n equals: filename,\n },\n },\n })\n if (doc) return true\n\n return false\n}\n\nexport default docWithFilenameExists\n"],"names":["docWithFilenameExists","collectionSlug","filename","req","doc","payload","db","findOne","collection","where","equals"],"rangeMappings":";;;;;;;;;;;;;","mappings":"AASA,MAAMA,wBAAwB,OAAO,EAAEC,cAAc,EAAEC,QAAQ,EAAEC,GAAG,EAAQ;IAC1E,MAAMC,MAAM,MAAMD,IAAIE,OAAO,CAACC,EAAE,CAACC,OAAO,CAAC;QACvCC,YAAYP;QACZE;QACAM,OAAO;YACLP,UAAU;gBACRQ,QAAQR;YACV;QACF;IACF;IACA,IAAIE,KAAK,OAAO;IAEhB,OAAO;AACT;AAEA,eAAeJ,sBAAqB"}
@@ -1,19 +1,21 @@
1
1
  import type { Collection } from '../collections/config/types.js';
2
2
  import type { SanitizedConfig } from '../config/types.js';
3
- import type { PayloadRequest } from '../types/index.js';
3
+ import type { PayloadRequestWithData } from '../types/index.js';
4
4
  import type { FileToSave } from './types.js';
5
5
  type Args<T> = {
6
6
  collection: Collection;
7
7
  config: SanitizedConfig;
8
8
  data: T;
9
+ operation: 'create' | 'update';
10
+ originalDoc?: T;
9
11
  overwriteExistingFiles?: boolean;
10
- req: PayloadRequest;
12
+ req: PayloadRequestWithData;
11
13
  throwOnMissingFile?: boolean;
12
14
  };
13
15
  type Result<T> = Promise<{
14
16
  data: T;
15
17
  files: FileToSave[];
16
18
  }>;
17
- export declare const generateFileData: <T>({ collection: { config: collectionConfig }, data, overwriteExistingFiles, req, throwOnMissingFile, }: Args<T>) => Result<T>;
19
+ export declare const generateFileData: <T>({ collection: { config: collectionConfig }, data, operation, originalDoc, overwriteExistingFiles, req, throwOnMissingFile, }: Args<T>) => Result<T>;
18
20
  export {};
19
21
  //# sourceMappingURL=generateFileData.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generateFileData.d.ts","sourceRoot":"","sources":["../../src/uploads/generateFileData.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,KAAK,EAAY,UAAU,EAAmB,MAAM,YAAY,CAAA;AAYvE,KAAK,IAAI,CAAC,CAAC,IAAI;IACb,UAAU,EAAE,UAAU,CAAA;IACtB,MAAM,EAAE,eAAe,CAAA;IACvB,IAAI,EAAE,CAAC,CAAA;IACP,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,GAAG,EAAE,cAAc,CAAA;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC7B,CAAA;AAED,KAAK,MAAM,CAAC,CAAC,IAAI,OAAO,CAAC;IACvB,IAAI,EAAE,CAAC,CAAA;IACP,KAAK,EAAE,UAAU,EAAE,CAAA;CACpB,CAAC,CAAA;AAEF,eAAO,MAAM,gBAAgB,4GAM1B,KAAK,CAAC,CAAC,KAAG,OAAO,CAAC,CA2NpB,CAAA"}
1
+ {"version":3,"file":"generateFileData.d.ts","sourceRoot":"","sources":["../../src/uploads/generateFileData.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAC/D,OAAO,KAAK,EAAY,UAAU,EAAgC,MAAM,YAAY,CAAA;AAYpF,KAAK,IAAI,CAAC,CAAC,IAAI;IACb,UAAU,EAAE,UAAU,CAAA;IACtB,MAAM,EAAE,eAAe,CAAA;IACvB,IAAI,EAAE,CAAC,CAAA;IACP,SAAS,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC9B,WAAW,CAAC,EAAE,CAAC,CAAA;IACf,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,GAAG,EAAE,sBAAsB,CAAA;IAC3B,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC7B,CAAA;AAED,KAAK,MAAM,CAAC,CAAC,IAAI,OAAO,CAAC;IACvB,IAAI,EAAE,CAAC,CAAA;IACP,KAAK,EAAE,UAAU,EAAE,CAAA;CACpB,CAAC,CAAA;AAEF,eAAO,MAAM,gBAAgB,oIAQ1B,KAAK,CAAC,CAAC,KAAG,OAAO,CAAC,CAoPpB,CAAA"}
@@ -1,18 +1,17 @@
1
- import fileType from 'file-type';
2
- const { fromBuffer } = fileType;
1
+ import { fileTypeFromBuffer } from 'file-type';
3
2
  import fs from 'fs';
4
3
  import mkdirp from 'mkdirp';
5
4
  import sanitize from 'sanitize-filename';
6
- import { FileUploadError, MissingFile } from '../errors/index.js';
7
- import canResizeImage from './canResizeImage.js';
8
- import cropImage from './cropImage.js';
5
+ import { FileRetrievalError, FileUploadError, MissingFile } from '../errors/index.js';
6
+ import { canResizeImage } from './canResizeImage.js';
7
+ import { cropImage } from './cropImage.js';
9
8
  import { getExternalFile } from './getExternalFile.js';
10
9
  import { getFileByPath } from './getFileByPath.js';
11
10
  import { getImageSize } from './getImageSize.js';
12
- import getSafeFileName from './getSafeFilename.js';
13
- import resizeAndTransformImageSizes from './imageResizer.js';
14
- import isImage from './isImage.js';
15
- export const generateFileData = async ({ collection: { config: collectionConfig }, data, overwriteExistingFiles, req, throwOnMissingFile })=>{
11
+ import { getSafeFileName } from './getSafeFilename.js';
12
+ import { resizeAndTransformImageSizes } from './imageResizer.js';
13
+ import { isImage } from './isImage.js';
14
+ export const generateFileData = async ({ collection: { config: collectionConfig }, data, operation, originalDoc, overwriteExistingFiles, req, throwOnMissingFile })=>{
16
15
  if (!collectionConfig.upload) {
17
16
  return {
18
17
  data,
@@ -21,8 +20,13 @@ export const generateFileData = async ({ collection: { config: collectionConfig
21
20
  }
22
21
  const { sharp } = req.payload.config;
23
22
  let file = req.file;
24
- const uploadEdits = req.query['uploadEdits'] || {};
25
- const { disableLocalStorage, formatOptions, imageSizes, resizeOptions, staticDir, trimOptions } = collectionConfig.upload;
23
+ const uploadEdits = parseUploadEditsFromReqOrIncomingData({
24
+ data,
25
+ operation,
26
+ originalDoc,
27
+ req
28
+ });
29
+ const { disableLocalStorage, focalPoint: focalPointEnabled = true, formatOptions, imageSizes, resizeOptions, staticDir, trimOptions } = collectionConfig.upload;
26
30
  const staticPath = staticDir;
27
31
  if (!file && uploadEdits && data) {
28
32
  const { filename, url } = data;
@@ -35,12 +39,13 @@ export const generateFileData = async ({ collection: { config: collectionConfig
35
39
  } else if (filename && url) {
36
40
  file = await getExternalFile({
37
41
  data: data,
38
- req
42
+ req,
43
+ uploadConfig: collectionConfig.upload
39
44
  });
40
45
  overwriteExistingFiles = true;
41
46
  }
42
47
  } catch (err) {
43
- throw new FileUploadError(req.t);
48
+ throw new FileRetrievalError(req.t, err instanceof Error ? err.message : undefined);
44
49
  }
45
50
  }
46
51
  if (!file) {
@@ -56,7 +61,11 @@ export const generateFileData = async ({ collection: { config: collectionConfig
56
61
  let newData = data;
57
62
  const filesToSave = [];
58
63
  const fileData = {};
59
- const fileIsAnimated = file.mimetype === 'image/gif' || file.mimetype === 'image/webp';
64
+ const fileIsAnimatedType = [
65
+ 'image/avif',
66
+ 'image/gif',
67
+ 'image/webp'
68
+ ].includes(file.mimetype);
60
69
  const cropData = typeof uploadEdits === 'object' && 'crop' in uploadEdits ? uploadEdits.crop : undefined;
61
70
  try {
62
71
  const fileSupportsResize = canResizeImage(file.mimetype);
@@ -66,10 +75,10 @@ export const generateFileData = async ({ collection: { config: collectionConfig
66
75
  let fileBuffer;
67
76
  let ext;
68
77
  let mime;
69
- const fileHasAdjustments = fileSupportsResize && Boolean(resizeOptions || formatOptions || trimOptions || file.tempFilePath);
78
+ const fileHasAdjustments = fileSupportsResize && Boolean(resizeOptions || formatOptions || imageSizes || trimOptions || file.tempFilePath);
70
79
  const sharpOptions = {};
71
- if (fileIsAnimated) sharpOptions.animated = true;
72
- if (fileHasAdjustments && sharp) {
80
+ if (fileIsAnimatedType) sharpOptions.animated = true;
81
+ if (sharp && (fileIsAnimatedType || fileHasAdjustments)) {
73
82
  if (file.tempFilePath) {
74
83
  sharpFile = sharp(file.tempFilePath, sharpOptions).rotate() // pass rotate() to auto-rotate based on EXIF data. https://github.com/payloadcms/payload/pull/3081
75
84
  ;
@@ -77,18 +86,20 @@ export const generateFileData = async ({ collection: { config: collectionConfig
77
86
  sharpFile = sharp(file.data, sharpOptions).rotate() // pass rotate() to auto-rotate based on EXIF data. https://github.com/payloadcms/payload/pull/3081
78
87
  ;
79
88
  }
80
- if (resizeOptions) {
81
- sharpFile = sharpFile.resize(resizeOptions);
82
- }
83
- if (formatOptions) {
84
- sharpFile = sharpFile.toFormat(formatOptions.format, formatOptions.options);
85
- }
86
- if (trimOptions) {
87
- sharpFile = sharpFile.trim(trimOptions);
89
+ if (fileHasAdjustments) {
90
+ if (resizeOptions) {
91
+ sharpFile = sharpFile.resize(resizeOptions);
92
+ }
93
+ if (formatOptions) {
94
+ sharpFile = sharpFile.toFormat(formatOptions.format, formatOptions.options);
95
+ }
96
+ if (trimOptions) {
97
+ sharpFile = sharpFile.trim(trimOptions);
98
+ }
88
99
  }
89
100
  }
90
101
  if (fileSupportsResize || isImage(file.mimetype)) {
91
- dimensions = getImageSize(file);
102
+ dimensions = await getImageSize(file);
92
103
  fileData.width = dimensions.width;
93
104
  fileData.height = dimensions.height;
94
105
  }
@@ -97,7 +108,7 @@ export const generateFileData = async ({ collection: { config: collectionConfig
97
108
  fileBuffer = await sharpFile.toBuffer({
98
109
  resolveWithObject: true
99
110
  });
100
- ({ ext, mime } = await fromBuffer(fileBuffer.data) // This is getting an incorrect gif height back.
111
+ ({ ext, mime } = await fileTypeFromBuffer(fileBuffer.data) // This is getting an incorrect gif height back.
101
112
  );
102
113
  fileData.width = fileBuffer.info.width;
103
114
  fileData.height = fileBuffer.info.height;
@@ -149,6 +160,10 @@ export const generateFileData = async ({ collection: { config: collectionConfig
149
160
  };
150
161
  fileData.width = info.width;
151
162
  fileData.height = info.height;
163
+ if (fileIsAnimatedType) {
164
+ const metadata = await sharpFile.metadata();
165
+ fileData.height = metadata.pages ? info.height / metadata.pages : info.height;
166
+ }
152
167
  fileData.filesize = info.size;
153
168
  if (file.tempFilePath) {
154
169
  await fs.promises.writeFile(file.tempFilePath, croppedImage) // write fileBuffer to the temp path
@@ -176,9 +191,9 @@ export const generateFileData = async ({ collection: { config: collectionConfig
176
191
  }
177
192
  }
178
193
  }
179
- if (Array.isArray(imageSizes) && fileSupportsResize && sharp) {
194
+ if (fileSupportsResize && (Array.isArray(imageSizes) || focalPointEnabled !== false)) {
180
195
  req.payloadUploadSizes = {};
181
- const { sizeData, sizesToSave } = await resizeAndTransformImageSizes({
196
+ const { focalPoint, sizeData, sizesToSave } = await resizeAndTransformImageSizes({
182
197
  config: collectionConfig,
183
198
  dimensions: !cropData ? dimensions : {
184
199
  ...dimensions,
@@ -190,13 +205,16 @@ export const generateFileData = async ({ collection: { config: collectionConfig
190
205
  req,
191
206
  savedFilename: fsSafeName || file.name,
192
207
  sharp,
193
- staticPath
208
+ staticPath,
209
+ uploadEdits
194
210
  });
195
211
  fileData.sizes = sizeData;
212
+ fileData.focalX = focalPoint?.x;
213
+ fileData.focalY = focalPoint?.y;
196
214
  filesToSave.push(...sizesToSave);
197
215
  }
198
216
  } catch (err) {
199
- console.error(err);
217
+ req.payload.logger.error(err);
200
218
  throw new FileUploadError(req.t);
201
219
  }
202
220
  newData = {
@@ -208,5 +226,35 @@ export const generateFileData = async ({ collection: { config: collectionConfig
208
226
  files: filesToSave
209
227
  };
210
228
  };
229
+ /**
230
+ * Parse upload edits from req or incoming data
231
+ */ function parseUploadEditsFromReqOrIncomingData(args) {
232
+ const { data, operation, originalDoc, req } = args;
233
+ // Get intended focal point change from query string or incoming data
234
+ const { uploadEdits = {} } = req.query || {};
235
+ if (uploadEdits.focalPoint) return uploadEdits;
236
+ const incomingData = data;
237
+ const origDoc = originalDoc;
238
+ // If no change in focal point, return undefined.
239
+ // This prevents a refocal operation triggered from admin, because it always sends the focal point.
240
+ if (origDoc && incomingData.focalX === origDoc.focalX && incomingData.focalY === origDoc.focalY) {
241
+ return undefined;
242
+ }
243
+ if (incomingData?.focalX && incomingData?.focalY) {
244
+ uploadEdits.focalPoint = {
245
+ x: incomingData.focalX,
246
+ y: incomingData.focalY
247
+ };
248
+ return uploadEdits;
249
+ }
250
+ // If no focal point is set, default to center
251
+ if (operation === 'create') {
252
+ uploadEdits.focalPoint = {
253
+ x: 50,
254
+ y: 50
255
+ };
256
+ }
257
+ return uploadEdits;
258
+ }
211
259
 
212
260
  //# sourceMappingURL=generateFileData.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/uploads/generateFileData.ts"],"sourcesContent":["import type { OutputInfo, Sharp, SharpOptions } from 'sharp'\n\nimport fileType from 'file-type'\nconst { fromBuffer } = fileType\nimport fs from 'fs'\nimport mkdirp from 'mkdirp'\nimport sanitize from 'sanitize-filename'\n\nimport type { Collection } from '../collections/config/types.js'\nimport type { SanitizedConfig } from '../config/types.js'\nimport type { PayloadRequest } from '../types/index.js'\nimport type { FileData, FileToSave, ProbedImageSize } from './types.js'\n\nimport { FileUploadError, MissingFile } from '../errors/index.js'\nimport canResizeImage from './canResizeImage.js'\nimport cropImage from './cropImage.js'\nimport { getExternalFile } from './getExternalFile.js'\nimport { getFileByPath } from './getFileByPath.js'\nimport { getImageSize } from './getImageSize.js'\nimport getSafeFileName from './getSafeFilename.js'\nimport resizeAndTransformImageSizes from './imageResizer.js'\nimport isImage from './isImage.js'\n\ntype Args<T> = {\n collection: Collection\n config: SanitizedConfig\n data: T\n overwriteExistingFiles?: boolean\n req: PayloadRequest\n throwOnMissingFile?: boolean\n}\n\ntype Result<T> = Promise<{\n data: T\n files: FileToSave[]\n}>\n\nexport const generateFileData = async <T>({\n collection: { config: collectionConfig },\n data,\n overwriteExistingFiles,\n req,\n throwOnMissingFile,\n}: Args<T>): Result<T> => {\n if (!collectionConfig.upload) {\n return {\n data,\n files: [],\n }\n }\n\n const { sharp } = req.payload.config\n\n let file = req.file\n\n const uploadEdits = req.query['uploadEdits'] || {}\n\n const { disableLocalStorage, formatOptions, imageSizes, resizeOptions, staticDir, trimOptions } =\n collectionConfig.upload\n\n const staticPath = staticDir\n\n if (!file && uploadEdits && data) {\n const { filename, url } = data as FileData\n\n try {\n if (url && url.startsWith('/') && !disableLocalStorage) {\n const filePath = `${staticPath}/${filename}`\n const response = await getFileByPath(filePath)\n file = response\n overwriteExistingFiles = true\n } else if (filename && url) {\n file = await getExternalFile({ data: data as FileData, req })\n overwriteExistingFiles = true\n }\n } catch (err) {\n throw new FileUploadError(req.t)\n }\n }\n\n if (!file) {\n if (throwOnMissingFile) throw new MissingFile(req.t)\n\n return {\n data,\n files: [],\n }\n }\n\n if (!disableLocalStorage) {\n mkdirp.sync(staticPath)\n }\n\n let newData = data\n const filesToSave: FileToSave[] = []\n const fileData: Partial<FileData> = {}\n const fileIsAnimated = file.mimetype === 'image/gif' || file.mimetype === 'image/webp'\n const cropData =\n typeof uploadEdits === 'object' && 'crop' in uploadEdits ? uploadEdits.crop : undefined\n\n try {\n const fileSupportsResize = canResizeImage(file.mimetype)\n let fsSafeName: string\n let sharpFile: Sharp | undefined\n let dimensions: ProbedImageSize | undefined\n let fileBuffer: { data: Buffer; info: OutputInfo }\n let ext\n let mime: string\n const fileHasAdjustments =\n fileSupportsResize &&\n Boolean(resizeOptions || formatOptions || trimOptions || file.tempFilePath)\n\n const sharpOptions: SharpOptions = {}\n\n if (fileIsAnimated) sharpOptions.animated = true\n\n if (fileHasAdjustments && sharp) {\n if (file.tempFilePath) {\n sharpFile = sharp(file.tempFilePath, sharpOptions).rotate() // pass rotate() to auto-rotate based on EXIF data. https://github.com/payloadcms/payload/pull/3081\n } else {\n sharpFile = sharp(file.data, sharpOptions).rotate() // pass rotate() to auto-rotate based on EXIF data. https://github.com/payloadcms/payload/pull/3081\n }\n\n if (resizeOptions) {\n sharpFile = sharpFile.resize(resizeOptions)\n }\n if (formatOptions) {\n sharpFile = sharpFile.toFormat(formatOptions.format, formatOptions.options)\n }\n if (trimOptions) {\n sharpFile = sharpFile.trim(trimOptions)\n }\n }\n\n if (fileSupportsResize || isImage(file.mimetype)) {\n dimensions = getImageSize(file)\n fileData.width = dimensions.width\n fileData.height = dimensions.height\n }\n\n if (sharpFile) {\n const metadata = await sharpFile.metadata()\n fileBuffer = await sharpFile.toBuffer({ resolveWithObject: true })\n ;({ ext, mime } = await fromBuffer(fileBuffer.data)) // This is getting an incorrect gif height back.\n fileData.width = fileBuffer.info.width\n fileData.height = fileBuffer.info.height\n fileData.filesize = fileBuffer.info.size\n\n // Animated GIFs + WebP aggregate the height from every frame, so we need to use divide by number of pages\n if (metadata.pages) {\n fileData.height = fileBuffer.info.height / metadata.pages\n fileData.filesize = fileBuffer.data.length\n }\n } else {\n mime = file.mimetype\n fileData.filesize = file.size\n\n if (file.name.includes('.')) {\n ext = file.name.split('.').pop()\n } else {\n ext = ''\n }\n }\n\n // Adust SVG mime type. fromBuffer modifies it.\n if (mime === 'application/xml' && ext === 'svg') mime = 'image/svg+xml'\n fileData.mimeType = mime\n\n const baseFilename = sanitize(file.name.substring(0, file.name.lastIndexOf('.')) || file.name)\n fsSafeName = `${baseFilename}${ext ? `.${ext}` : ''}`\n\n if (!overwriteExistingFiles) {\n fsSafeName = await getSafeFileName({\n collectionSlug: collectionConfig.slug,\n desiredFilename: fsSafeName,\n req,\n staticPath,\n })\n }\n\n fileData.filename = fsSafeName\n let fileForResize = file\n\n if (cropData && sharp) {\n const { data: croppedImage, info } = await cropImage({ cropData, dimensions, file, sharp })\n\n filesToSave.push({\n buffer: croppedImage,\n path: `${staticPath}/${fsSafeName}`,\n })\n\n fileForResize = {\n ...file,\n data: croppedImage,\n size: info.size,\n }\n fileData.width = info.width\n fileData.height = info.height\n fileData.filesize = info.size\n\n if (file.tempFilePath) {\n await fs.promises.writeFile(file.tempFilePath, croppedImage) // write fileBuffer to the temp path\n } else {\n req.file = fileForResize\n }\n } else {\n filesToSave.push({\n buffer: fileBuffer?.data || file.data,\n path: `${staticPath}/${fsSafeName}`,\n })\n\n // If using temp files and the image is being resized, write the file to the temp path\n if (fileBuffer?.data || file.data.length > 0) {\n if (file.tempFilePath) {\n await fs.promises.writeFile(file.tempFilePath, fileBuffer?.data || file.data) // write fileBuffer to the temp path\n } else {\n // Assign the _possibly modified_ file to the request object\n req.file = {\n ...file,\n data: fileBuffer?.data || file.data,\n size: fileBuffer?.info.size,\n }\n }\n }\n }\n\n if (Array.isArray(imageSizes) && fileSupportsResize && sharp) {\n req.payloadUploadSizes = {}\n const { sizeData, sizesToSave } = await resizeAndTransformImageSizes({\n config: collectionConfig,\n dimensions: !cropData\n ? dimensions\n : {\n ...dimensions,\n height: fileData.height,\n width: fileData.width,\n },\n file: fileForResize,\n mimeType: fileData.mimeType,\n req,\n savedFilename: fsSafeName || file.name,\n sharp,\n staticPath,\n })\n\n fileData.sizes = sizeData\n filesToSave.push(...sizesToSave)\n }\n } catch (err) {\n console.error(err)\n throw new FileUploadError(req.t)\n }\n\n newData = {\n ...newData,\n ...fileData,\n }\n\n return {\n data: newData,\n files: filesToSave,\n }\n}\n"],"names":["fileType","fromBuffer","fs","mkdirp","sanitize","FileUploadError","MissingFile","canResizeImage","cropImage","getExternalFile","getFileByPath","getImageSize","getSafeFileName","resizeAndTransformImageSizes","isImage","generateFileData","collection","config","collectionConfig","data","overwriteExistingFiles","req","throwOnMissingFile","upload","files","sharp","payload","file","uploadEdits","query","disableLocalStorage","formatOptions","imageSizes","resizeOptions","staticDir","trimOptions","staticPath","filename","url","startsWith","filePath","response","err","t","sync","newData","filesToSave","fileData","fileIsAnimated","mimetype","cropData","crop","undefined","fileSupportsResize","fsSafeName","sharpFile","dimensions","fileBuffer","ext","mime","fileHasAdjustments","Boolean","tempFilePath","sharpOptions","animated","rotate","resize","toFormat","format","options","trim","width","height","metadata","toBuffer","resolveWithObject","info","filesize","size","pages","length","name","includes","split","pop","mimeType","baseFilename","substring","lastIndexOf","collectionSlug","slug","desiredFilename","fileForResize","croppedImage","push","buffer","path","promises","writeFile","Array","isArray","payloadUploadSizes","sizeData","sizesToSave","savedFilename","sizes","console","error"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../src/uploads/generateFileData.ts"],"sourcesContent":["import type { OutputInfo, Sharp, SharpOptions } from 'sharp'\n\nimport { fileTypeFromBuffer } from 'file-type'\nimport fs from 'fs'\nimport mkdirp from 'mkdirp'\nimport sanitize from 'sanitize-filename'\n\nimport type { Collection } from '../collections/config/types.js'\nimport type { SanitizedConfig } from '../config/types.js'\nimport type { PayloadRequestWithData } from '../types/index.js'\nimport type { FileData, FileToSave, ProbedImageSize, UploadEdits } from './types.js'\n\nimport { FileRetrievalError, FileUploadError, MissingFile } from '../errors/index.js'\nimport { canResizeImage } from './canResizeImage.js'\nimport { cropImage } from './cropImage.js'\nimport { getExternalFile } from './getExternalFile.js'\nimport { getFileByPath } from './getFileByPath.js'\nimport { getImageSize } from './getImageSize.js'\nimport { getSafeFileName } from './getSafeFilename.js'\nimport { resizeAndTransformImageSizes } from './imageResizer.js'\nimport { isImage } from './isImage.js'\n\ntype Args<T> = {\n collection: Collection\n config: SanitizedConfig\n data: T\n operation: 'create' | 'update'\n originalDoc?: T\n overwriteExistingFiles?: boolean\n req: PayloadRequestWithData\n throwOnMissingFile?: boolean\n}\n\ntype Result<T> = Promise<{\n data: T\n files: FileToSave[]\n}>\n\nexport const generateFileData = async <T>({\n collection: { config: collectionConfig },\n data,\n operation,\n originalDoc,\n overwriteExistingFiles,\n req,\n throwOnMissingFile,\n}: Args<T>): Result<T> => {\n if (!collectionConfig.upload) {\n return {\n data,\n files: [],\n }\n }\n\n const { sharp } = req.payload.config\n\n let file = req.file\n\n const uploadEdits = parseUploadEditsFromReqOrIncomingData({\n data,\n operation,\n originalDoc,\n req,\n })\n\n const {\n disableLocalStorage,\n focalPoint: focalPointEnabled = true,\n formatOptions,\n imageSizes,\n resizeOptions,\n staticDir,\n trimOptions,\n } = collectionConfig.upload\n\n const staticPath = staticDir\n\n if (!file && uploadEdits && data) {\n const { filename, url } = data as FileData\n\n try {\n if (url && url.startsWith('/') && !disableLocalStorage) {\n const filePath = `${staticPath}/${filename}`\n const response = await getFileByPath(filePath)\n file = response\n overwriteExistingFiles = true\n } else if (filename && url) {\n file = await getExternalFile({\n data: data as FileData,\n req,\n uploadConfig: collectionConfig.upload,\n })\n overwriteExistingFiles = true\n }\n } catch (err: unknown) {\n throw new FileRetrievalError(req.t, err instanceof Error ? err.message : undefined)\n }\n }\n\n if (!file) {\n if (throwOnMissingFile) throw new MissingFile(req.t)\n\n return {\n data,\n files: [],\n }\n }\n\n if (!disableLocalStorage) {\n mkdirp.sync(staticPath)\n }\n\n let newData = data\n const filesToSave: FileToSave[] = []\n const fileData: Partial<FileData> = {}\n const fileIsAnimatedType = ['image/avif', 'image/gif', 'image/webp'].includes(file.mimetype)\n const cropData =\n typeof uploadEdits === 'object' && 'crop' in uploadEdits ? uploadEdits.crop : undefined\n\n try {\n const fileSupportsResize = canResizeImage(file.mimetype)\n let fsSafeName: string\n let sharpFile: Sharp | undefined\n let dimensions: ProbedImageSize | undefined\n let fileBuffer: { data: Buffer; info: OutputInfo }\n let ext\n let mime: string\n const fileHasAdjustments =\n fileSupportsResize &&\n Boolean(resizeOptions || formatOptions || imageSizes || trimOptions || file.tempFilePath)\n\n const sharpOptions: SharpOptions = {}\n\n if (fileIsAnimatedType) sharpOptions.animated = true\n\n if (sharp && (fileIsAnimatedType || fileHasAdjustments)) {\n if (file.tempFilePath) {\n sharpFile = sharp(file.tempFilePath, sharpOptions).rotate() // pass rotate() to auto-rotate based on EXIF data. https://github.com/payloadcms/payload/pull/3081\n } else {\n sharpFile = sharp(file.data, sharpOptions).rotate() // pass rotate() to auto-rotate based on EXIF data. https://github.com/payloadcms/payload/pull/3081\n }\n\n if (fileHasAdjustments) {\n if (resizeOptions) {\n sharpFile = sharpFile.resize(resizeOptions)\n }\n if (formatOptions) {\n sharpFile = sharpFile.toFormat(formatOptions.format, formatOptions.options)\n }\n if (trimOptions) {\n sharpFile = sharpFile.trim(trimOptions)\n }\n }\n }\n\n if (fileSupportsResize || isImage(file.mimetype)) {\n dimensions = await getImageSize(file)\n fileData.width = dimensions.width\n fileData.height = dimensions.height\n }\n\n if (sharpFile) {\n const metadata = await sharpFile.metadata()\n fileBuffer = await sharpFile.toBuffer({ resolveWithObject: true })\n ;({ ext, mime } = await fileTypeFromBuffer(fileBuffer.data)) // This is getting an incorrect gif height back.\n fileData.width = fileBuffer.info.width\n fileData.height = fileBuffer.info.height\n fileData.filesize = fileBuffer.info.size\n\n // Animated GIFs + WebP aggregate the height from every frame, so we need to use divide by number of pages\n if (metadata.pages) {\n fileData.height = fileBuffer.info.height / metadata.pages\n fileData.filesize = fileBuffer.data.length\n }\n } else {\n mime = file.mimetype\n fileData.filesize = file.size\n\n if (file.name.includes('.')) {\n ext = file.name.split('.').pop()\n } else {\n ext = ''\n }\n }\n\n // Adust SVG mime type. fromBuffer modifies it.\n if (mime === 'application/xml' && ext === 'svg') mime = 'image/svg+xml'\n fileData.mimeType = mime\n\n const baseFilename = sanitize(file.name.substring(0, file.name.lastIndexOf('.')) || file.name)\n fsSafeName = `${baseFilename}${ext ? `.${ext}` : ''}`\n\n if (!overwriteExistingFiles) {\n fsSafeName = await getSafeFileName({\n collectionSlug: collectionConfig.slug,\n desiredFilename: fsSafeName,\n req,\n staticPath,\n })\n }\n\n fileData.filename = fsSafeName\n let fileForResize = file\n\n if (cropData && sharp) {\n const { data: croppedImage, info } = await cropImage({ cropData, dimensions, file, sharp })\n\n filesToSave.push({\n buffer: croppedImage,\n path: `${staticPath}/${fsSafeName}`,\n })\n\n fileForResize = {\n ...file,\n data: croppedImage,\n size: info.size,\n }\n fileData.width = info.width\n fileData.height = info.height\n if (fileIsAnimatedType) {\n const metadata = await sharpFile.metadata()\n fileData.height = metadata.pages ? info.height / metadata.pages : info.height\n }\n fileData.filesize = info.size\n\n if (file.tempFilePath) {\n await fs.promises.writeFile(file.tempFilePath, croppedImage) // write fileBuffer to the temp path\n } else {\n req.file = fileForResize\n }\n } else {\n filesToSave.push({\n buffer: fileBuffer?.data || file.data,\n path: `${staticPath}/${fsSafeName}`,\n })\n\n // If using temp files and the image is being resized, write the file to the temp path\n if (fileBuffer?.data || file.data.length > 0) {\n if (file.tempFilePath) {\n await fs.promises.writeFile(file.tempFilePath, fileBuffer?.data || file.data) // write fileBuffer to the temp path\n } else {\n // Assign the _possibly modified_ file to the request object\n req.file = {\n ...file,\n data: fileBuffer?.data || file.data,\n size: fileBuffer?.info.size,\n }\n }\n }\n }\n\n if (fileSupportsResize && (Array.isArray(imageSizes) || focalPointEnabled !== false)) {\n req.payloadUploadSizes = {}\n const { focalPoint, sizeData, sizesToSave } = await resizeAndTransformImageSizes({\n config: collectionConfig,\n dimensions: !cropData\n ? dimensions\n : {\n ...dimensions,\n height: fileData.height,\n width: fileData.width,\n },\n file: fileForResize,\n mimeType: fileData.mimeType,\n req,\n savedFilename: fsSafeName || file.name,\n sharp,\n staticPath,\n uploadEdits,\n })\n\n fileData.sizes = sizeData\n fileData.focalX = focalPoint?.x\n fileData.focalY = focalPoint?.y\n filesToSave.push(...sizesToSave)\n }\n } catch (err) {\n req.payload.logger.error(err)\n throw new FileUploadError(req.t)\n }\n\n newData = {\n ...newData,\n ...fileData,\n }\n\n return {\n data: newData,\n files: filesToSave,\n }\n}\n\n/**\n * Parse upload edits from req or incoming data\n */\nfunction parseUploadEditsFromReqOrIncomingData(args: {\n data: unknown\n operation: 'create' | 'update'\n originalDoc: unknown\n req: PayloadRequestWithData\n}): UploadEdits {\n const { data, operation, originalDoc, req } = args\n\n // Get intended focal point change from query string or incoming data\n const {\n uploadEdits = {},\n }: {\n uploadEdits?: UploadEdits\n } = req.query || {}\n\n if (uploadEdits.focalPoint) return uploadEdits\n\n const incomingData = data as FileData\n const origDoc = originalDoc as FileData\n\n // If no change in focal point, return undefined.\n // This prevents a refocal operation triggered from admin, because it always sends the focal point.\n if (origDoc && incomingData.focalX === origDoc.focalX && incomingData.focalY === origDoc.focalY) {\n return undefined\n }\n\n if (incomingData?.focalX && incomingData?.focalY) {\n uploadEdits.focalPoint = {\n x: incomingData.focalX,\n y: incomingData.focalY,\n }\n return uploadEdits\n }\n\n // If no focal point is set, default to center\n if (operation === 'create') {\n uploadEdits.focalPoint = {\n x: 50,\n y: 50,\n }\n }\n return uploadEdits\n}\n"],"names":["fileTypeFromBuffer","fs","mkdirp","sanitize","FileRetrievalError","FileUploadError","MissingFile","canResizeImage","cropImage","getExternalFile","getFileByPath","getImageSize","getSafeFileName","resizeAndTransformImageSizes","isImage","generateFileData","collection","config","collectionConfig","data","operation","originalDoc","overwriteExistingFiles","req","throwOnMissingFile","upload","files","sharp","payload","file","uploadEdits","parseUploadEditsFromReqOrIncomingData","disableLocalStorage","focalPoint","focalPointEnabled","formatOptions","imageSizes","resizeOptions","staticDir","trimOptions","staticPath","filename","url","startsWith","filePath","response","uploadConfig","err","t","Error","message","undefined","sync","newData","filesToSave","fileData","fileIsAnimatedType","includes","mimetype","cropData","crop","fileSupportsResize","fsSafeName","sharpFile","dimensions","fileBuffer","ext","mime","fileHasAdjustments","Boolean","tempFilePath","sharpOptions","animated","rotate","resize","toFormat","format","options","trim","width","height","metadata","toBuffer","resolveWithObject","info","filesize","size","pages","length","name","split","pop","mimeType","baseFilename","substring","lastIndexOf","collectionSlug","slug","desiredFilename","fileForResize","croppedImage","push","buffer","path","promises","writeFile","Array","isArray","payloadUploadSizes","sizeData","sizesToSave","savedFilename","sizes","focalX","x","focalY","y","logger","error","args","query","incomingData","origDoc"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"getBaseFields.d.ts","sourceRoot":"","sources":["../../src/uploads/getBaseFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AACtE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAA;AAiBtD,KAAK,OAAO,GAAG;IACb,UAAU,EAAE,gBAAgB,CAAA;IAC5B,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,eAAO,MAAM,mBAAmB,2BAA4B,OAAO,KAAG,KAAK,EA+K1E,CAAA"}
1
+ {"version":3,"file":"getBaseFields.d.ts","sourceRoot":"","sources":["../../src/uploads/getBaseFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAA;AACtE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAA;AAiBtD,KAAK,OAAO,GAAG;IACb,UAAU,EAAE,gBAAgB,CAAA;IAC5B,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,eAAO,MAAM,mBAAmB,2BAA4B,OAAO,KAAG,KAAK,EAuM1E,CAAA"}