payload 3.0.0-beta.4 → 3.0.0-beta.40

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 (749) hide show
  1. package/auth.d.ts +1 -1
  2. package/auth.js +1 -1
  3. package/components.d.ts +14 -0
  4. package/components.js +71 -0
  5. package/dist/admin/LanguageOptions.d.ts +5 -0
  6. package/dist/admin/LanguageOptions.d.ts.map +1 -0
  7. package/dist/admin/LanguageOptions.js +3 -0
  8. package/dist/admin/LanguageOptions.js.map +1 -0
  9. package/dist/admin/RichText.d.ts +30 -15
  10. package/dist/admin/RichText.d.ts.map +1 -1
  11. package/dist/admin/RichText.js.map +1 -1
  12. package/dist/admin/elements/Cell.d.ts +2 -7
  13. package/dist/admin/elements/Cell.d.ts.map +1 -1
  14. package/dist/admin/elements/Cell.js.map +1 -1
  15. package/dist/admin/elements/Tab.d.ts +4 -0
  16. package/dist/admin/elements/Tab.d.ts.map +1 -1
  17. package/dist/admin/elements/Tab.js.map +1 -1
  18. package/dist/admin/elements/WithServerSideProps.d.ts +6 -2
  19. package/dist/admin/elements/WithServerSideProps.d.ts.map +1 -1
  20. package/dist/admin/elements/WithServerSideProps.js.map +1 -1
  21. package/dist/admin/forms/Error.d.ts +1 -0
  22. package/dist/admin/forms/Error.d.ts.map +1 -1
  23. package/dist/admin/forms/FieldDescription.d.ts +1 -1
  24. package/dist/admin/forms/FieldDescription.d.ts.map +1 -1
  25. package/dist/admin/forms/FieldDescription.js.map +1 -1
  26. package/dist/admin/forms/FieldTypes.d.ts +1 -0
  27. package/dist/admin/forms/FieldTypes.d.ts.map +1 -1
  28. package/dist/admin/forms/Label.d.ts +3 -2
  29. package/dist/admin/forms/Label.d.ts.map +1 -1
  30. package/dist/admin/forms/Label.js.map +1 -1
  31. package/dist/admin/forms/RowLabel.d.ts +1 -1
  32. package/dist/admin/forms/RowLabel.d.ts.map +1 -1
  33. package/dist/admin/forms/RowLabel.js.map +1 -1
  34. package/dist/admin/types.d.ts +4 -3
  35. package/dist/admin/types.d.ts.map +1 -1
  36. package/dist/admin/types.js.map +1 -1
  37. package/dist/admin/views/types.d.ts +7 -4
  38. package/dist/admin/views/types.d.ts.map +1 -1
  39. package/dist/admin/views/types.js.map +1 -1
  40. package/dist/auth/baseFields/apiKey.d.ts.map +1 -1
  41. package/dist/auth/baseFields/apiKey.js +6 -4
  42. package/dist/auth/baseFields/apiKey.js.map +1 -1
  43. package/dist/auth/cookies.d.ts +16 -4
  44. package/dist/auth/cookies.d.ts.map +1 -1
  45. package/dist/auth/cookies.js +45 -14
  46. package/dist/auth/cookies.js.map +1 -1
  47. package/dist/auth/defaultAccess.d.ts +2 -2
  48. package/dist/auth/defaultAccess.d.ts.map +1 -1
  49. package/dist/auth/defaultAccess.js.map +1 -1
  50. package/dist/auth/executeAccess.d.ts +2 -2
  51. package/dist/auth/executeAccess.d.ts.map +1 -1
  52. package/dist/auth/executeAccess.js.map +1 -1
  53. package/dist/auth/getAccessResults.d.ts +2 -2
  54. package/dist/auth/getAccessResults.d.ts.map +1 -1
  55. package/dist/auth/getAccessResults.js +1 -1
  56. package/dist/auth/getAccessResults.js.map +1 -1
  57. package/dist/auth/getFieldsToSign.d.ts +2 -2
  58. package/dist/auth/getFieldsToSign.d.ts.map +1 -1
  59. package/dist/auth/getFieldsToSign.js.map +1 -1
  60. package/dist/auth/operations/access.d.ts +2 -2
  61. package/dist/auth/operations/access.d.ts.map +1 -1
  62. package/dist/auth/operations/access.js.map +1 -1
  63. package/dist/auth/operations/auth.d.ts +2 -2
  64. package/dist/auth/operations/auth.d.ts.map +1 -1
  65. package/dist/auth/operations/auth.js.map +1 -1
  66. package/dist/auth/operations/forgotPassword.d.ts +2 -2
  67. package/dist/auth/operations/forgotPassword.d.ts.map +1 -1
  68. package/dist/auth/operations/forgotPassword.js +7 -8
  69. package/dist/auth/operations/forgotPassword.js.map +1 -1
  70. package/dist/auth/operations/init.d.ts +2 -2
  71. package/dist/auth/operations/init.d.ts.map +1 -1
  72. package/dist/auth/operations/init.js.map +1 -1
  73. package/dist/auth/operations/local/auth.js.map +1 -1
  74. package/dist/auth/operations/local/forgotPassword.d.ts +2 -2
  75. package/dist/auth/operations/local/forgotPassword.d.ts.map +1 -1
  76. package/dist/auth/operations/local/forgotPassword.js.map +1 -1
  77. package/dist/auth/operations/local/login.d.ts +2 -2
  78. package/dist/auth/operations/local/login.d.ts.map +1 -1
  79. package/dist/auth/operations/local/login.js.map +1 -1
  80. package/dist/auth/operations/local/resetPassword.d.ts +2 -2
  81. package/dist/auth/operations/local/resetPassword.d.ts.map +1 -1
  82. package/dist/auth/operations/local/resetPassword.js.map +1 -1
  83. package/dist/auth/operations/local/unlock.d.ts +2 -2
  84. package/dist/auth/operations/local/unlock.d.ts.map +1 -1
  85. package/dist/auth/operations/local/unlock.js.map +1 -1
  86. package/dist/auth/operations/local/verifyEmail.d.ts +2 -2
  87. package/dist/auth/operations/local/verifyEmail.d.ts.map +1 -1
  88. package/dist/auth/operations/local/verifyEmail.js.map +1 -1
  89. package/dist/auth/operations/login.d.ts +2 -2
  90. package/dist/auth/operations/login.d.ts.map +1 -1
  91. package/dist/auth/operations/login.js +21 -1
  92. package/dist/auth/operations/login.js.map +1 -1
  93. package/dist/auth/operations/logout.d.ts +2 -2
  94. package/dist/auth/operations/logout.d.ts.map +1 -1
  95. package/dist/auth/operations/logout.js.map +1 -1
  96. package/dist/auth/operations/me.d.ts +2 -2
  97. package/dist/auth/operations/me.d.ts.map +1 -1
  98. package/dist/auth/operations/me.js.map +1 -1
  99. package/dist/auth/operations/refresh.d.ts +2 -2
  100. package/dist/auth/operations/refresh.d.ts.map +1 -1
  101. package/dist/auth/operations/refresh.js.map +1 -1
  102. package/dist/auth/operations/registerFirstUser.d.ts +2 -2
  103. package/dist/auth/operations/registerFirstUser.d.ts.map +1 -1
  104. package/dist/auth/operations/registerFirstUser.js.map +1 -1
  105. package/dist/auth/operations/resetPassword.d.ts +2 -2
  106. package/dist/auth/operations/resetPassword.d.ts.map +1 -1
  107. package/dist/auth/operations/resetPassword.js.map +1 -1
  108. package/dist/auth/operations/unlock.d.ts +2 -2
  109. package/dist/auth/operations/unlock.d.ts.map +1 -1
  110. package/dist/auth/operations/unlock.js.map +1 -1
  111. package/dist/auth/operations/verifyEmail.d.ts +2 -2
  112. package/dist/auth/operations/verifyEmail.d.ts.map +1 -1
  113. package/dist/auth/operations/verifyEmail.js.map +1 -1
  114. package/dist/auth/sendVerificationEmail.d.ts +7 -8
  115. package/dist/auth/sendVerificationEmail.d.ts.map +1 -1
  116. package/dist/auth/sendVerificationEmail.js +7 -7
  117. package/dist/auth/sendVerificationEmail.js.map +1 -1
  118. package/dist/auth/strategies/local/incrementLoginAttempts.d.ts +2 -2
  119. package/dist/auth/strategies/local/incrementLoginAttempts.d.ts.map +1 -1
  120. package/dist/auth/strategies/local/incrementLoginAttempts.js.map +1 -1
  121. package/dist/auth/strategies/local/register.d.ts +2 -2
  122. package/dist/auth/strategies/local/register.d.ts.map +1 -1
  123. package/dist/auth/strategies/local/register.js +1 -1
  124. package/dist/auth/strategies/local/register.js.map +1 -1
  125. package/dist/auth/strategies/local/resetLoginAttempts.d.ts +2 -2
  126. package/dist/auth/strategies/local/resetLoginAttempts.d.ts.map +1 -1
  127. package/dist/auth/strategies/local/resetLoginAttempts.js.map +1 -1
  128. package/dist/auth/types.d.ts +6 -6
  129. package/dist/auth/types.d.ts.map +1 -1
  130. package/dist/auth/types.js.map +1 -1
  131. package/dist/bin/generateTypes.d.ts +1 -1
  132. package/dist/bin/generateTypes.d.ts.map +1 -1
  133. package/dist/bin/generateTypes.js +12 -8
  134. package/dist/bin/generateTypes.js.map +1 -1
  135. package/dist/bin/loadEnv.d.ts +2 -2
  136. package/dist/bin/loadEnv.d.ts.map +1 -1
  137. package/dist/bin/loadEnv.js +18 -17
  138. package/dist/bin/loadEnv.js.map +1 -1
  139. package/dist/bin/loader/ignores.d.ts +2 -0
  140. package/dist/bin/loader/ignores.d.ts.map +1 -0
  141. package/dist/bin/loader/ignores.js +5 -0
  142. package/dist/bin/loader/ignores.js.map +1 -0
  143. package/dist/bin/loader/index.d.ts.map +1 -1
  144. package/dist/bin/loader/index.js +13 -15
  145. package/dist/bin/loader/index.js.map +1 -1
  146. package/dist/bin/loader/read-default-tsconfig.d.ts +25 -0
  147. package/dist/bin/loader/read-default-tsconfig.d.ts.map +1 -1
  148. package/dist/bin/loader/read-default-tsconfig.js +25 -1
  149. package/dist/bin/loader/read-default-tsconfig.js.map +1 -1
  150. package/dist/bin/loader/resolveOriginalPath.d.ts +10 -0
  151. package/dist/bin/loader/resolveOriginalPath.d.ts.map +1 -0
  152. package/dist/bin/loader/resolveOriginalPath.js +32 -0
  153. package/dist/bin/loader/resolveOriginalPath.js.map +1 -0
  154. package/dist/collections/config/client.d.ts +30 -3
  155. package/dist/collections/config/client.d.ts.map +1 -1
  156. package/dist/collections/config/client.js +3 -1
  157. package/dist/collections/config/client.js.map +1 -1
  158. package/dist/collections/config/defaults.d.ts +6 -5
  159. package/dist/collections/config/defaults.d.ts.map +1 -1
  160. package/dist/collections/config/defaults.js +1 -0
  161. package/dist/collections/config/defaults.js.map +1 -1
  162. package/dist/collections/config/sanitize.d.ts +2 -3
  163. package/dist/collections/config/sanitize.d.ts.map +1 -1
  164. package/dist/collections/config/sanitize.js +7 -4
  165. package/dist/collections/config/sanitize.js.map +1 -1
  166. package/dist/collections/config/schema.d.ts.map +1 -1
  167. package/dist/collections/config/schema.js +12 -2
  168. package/dist/collections/config/schema.js.map +1 -1
  169. package/dist/collections/config/types.d.ts +33 -18
  170. package/dist/collections/config/types.d.ts.map +1 -1
  171. package/dist/collections/config/types.js.map +1 -1
  172. package/dist/collections/dataloader.d.ts +14 -0
  173. package/dist/collections/dataloader.d.ts.map +1 -1
  174. package/dist/collections/dataloader.js +28 -13
  175. package/dist/collections/dataloader.js.map +1 -1
  176. package/dist/collections/operations/count.d.ts +13 -0
  177. package/dist/collections/operations/count.d.ts.map +1 -0
  178. package/dist/collections/operations/count.js +75 -0
  179. package/dist/collections/operations/count.js.map +1 -0
  180. package/dist/collections/operations/create.d.ts +2 -2
  181. package/dist/collections/operations/create.d.ts.map +1 -1
  182. package/dist/collections/operations/create.js +5 -4
  183. package/dist/collections/operations/create.js.map +1 -1
  184. package/dist/collections/operations/delete.d.ts +2 -2
  185. package/dist/collections/operations/delete.d.ts.map +1 -1
  186. package/dist/collections/operations/delete.js +1 -0
  187. package/dist/collections/operations/delete.js.map +1 -1
  188. package/dist/collections/operations/deleteByID.d.ts +2 -2
  189. package/dist/collections/operations/deleteByID.d.ts.map +1 -1
  190. package/dist/collections/operations/deleteByID.js +1 -0
  191. package/dist/collections/operations/deleteByID.js.map +1 -1
  192. package/dist/collections/operations/docAccess.d.ts +2 -2
  193. package/dist/collections/operations/docAccess.d.ts.map +1 -1
  194. package/dist/collections/operations/docAccess.js.map +1 -1
  195. package/dist/collections/operations/duplicate.d.ts +2 -2
  196. package/dist/collections/operations/duplicate.d.ts.map +1 -1
  197. package/dist/collections/operations/duplicate.js +2 -0
  198. package/dist/collections/operations/duplicate.js.map +1 -1
  199. package/dist/collections/operations/find.d.ts +2 -2
  200. package/dist/collections/operations/find.d.ts.map +1 -1
  201. package/dist/collections/operations/find.js +1 -0
  202. package/dist/collections/operations/find.js.map +1 -1
  203. package/dist/collections/operations/findByID.d.ts +2 -2
  204. package/dist/collections/operations/findByID.d.ts.map +1 -1
  205. package/dist/collections/operations/findByID.js +1 -0
  206. package/dist/collections/operations/findByID.js.map +1 -1
  207. package/dist/collections/operations/findVersionByID.d.ts +2 -2
  208. package/dist/collections/operations/findVersionByID.d.ts.map +1 -1
  209. package/dist/collections/operations/findVersionByID.js +1 -0
  210. package/dist/collections/operations/findVersionByID.js.map +1 -1
  211. package/dist/collections/operations/findVersions.d.ts +2 -2
  212. package/dist/collections/operations/findVersions.d.ts.map +1 -1
  213. package/dist/collections/operations/findVersions.js +1 -0
  214. package/dist/collections/operations/findVersions.js.map +1 -1
  215. package/dist/collections/operations/local/count.d.ts +20 -0
  216. package/dist/collections/operations/local/count.d.ts.map +1 -0
  217. package/dist/collections/operations/local/count.js +19 -0
  218. package/dist/collections/operations/local/count.js.map +1 -0
  219. package/dist/collections/operations/local/create.d.ts +4 -4
  220. package/dist/collections/operations/local/create.d.ts.map +1 -1
  221. package/dist/collections/operations/local/create.js.map +1 -1
  222. package/dist/collections/operations/local/delete.d.ts +4 -4
  223. package/dist/collections/operations/local/delete.d.ts.map +1 -1
  224. package/dist/collections/operations/local/delete.js.map +1 -1
  225. package/dist/collections/operations/local/duplicate.d.ts +4 -4
  226. package/dist/collections/operations/local/duplicate.d.ts.map +1 -1
  227. package/dist/collections/operations/local/duplicate.js.map +1 -1
  228. package/dist/collections/operations/local/find.d.ts +4 -4
  229. package/dist/collections/operations/local/find.d.ts.map +1 -1
  230. package/dist/collections/operations/local/find.js.map +1 -1
  231. package/dist/collections/operations/local/findByID.d.ts +4 -4
  232. package/dist/collections/operations/local/findByID.d.ts.map +1 -1
  233. package/dist/collections/operations/local/findByID.js.map +1 -1
  234. package/dist/collections/operations/local/findVersionByID.d.ts +4 -4
  235. package/dist/collections/operations/local/findVersionByID.d.ts.map +1 -1
  236. package/dist/collections/operations/local/findVersionByID.js.map +1 -1
  237. package/dist/collections/operations/local/findVersions.d.ts +4 -4
  238. package/dist/collections/operations/local/findVersions.d.ts.map +1 -1
  239. package/dist/collections/operations/local/findVersions.js.map +1 -1
  240. package/dist/collections/operations/local/index.d.ts +2 -0
  241. package/dist/collections/operations/local/index.d.ts.map +1 -1
  242. package/dist/collections/operations/local/index.js +2 -0
  243. package/dist/collections/operations/local/index.js.map +1 -1
  244. package/dist/collections/operations/local/restoreVersion.d.ts +4 -4
  245. package/dist/collections/operations/local/restoreVersion.d.ts.map +1 -1
  246. package/dist/collections/operations/local/restoreVersion.js.map +1 -1
  247. package/dist/collections/operations/local/update.d.ts +4 -4
  248. package/dist/collections/operations/local/update.d.ts.map +1 -1
  249. package/dist/collections/operations/local/update.js.map +1 -1
  250. package/dist/collections/operations/restoreVersion.d.ts +2 -2
  251. package/dist/collections/operations/restoreVersion.d.ts.map +1 -1
  252. package/dist/collections/operations/restoreVersion.js +2 -0
  253. package/dist/collections/operations/restoreVersion.js.map +1 -1
  254. package/dist/collections/operations/update.d.ts +2 -2
  255. package/dist/collections/operations/update.d.ts.map +1 -1
  256. package/dist/collections/operations/update.js +6 -3
  257. package/dist/collections/operations/update.js.map +1 -1
  258. package/dist/collections/operations/updateByID.d.ts +2 -2
  259. package/dist/collections/operations/updateByID.d.ts.map +1 -1
  260. package/dist/collections/operations/updateByID.js +5 -2
  261. package/dist/collections/operations/updateByID.js.map +1 -1
  262. package/dist/collections/operations/utils.d.ts +8 -2
  263. package/dist/collections/operations/utils.d.ts.map +1 -1
  264. package/dist/collections/operations/utils.js.map +1 -1
  265. package/dist/config/build.d.ts.map +1 -1
  266. package/dist/config/build.js +3 -4
  267. package/dist/config/build.js.map +1 -1
  268. package/dist/config/client.d.ts +2 -1
  269. package/dist/config/client.d.ts.map +1 -1
  270. package/dist/config/client.js +3 -1
  271. package/dist/config/client.js.map +1 -1
  272. package/dist/config/defaults.d.ts.map +1 -1
  273. package/dist/config/defaults.js +14 -3
  274. package/dist/config/defaults.js.map +1 -1
  275. package/dist/config/find.d.ts.map +1 -1
  276. package/dist/config/find.js +27 -16
  277. package/dist/config/find.js.map +1 -1
  278. package/dist/config/sanitize.d.ts +1 -1
  279. package/dist/config/sanitize.d.ts.map +1 -1
  280. package/dist/config/sanitize.js +43 -10
  281. package/dist/config/sanitize.js.map +1 -1
  282. package/dist/config/schema.d.ts.map +1 -1
  283. package/dist/config/schema.js +21 -7
  284. package/dist/config/schema.js.map +1 -1
  285. package/dist/config/shared/openGraphSchema.d.ts +3 -0
  286. package/dist/config/shared/openGraphSchema.d.ts.map +1 -0
  287. package/dist/config/shared/openGraphSchema.js +16 -0
  288. package/dist/config/shared/openGraphSchema.js.map +1 -0
  289. package/dist/config/types.d.ts +146 -78
  290. package/dist/config/types.d.ts.map +1 -1
  291. package/dist/config/types.js +7 -13
  292. package/dist/config/types.js.map +1 -1
  293. package/dist/database/migrations/getPredefinedMigration.d.ts +12 -0
  294. package/dist/database/migrations/getPredefinedMigration.d.ts.map +1 -0
  295. package/dist/database/migrations/getPredefinedMigration.js +41 -0
  296. package/dist/database/migrations/getPredefinedMigration.js.map +1 -0
  297. package/dist/database/migrations/migrate.js.map +1 -1
  298. package/dist/database/migrations/migrateDown.js.map +1 -1
  299. package/dist/database/migrations/migrateRefresh.js.map +1 -1
  300. package/dist/database/migrations/migrateReset.js.map +1 -1
  301. package/dist/database/queryValidation/validateQueryPaths.d.ts +2 -2
  302. package/dist/database/queryValidation/validateQueryPaths.d.ts.map +1 -1
  303. package/dist/database/queryValidation/validateQueryPaths.js +1 -1
  304. package/dist/database/queryValidation/validateQueryPaths.js.map +1 -1
  305. package/dist/database/queryValidation/validateSearchParams.d.ts +2 -2
  306. package/dist/database/queryValidation/validateSearchParams.d.ts.map +1 -1
  307. package/dist/database/queryValidation/validateSearchParams.js.map +1 -1
  308. package/dist/database/types.d.ts +34 -19
  309. package/dist/database/types.d.ts.map +1 -1
  310. package/dist/database/types.js.map +1 -1
  311. package/dist/email/consoleEmailAdapter.d.ts +3 -0
  312. package/dist/email/consoleEmailAdapter.d.ts.map +1 -0
  313. package/dist/email/consoleEmailAdapter.js +17 -0
  314. package/dist/email/consoleEmailAdapter.js.map +1 -0
  315. package/dist/email/defaults.d.ts +2 -2
  316. package/dist/email/defaults.d.ts.map +1 -1
  317. package/dist/email/defaults.js +3 -3
  318. package/dist/email/defaults.js.map +1 -1
  319. package/dist/email/getStringifiedToAddress.d.ts +3 -0
  320. package/dist/email/getStringifiedToAddress.d.ts.map +1 -0
  321. package/dist/email/getStringifiedToAddress.js +20 -0
  322. package/dist/email/getStringifiedToAddress.js.map +1 -0
  323. package/dist/email/sendEmail.d.ts +3 -2
  324. package/dist/email/sendEmail.d.ts.map +1 -1
  325. package/dist/email/sendEmail.js +8 -4
  326. package/dist/email/sendEmail.js.map +1 -1
  327. package/dist/email/types.d.ts +26 -18
  328. package/dist/email/types.d.ts.map +1 -1
  329. package/dist/email/types.js +5 -1
  330. package/dist/email/types.js.map +1 -1
  331. package/dist/errors/APIError.d.ts +2 -2
  332. package/dist/errors/APIError.d.ts.map +1 -1
  333. package/dist/errors/APIError.js +1 -2
  334. package/dist/errors/APIError.js.map +1 -1
  335. package/dist/errors/AuthenticationError.d.ts +2 -3
  336. package/dist/errors/AuthenticationError.d.ts.map +1 -1
  337. package/dist/errors/AuthenticationError.js +2 -3
  338. package/dist/errors/AuthenticationError.js.map +1 -1
  339. package/dist/errors/DuplicateCollection.d.ts +2 -3
  340. package/dist/errors/DuplicateCollection.d.ts.map +1 -1
  341. package/dist/errors/DuplicateCollection.js +2 -3
  342. package/dist/errors/DuplicateCollection.js.map +1 -1
  343. package/dist/errors/DuplicateFieldName.d.ts +2 -3
  344. package/dist/errors/DuplicateFieldName.d.ts.map +1 -1
  345. package/dist/errors/DuplicateFieldName.js +2 -3
  346. package/dist/errors/DuplicateFieldName.js.map +1 -1
  347. package/dist/errors/DuplicateGlobal.d.ts +2 -3
  348. package/dist/errors/DuplicateGlobal.d.ts.map +1 -1
  349. package/dist/errors/DuplicateGlobal.js +2 -3
  350. package/dist/errors/DuplicateGlobal.js.map +1 -1
  351. package/dist/errors/ErrorDeletingFile.d.ts +2 -3
  352. package/dist/errors/ErrorDeletingFile.d.ts.map +1 -1
  353. package/dist/errors/ErrorDeletingFile.js +2 -3
  354. package/dist/errors/ErrorDeletingFile.js.map +1 -1
  355. package/dist/errors/FileRetrievalError.d.ts +6 -0
  356. package/dist/errors/FileRetrievalError.d.ts.map +1 -0
  357. package/dist/errors/FileRetrievalError.js +13 -0
  358. package/dist/errors/FileRetrievalError.js.map +1 -0
  359. package/dist/errors/FileUploadError.d.ts +2 -3
  360. package/dist/errors/FileUploadError.d.ts.map +1 -1
  361. package/dist/errors/FileUploadError.js +2 -3
  362. package/dist/errors/FileUploadError.js.map +1 -1
  363. package/dist/errors/Forbidden.d.ts +2 -3
  364. package/dist/errors/Forbidden.d.ts.map +1 -1
  365. package/dist/errors/Forbidden.js +2 -3
  366. package/dist/errors/Forbidden.js.map +1 -1
  367. package/dist/errors/InvalidConfiguration.d.ts +2 -3
  368. package/dist/errors/InvalidConfiguration.d.ts.map +1 -1
  369. package/dist/errors/InvalidConfiguration.js +2 -3
  370. package/dist/errors/InvalidConfiguration.js.map +1 -1
  371. package/dist/errors/InvalidFieldName.d.ts +2 -3
  372. package/dist/errors/InvalidFieldName.d.ts.map +1 -1
  373. package/dist/errors/InvalidFieldName.js +2 -3
  374. package/dist/errors/InvalidFieldName.js.map +1 -1
  375. package/dist/errors/InvalidFieldRelationship.d.ts +2 -3
  376. package/dist/errors/InvalidFieldRelationship.d.ts.map +1 -1
  377. package/dist/errors/InvalidFieldRelationship.js +2 -3
  378. package/dist/errors/InvalidFieldRelationship.js.map +1 -1
  379. package/dist/errors/InvalidSchema.d.ts +2 -3
  380. package/dist/errors/InvalidSchema.d.ts.map +1 -1
  381. package/dist/errors/InvalidSchema.js +2 -3
  382. package/dist/errors/InvalidSchema.js.map +1 -1
  383. package/dist/errors/LockedAuth.d.ts +2 -3
  384. package/dist/errors/LockedAuth.d.ts.map +1 -1
  385. package/dist/errors/LockedAuth.js +2 -3
  386. package/dist/errors/LockedAuth.js.map +1 -1
  387. package/dist/errors/MissingCollectionLabel.d.ts +2 -3
  388. package/dist/errors/MissingCollectionLabel.d.ts.map +1 -1
  389. package/dist/errors/MissingCollectionLabel.js +2 -3
  390. package/dist/errors/MissingCollectionLabel.js.map +1 -1
  391. package/dist/errors/MissingEditorProp.d.ts +2 -3
  392. package/dist/errors/MissingEditorProp.d.ts.map +1 -1
  393. package/dist/errors/MissingEditorProp.js +3 -4
  394. package/dist/errors/MissingEditorProp.js.map +1 -1
  395. package/dist/errors/MissingFieldInputOptions.d.ts +2 -3
  396. package/dist/errors/MissingFieldInputOptions.d.ts.map +1 -1
  397. package/dist/errors/MissingFieldInputOptions.js +2 -3
  398. package/dist/errors/MissingFieldInputOptions.js.map +1 -1
  399. package/dist/errors/MissingFieldType.d.ts +2 -3
  400. package/dist/errors/MissingFieldType.d.ts.map +1 -1
  401. package/dist/errors/MissingFieldType.js +2 -3
  402. package/dist/errors/MissingFieldType.js.map +1 -1
  403. package/dist/errors/MissingFile.d.ts +2 -3
  404. package/dist/errors/MissingFile.d.ts.map +1 -1
  405. package/dist/errors/MissingFile.js +2 -3
  406. package/dist/errors/MissingFile.js.map +1 -1
  407. package/dist/errors/NotFound.d.ts +2 -3
  408. package/dist/errors/NotFound.d.ts.map +1 -1
  409. package/dist/errors/NotFound.js +2 -3
  410. package/dist/errors/NotFound.js.map +1 -1
  411. package/dist/errors/QueryError.d.ts +2 -3
  412. package/dist/errors/QueryError.d.ts.map +1 -1
  413. package/dist/errors/QueryError.js +2 -3
  414. package/dist/errors/QueryError.js.map +1 -1
  415. package/dist/errors/TimestampsRequired.d.ts +2 -3
  416. package/dist/errors/TimestampsRequired.d.ts.map +1 -1
  417. package/dist/errors/TimestampsRequired.js +2 -3
  418. package/dist/errors/TimestampsRequired.js.map +1 -1
  419. package/dist/errors/UnathorizedError.d.ts +2 -3
  420. package/dist/errors/UnathorizedError.d.ts.map +1 -1
  421. package/dist/errors/UnathorizedError.js +2 -3
  422. package/dist/errors/UnathorizedError.js.map +1 -1
  423. package/dist/errors/ValidationError.d.ts +2 -3
  424. package/dist/errors/ValidationError.d.ts.map +1 -1
  425. package/dist/errors/ValidationError.js +2 -3
  426. package/dist/errors/ValidationError.js.map +1 -1
  427. package/dist/errors/index.d.ts +20 -19
  428. package/dist/errors/index.d.ts.map +1 -1
  429. package/dist/errors/index.js +20 -19
  430. package/dist/errors/index.js.map +1 -1
  431. package/dist/exports/auth.d.ts +1 -0
  432. package/dist/exports/auth.d.ts.map +1 -1
  433. package/dist/exports/auth.js +1 -0
  434. package/dist/exports/auth.js.map +1 -1
  435. package/dist/exports/database.d.ts +3 -2
  436. package/dist/exports/database.d.ts.map +1 -1
  437. package/dist/exports/database.js +1 -1
  438. package/dist/exports/database.js.map +1 -1
  439. package/dist/exports/i18n/he.d.ts +2 -0
  440. package/dist/exports/i18n/he.d.ts.map +1 -0
  441. package/dist/exports/i18n/he.js +3 -0
  442. package/dist/exports/i18n/he.js.map +1 -0
  443. package/dist/exports/i18n.d.ts +2 -0
  444. package/dist/exports/i18n.d.ts.map +1 -0
  445. package/dist/exports/i18n.js +3 -0
  446. package/dist/exports/i18n.js.map +1 -0
  447. package/dist/exports/node.d.ts +5 -0
  448. package/dist/exports/node.d.ts.map +1 -1
  449. package/dist/exports/node.js +5 -1
  450. package/dist/exports/node.js.map +1 -1
  451. package/dist/exports/operations.d.ts +1 -0
  452. package/dist/exports/operations.d.ts.map +1 -1
  453. package/dist/exports/operations.js +1 -0
  454. package/dist/exports/operations.js.map +1 -1
  455. package/dist/exports/types.d.ts +2 -1
  456. package/dist/exports/types.d.ts.map +1 -1
  457. package/dist/exports/types.js.map +1 -1
  458. package/dist/exports/utilities.d.ts +9 -3
  459. package/dist/exports/utilities.d.ts.map +1 -1
  460. package/dist/exports/utilities.js +8 -3
  461. package/dist/exports/utilities.js.map +1 -1
  462. package/dist/fields/config/client.d.ts +235 -79
  463. package/dist/fields/config/client.d.ts.map +1 -1
  464. package/dist/fields/config/client.js +2 -1
  465. package/dist/fields/config/client.js.map +1 -1
  466. package/dist/fields/config/sanitize.d.ts +7 -2
  467. package/dist/fields/config/sanitize.d.ts.map +1 -1
  468. package/dist/fields/config/sanitize.js +67 -34
  469. package/dist/fields/config/sanitize.js.map +1 -1
  470. package/dist/fields/config/sanitize.spec.js +76 -85
  471. package/dist/fields/config/sanitize.spec.js.map +1 -1
  472. package/dist/fields/config/schema.d.ts.map +1 -1
  473. package/dist/fields/config/schema.js +33 -6
  474. package/dist/fields/config/schema.js.map +1 -1
  475. package/dist/fields/config/types.d.ts +108 -44
  476. package/dist/fields/config/types.d.ts.map +1 -1
  477. package/dist/fields/config/types.js.map +1 -1
  478. package/dist/fields/getDefaultValue.d.ts +2 -2
  479. package/dist/fields/getDefaultValue.d.ts.map +1 -1
  480. package/dist/fields/getDefaultValue.js.map +1 -1
  481. package/dist/fields/hooks/afterChange/index.d.ts +2 -2
  482. package/dist/fields/hooks/afterChange/index.d.ts.map +1 -1
  483. package/dist/fields/hooks/afterChange/index.js.map +1 -1
  484. package/dist/fields/hooks/afterChange/promise.d.ts +2 -2
  485. package/dist/fields/hooks/afterChange/promise.d.ts.map +1 -1
  486. package/dist/fields/hooks/afterChange/promise.js.map +1 -1
  487. package/dist/fields/hooks/afterChange/traverseFields.d.ts +2 -2
  488. package/dist/fields/hooks/afterChange/traverseFields.d.ts.map +1 -1
  489. package/dist/fields/hooks/afterChange/traverseFields.js.map +1 -1
  490. package/dist/fields/hooks/afterRead/index.d.ts +3 -2
  491. package/dist/fields/hooks/afterRead/index.d.ts.map +1 -1
  492. package/dist/fields/hooks/afterRead/index.js +2 -1
  493. package/dist/fields/hooks/afterRead/index.js.map +1 -1
  494. package/dist/fields/hooks/afterRead/promise.d.ts +7 -3
  495. package/dist/fields/hooks/afterRead/promise.d.ts.map +1 -1
  496. package/dist/fields/hooks/afterRead/promise.js +20 -18
  497. package/dist/fields/hooks/afterRead/promise.js.map +1 -1
  498. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.d.ts +4 -3
  499. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.d.ts.map +1 -1
  500. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.js +16 -10
  501. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.js.map +1 -1
  502. package/dist/fields/hooks/afterRead/traverseFields.d.ts +7 -3
  503. package/dist/fields/hooks/afterRead/traverseFields.d.ts.map +1 -1
  504. package/dist/fields/hooks/afterRead/traverseFields.js +2 -1
  505. package/dist/fields/hooks/afterRead/traverseFields.js.map +1 -1
  506. package/dist/fields/hooks/beforeChange/index.d.ts +2 -2
  507. package/dist/fields/hooks/beforeChange/index.d.ts.map +1 -1
  508. package/dist/fields/hooks/beforeChange/index.js.map +1 -1
  509. package/dist/fields/hooks/beforeChange/promise.d.ts +2 -2
  510. package/dist/fields/hooks/beforeChange/promise.d.ts.map +1 -1
  511. package/dist/fields/hooks/beforeChange/promise.js +3 -1
  512. package/dist/fields/hooks/beforeChange/promise.js.map +1 -1
  513. package/dist/fields/hooks/beforeChange/traverseFields.d.ts +14 -2
  514. package/dist/fields/hooks/beforeChange/traverseFields.d.ts.map +1 -1
  515. package/dist/fields/hooks/beforeChange/traverseFields.js.map +1 -1
  516. package/dist/fields/hooks/beforeValidate/index.d.ts +2 -2
  517. package/dist/fields/hooks/beforeValidate/index.d.ts.map +1 -1
  518. package/dist/fields/hooks/beforeValidate/index.js.map +1 -1
  519. package/dist/fields/hooks/beforeValidate/promise.d.ts +8 -2
  520. package/dist/fields/hooks/beforeValidate/promise.d.ts.map +1 -1
  521. package/dist/fields/hooks/beforeValidate/promise.js +2 -0
  522. package/dist/fields/hooks/beforeValidate/promise.js.map +1 -1
  523. package/dist/fields/hooks/beforeValidate/traverseFields.d.ts +8 -2
  524. package/dist/fields/hooks/beforeValidate/traverseFields.d.ts.map +1 -1
  525. package/dist/fields/hooks/beforeValidate/traverseFields.js.map +1 -1
  526. package/dist/fields/validations.d.ts +6 -0
  527. package/dist/fields/validations.d.ts.map +1 -1
  528. package/dist/fields/validations.js +62 -7
  529. package/dist/fields/validations.js.map +1 -1
  530. package/dist/fields/validations.spec.js +1 -0
  531. package/dist/fields/validations.spec.js.map +1 -1
  532. package/dist/globals/config/client.d.ts +1 -1
  533. package/dist/globals/config/client.d.ts.map +1 -1
  534. package/dist/globals/config/client.js +2 -1
  535. package/dist/globals/config/client.js.map +1 -1
  536. package/dist/globals/config/sanitize.d.ts +2 -3
  537. package/dist/globals/config/sanitize.d.ts.map +1 -1
  538. package/dist/globals/config/sanitize.js +36 -35
  539. package/dist/globals/config/sanitize.js.map +1 -1
  540. package/dist/globals/config/schema.d.ts.map +1 -1
  541. package/dist/globals/config/schema.js +10 -1
  542. package/dist/globals/config/schema.js.map +1 -1
  543. package/dist/globals/config/types.d.ts +16 -9
  544. package/dist/globals/config/types.d.ts.map +1 -1
  545. package/dist/globals/config/types.js.map +1 -1
  546. package/dist/globals/operations/docAccess.d.ts +2 -2
  547. package/dist/globals/operations/docAccess.d.ts.map +1 -1
  548. package/dist/globals/operations/docAccess.js.map +1 -1
  549. package/dist/globals/operations/findOne.d.ts +2 -3
  550. package/dist/globals/operations/findOne.d.ts.map +1 -1
  551. package/dist/globals/operations/findOne.js +1 -0
  552. package/dist/globals/operations/findOne.js.map +1 -1
  553. package/dist/globals/operations/findVersionByID.d.ts +2 -2
  554. package/dist/globals/operations/findVersionByID.d.ts.map +1 -1
  555. package/dist/globals/operations/findVersionByID.js +1 -0
  556. package/dist/globals/operations/findVersionByID.js.map +1 -1
  557. package/dist/globals/operations/findVersions.d.ts +2 -2
  558. package/dist/globals/operations/findVersions.d.ts.map +1 -1
  559. package/dist/globals/operations/findVersions.js +1 -0
  560. package/dist/globals/operations/findVersions.js.map +1 -1
  561. package/dist/globals/operations/local/findOne.d.ts +4 -4
  562. package/dist/globals/operations/local/findOne.d.ts.map +1 -1
  563. package/dist/globals/operations/local/findOne.js.map +1 -1
  564. package/dist/globals/operations/local/findVersionByID.d.ts +4 -4
  565. package/dist/globals/operations/local/findVersionByID.d.ts.map +1 -1
  566. package/dist/globals/operations/local/findVersionByID.js.map +1 -1
  567. package/dist/globals/operations/local/findVersions.d.ts +4 -4
  568. package/dist/globals/operations/local/findVersions.d.ts.map +1 -1
  569. package/dist/globals/operations/local/findVersions.js.map +1 -1
  570. package/dist/globals/operations/local/restoreVersion.d.ts +4 -4
  571. package/dist/globals/operations/local/restoreVersion.d.ts.map +1 -1
  572. package/dist/globals/operations/local/restoreVersion.js.map +1 -1
  573. package/dist/globals/operations/local/update.d.ts +4 -4
  574. package/dist/globals/operations/local/update.d.ts.map +1 -1
  575. package/dist/globals/operations/local/update.js.map +1 -1
  576. package/dist/globals/operations/restoreVersion.d.ts +2 -2
  577. package/dist/globals/operations/restoreVersion.d.ts.map +1 -1
  578. package/dist/globals/operations/restoreVersion.js +1 -0
  579. package/dist/globals/operations/restoreVersion.js.map +1 -1
  580. package/dist/globals/operations/update.d.ts +2 -2
  581. package/dist/globals/operations/update.d.ts.map +1 -1
  582. package/dist/globals/operations/update.js +2 -0
  583. package/dist/globals/operations/update.js.map +1 -1
  584. package/dist/index.d.ts +16 -10
  585. package/dist/index.d.ts.map +1 -1
  586. package/dist/index.js +26 -14
  587. package/dist/index.js.map +1 -1
  588. package/dist/preferences/deleteUserPreferences.d.ts +2 -2
  589. package/dist/preferences/deleteUserPreferences.d.ts.map +1 -1
  590. package/dist/preferences/deleteUserPreferences.js.map +1 -1
  591. package/dist/preferences/operations/delete.js +2 -2
  592. package/dist/preferences/operations/delete.js.map +1 -1
  593. package/dist/preferences/operations/update.js +1 -1
  594. package/dist/preferences/operations/update.js.map +1 -1
  595. package/dist/preferences/requestHandlers/delete.d.ts.map +1 -1
  596. package/dist/preferences/requestHandlers/delete.js +18 -5
  597. package/dist/preferences/requestHandlers/delete.js.map +1 -1
  598. package/dist/preferences/requestHandlers/findOne.d.ts.map +1 -1
  599. package/dist/preferences/requestHandlers/findOne.js +18 -5
  600. package/dist/preferences/requestHandlers/findOne.js.map +1 -1
  601. package/dist/preferences/requestHandlers/update.d.ts.map +1 -1
  602. package/dist/preferences/requestHandlers/update.js +19 -7
  603. package/dist/preferences/requestHandlers/update.js.map +1 -1
  604. package/dist/preferences/types.d.ts +3 -3
  605. package/dist/preferences/types.d.ts.map +1 -1
  606. package/dist/preferences/types.js.map +1 -1
  607. package/dist/translations/getLocalI18n.d.ts +1 -1
  608. package/dist/translations/getLocalI18n.d.ts.map +1 -1
  609. package/dist/translations/getLocalI18n.js +1 -1
  610. package/dist/translations/getLocalI18n.js.map +1 -1
  611. package/dist/types/index.d.ts +21 -29
  612. package/dist/types/index.d.ts.map +1 -1
  613. package/dist/types/index.js.map +1 -1
  614. package/dist/uploads/canResizeImage.d.ts +1 -1
  615. package/dist/uploads/canResizeImage.d.ts.map +1 -1
  616. package/dist/uploads/canResizeImage.js +1 -1
  617. package/dist/uploads/canResizeImage.js.map +1 -1
  618. package/dist/uploads/cropImage.d.ts +1 -1
  619. package/dist/uploads/cropImage.d.ts.map +1 -1
  620. package/dist/uploads/cropImage.js +1 -1
  621. package/dist/uploads/cropImage.js.map +1 -1
  622. package/dist/uploads/deleteAssociatedFiles.d.ts +2 -2
  623. package/dist/uploads/deleteAssociatedFiles.d.ts.map +1 -1
  624. package/dist/uploads/deleteAssociatedFiles.js.map +1 -1
  625. package/dist/uploads/docWithFilenameExists.d.ts +2 -2
  626. package/dist/uploads/docWithFilenameExists.d.ts.map +1 -1
  627. package/dist/uploads/docWithFilenameExists.js.map +1 -1
  628. package/dist/uploads/generateFileData.d.ts +5 -3
  629. package/dist/uploads/generateFileData.d.ts.map +1 -1
  630. package/dist/uploads/generateFileData.js +55 -16
  631. package/dist/uploads/generateFileData.js.map +1 -1
  632. package/dist/uploads/getBaseFields.d.ts.map +1 -1
  633. package/dist/uploads/getBaseFields.js +23 -4
  634. package/dist/uploads/getBaseFields.js.map +1 -1
  635. package/dist/uploads/getExternalFile.d.ts +5 -4
  636. package/dist/uploads/getExternalFile.d.ts.map +1 -1
  637. package/dist/uploads/getExternalFile.js +10 -6
  638. package/dist/uploads/getExternalFile.js.map +1 -1
  639. package/dist/uploads/getFileByPath.d.ts +2 -2
  640. package/dist/uploads/getFileByPath.d.ts.map +1 -1
  641. package/dist/uploads/getFileByPath.js.map +1 -1
  642. package/dist/uploads/getImageSize.d.ts +2 -2
  643. package/dist/uploads/getImageSize.d.ts.map +1 -1
  644. package/dist/uploads/getImageSize.js +19 -5
  645. package/dist/uploads/getImageSize.js.map +1 -1
  646. package/dist/uploads/getSafeFilename.d.ts +4 -4
  647. package/dist/uploads/getSafeFilename.d.ts.map +1 -1
  648. package/dist/uploads/getSafeFilename.js +1 -2
  649. package/dist/uploads/getSafeFilename.js.map +1 -1
  650. package/dist/uploads/imageResizer.d.ts +8 -10
  651. package/dist/uploads/imageResizer.d.ts.map +1 -1
  652. package/dist/uploads/imageResizer.js +42 -24
  653. package/dist/uploads/imageResizer.js.map +1 -1
  654. package/dist/uploads/isImage.d.ts +1 -1
  655. package/dist/uploads/isImage.d.ts.map +1 -1
  656. package/dist/uploads/isImage.js +1 -1
  657. package/dist/uploads/isImage.js.map +1 -1
  658. package/dist/uploads/tempFile.d.ts +7 -0
  659. package/dist/uploads/tempFile.d.ts.map +1 -0
  660. package/dist/uploads/tempFile.js +39 -0
  661. package/dist/uploads/tempFile.js.map +1 -0
  662. package/dist/uploads/types.d.ts +28 -5
  663. package/dist/uploads/types.d.ts.map +1 -1
  664. package/dist/uploads/types.js.map +1 -1
  665. package/dist/uploads/unlinkTempFiles.d.ts +2 -2
  666. package/dist/uploads/unlinkTempFiles.d.ts.map +1 -1
  667. package/dist/uploads/unlinkTempFiles.js.map +1 -1
  668. package/dist/uploads/uploadFiles.d.ts +2 -2
  669. package/dist/uploads/uploadFiles.d.ts.map +1 -1
  670. package/dist/uploads/uploadFiles.js.map +1 -1
  671. package/dist/utilities/checkDuplicateCollections.js +1 -1
  672. package/dist/utilities/checkDuplicateCollections.js.map +1 -1
  673. package/dist/utilities/commitTransaction.d.ts +2 -2
  674. package/dist/utilities/commitTransaction.d.ts.map +1 -1
  675. package/dist/utilities/commitTransaction.js.map +1 -1
  676. package/dist/utilities/configToJSONSchema.d.ts.map +1 -1
  677. package/dist/utilities/configToJSONSchema.js +27 -1
  678. package/dist/utilities/configToJSONSchema.js.map +1 -1
  679. package/dist/utilities/configToJSONSchema.spec.js +98 -2
  680. package/dist/utilities/configToJSONSchema.spec.js.map +1 -1
  681. package/dist/utilities/createLocalReq.d.ts +3 -3
  682. package/dist/utilities/createLocalReq.d.ts.map +1 -1
  683. package/dist/utilities/createLocalReq.js +8 -5
  684. package/dist/utilities/createLocalReq.js.map +1 -1
  685. package/dist/utilities/getEntityPolicies.d.ts +2 -2
  686. package/dist/utilities/getEntityPolicies.d.ts.map +1 -1
  687. package/dist/utilities/getEntityPolicies.js.map +1 -1
  688. package/dist/utilities/importWithoutClientFiles.d.ts.map +1 -1
  689. package/dist/utilities/importWithoutClientFiles.js +10 -4
  690. package/dist/utilities/importWithoutClientFiles.js.map +1 -1
  691. package/dist/utilities/initTransaction.d.ts +2 -2
  692. package/dist/utilities/initTransaction.d.ts.map +1 -1
  693. package/dist/utilities/initTransaction.js.map +1 -1
  694. package/dist/utilities/isEntityHidden.d.ts +2 -2
  695. package/dist/utilities/isEntityHidden.d.ts.map +1 -1
  696. package/dist/utilities/isEntityHidden.js.map +1 -1
  697. package/dist/utilities/isReactComponent.d.ts +2 -3
  698. package/dist/utilities/isReactComponent.d.ts.map +1 -1
  699. package/dist/utilities/isReactComponent.js +27 -10
  700. package/dist/utilities/isReactComponent.js.map +1 -1
  701. package/dist/utilities/killTransaction.d.ts +2 -2
  702. package/dist/utilities/killTransaction.d.ts.map +1 -1
  703. package/dist/utilities/killTransaction.js.map +1 -1
  704. package/dist/utilities/parseCookies.js +1 -1
  705. package/dist/utilities/parseCookies.js.map +1 -1
  706. package/dist/utilities/telemetry/events/adminInit.d.ts +2 -2
  707. package/dist/utilities/telemetry/events/adminInit.d.ts.map +1 -1
  708. package/dist/utilities/telemetry/events/adminInit.js.map +1 -1
  709. package/dist/utilities/telemetry/index.d.ts +9 -0
  710. package/dist/utilities/telemetry/index.d.ts.map +1 -1
  711. package/dist/utilities/telemetry/index.js +63 -15
  712. package/dist/utilities/telemetry/index.js.map +1 -1
  713. package/dist/versions/deleteCollectionVersions.d.ts +2 -2
  714. package/dist/versions/deleteCollectionVersions.d.ts.map +1 -1
  715. package/dist/versions/deleteCollectionVersions.js.map +1 -1
  716. package/dist/versions/drafts/replaceWithDraftIfAvailable.d.ts +2 -2
  717. package/dist/versions/drafts/replaceWithDraftIfAvailable.d.ts.map +1 -1
  718. package/dist/versions/drafts/replaceWithDraftIfAvailable.js.map +1 -1
  719. package/dist/versions/enforceMaxVersions.d.ts +2 -2
  720. package/dist/versions/enforceMaxVersions.d.ts.map +1 -1
  721. package/dist/versions/enforceMaxVersions.js.map +1 -1
  722. package/dist/versions/getLatestCollectionVersion.d.ts +2 -2
  723. package/dist/versions/getLatestCollectionVersion.d.ts.map +1 -1
  724. package/dist/versions/getLatestCollectionVersion.js.map +1 -1
  725. package/dist/versions/getLatestGlobalVersion.d.ts +2 -2
  726. package/dist/versions/getLatestGlobalVersion.d.ts.map +1 -1
  727. package/dist/versions/getLatestGlobalVersion.js.map +1 -1
  728. package/dist/versions/saveVersion.d.ts +2 -2
  729. package/dist/versions/saveVersion.d.ts.map +1 -1
  730. package/dist/versions/saveVersion.js +2 -1
  731. package/dist/versions/saveVersion.js.map +1 -1
  732. package/graphql.d.ts +3 -0
  733. package/graphql.js +27 -0
  734. package/package.json +73 -102
  735. package/utilities.d.ts +3 -1
  736. package/utilities.js +3 -1
  737. package/dist/email/build.d.ts +0 -5
  738. package/dist/email/build.d.ts.map +0 -1
  739. package/dist/email/build.js +0 -63
  740. package/dist/email/build.js.map +0 -1
  741. package/dist/email/mockHandler.d.ts +0 -5
  742. package/dist/email/mockHandler.d.ts.map +0 -1
  743. package/dist/email/mockHandler.js +0 -24
  744. package/dist/email/mockHandler.js.map +0 -1
  745. package/node.d.ts +0 -3
  746. package/node.js +0 -4
  747. package/src/index.ts +0 -498
  748. package/uploads.d.ts +0 -2
  749. package/uploads.js +0 -3
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utilities/configToJSONSchema.ts"],"sourcesContent":["import type { JSONSchema4, JSONSchema4TypeName } from 'json-schema'\n\nimport pluralize from 'pluralize'\nconst { singular } = pluralize\n\nimport type { SanitizedCollectionConfig } from '../collections/config/types.js'\nimport type { SanitizedConfig } from '../config/types.js'\nimport type { Field, FieldAffectingData, Option } from '../fields/config/types.js'\nimport type { SanitizedGlobalConfig } from '../globals/config/types.js'\n\nimport { fieldAffectsData, tabHasName } from '../fields/config/types.js'\nimport { deepCopyObject } from './deepCopyObject.js'\nimport { toWords } from './formatLabels.js'\nimport { getCollectionIDFieldTypes } from './getCollectionIDFieldTypes.js'\n\nconst fieldIsRequired = (field: Field) => {\n const isConditional = Boolean(field?.admin && field?.admin?.condition)\n if (isConditional) return false\n\n const isMarkedRequired = 'required' in field && field.required === true\n if (fieldAffectsData(field) && isMarkedRequired) return true\n\n // if any subfields are required, this field is required\n if ('fields' in field && field.type !== 'array') {\n return field.fields.some((subField) => fieldIsRequired(subField))\n }\n\n // if any tab subfields have required fields, this field is required\n if (field.type === 'tabs') {\n return field.tabs.some((tab) => {\n if ('name' in tab) {\n return tab.fields.some((subField) => fieldIsRequired(subField))\n }\n return false\n })\n }\n\n return false\n}\n\nfunction buildOptionEnums(options: Option[]): string[] {\n return options.map((option) => {\n if (typeof option === 'object' && 'value' in option) {\n return option.value\n }\n\n return option\n })\n}\n\nfunction generateEntitySchemas(\n entities: (SanitizedCollectionConfig | SanitizedGlobalConfig)[],\n): JSONSchema4 {\n const properties = [...entities].reduce((acc, { slug }) => {\n acc[slug] = {\n $ref: `#/definitions/${slug}`,\n }\n\n return acc\n }, {})\n\n return {\n type: 'object',\n additionalProperties: false,\n properties,\n required: Object.keys(properties),\n }\n}\n\nfunction generateAuthEntitySchemas(entities: SanitizedCollectionConfig[]): JSONSchema4 {\n const properties: JSONSchema4[] = [...entities]\n .filter(({ auth }) => Boolean(auth))\n .map(({ slug }) => {\n return {\n allOf: [\n { $ref: `#/definitions/${slug}` },\n {\n type: 'object',\n additionalProperties: false,\n properties: {\n collection: { type: 'string', enum: [slug] },\n },\n required: ['collection'],\n },\n ],\n }\n }, {})\n\n return {\n oneOf: properties,\n }\n}\n\n/**\n * Returns a JSON Schema Type with 'null' added if the field is not required.\n */\nexport function withNullableJSONSchemaType(\n fieldType: JSONSchema4TypeName,\n isRequired: boolean,\n): JSONSchema4TypeName | JSONSchema4TypeName[] {\n const fieldTypes = [fieldType]\n if (isRequired) return fieldType\n fieldTypes.push('null')\n return fieldTypes\n}\n\nexport function fieldsToJSONSchema(\n /**\n * Used for relationship fields, to determine whether to use a string or number type for the ID.\n * While there is a default ID field type set by the db adapter, they can differ on a collection-level\n * if they have custom ID fields.\n */\n collectionIDFieldTypes: { [key: string]: 'number' | 'string' },\n fields: Field[],\n /**\n * Allows you to define new top-level interfaces that can be re-used in the output schema.\n */\n interfaceNameDefinitions: Map<string, JSONSchema4>,\n config?: SanitizedConfig,\n): {\n properties: {\n [k: string]: JSONSchema4\n }\n required: string[]\n} {\n const requiredFieldNames = new Set<string>()\n\n return {\n properties: Object.fromEntries(\n fields.reduce((fieldSchemas, field) => {\n const isRequired = fieldAffectsData(field) && fieldIsRequired(field)\n if (isRequired) requiredFieldNames.add(field.name)\n\n let fieldSchema: JSONSchema4\n switch (field.type) {\n case 'text':\n if (field.hasMany === true) {\n fieldSchema = {\n type: withNullableJSONSchemaType('array', isRequired),\n items: { type: 'string' },\n }\n } else {\n fieldSchema = { type: withNullableJSONSchemaType('string', isRequired) }\n }\n break\n case 'textarea':\n case 'code':\n case 'email':\n case 'date': {\n fieldSchema = { type: withNullableJSONSchemaType('string', isRequired) }\n break\n }\n\n case 'number': {\n if (field.hasMany === true) {\n fieldSchema = {\n type: withNullableJSONSchemaType('array', isRequired),\n items: { type: 'number' },\n }\n } else {\n fieldSchema = { type: withNullableJSONSchemaType('number', isRequired) }\n }\n break\n }\n\n case 'checkbox': {\n fieldSchema = { type: withNullableJSONSchemaType('boolean', isRequired) }\n break\n }\n\n case 'json': {\n fieldSchema = {\n type: ['object', 'array', 'string', 'number', 'boolean', 'null'],\n }\n break\n }\n\n case 'richText': {\n if (field.editor.outputSchema) {\n fieldSchema = field.editor.outputSchema({\n collectionIDFieldTypes,\n config,\n field,\n interfaceNameDefinitions,\n isRequired,\n })\n } else {\n // Maintain backwards compatibility with existing rich text editors\n fieldSchema = {\n type: withNullableJSONSchemaType('array', isRequired),\n items: {\n type: 'object',\n },\n }\n }\n\n break\n }\n\n case 'radio': {\n fieldSchema = {\n type: withNullableJSONSchemaType('string', isRequired),\n enum: buildOptionEnums(field.options),\n }\n\n break\n }\n\n case 'select': {\n const optionEnums = buildOptionEnums(field.options)\n\n if (field.hasMany) {\n fieldSchema = {\n type: withNullableJSONSchemaType('array', isRequired),\n items: {\n type: 'string',\n enum: optionEnums,\n },\n }\n } else {\n fieldSchema = {\n type: withNullableJSONSchemaType('string', isRequired),\n enum: optionEnums,\n }\n }\n\n break\n }\n\n case 'point': {\n fieldSchema = {\n type: withNullableJSONSchemaType('array', isRequired),\n items: [\n {\n type: 'number',\n },\n {\n type: 'number',\n },\n ],\n maxItems: 2,\n minItems: 2,\n }\n break\n }\n\n case 'relationship': {\n if (Array.isArray(field.relationTo)) {\n if (field.hasMany) {\n fieldSchema = {\n type: withNullableJSONSchemaType('array', isRequired),\n items: {\n oneOf: field.relationTo.map((relation) => {\n return {\n type: 'object',\n additionalProperties: false,\n properties: {\n relationTo: {\n const: relation,\n },\n value: {\n oneOf: [\n {\n type: collectionIDFieldTypes[relation],\n },\n {\n $ref: `#/definitions/${relation}`,\n },\n ],\n },\n },\n required: ['value', 'relationTo'],\n }\n }),\n },\n }\n } else {\n fieldSchema = {\n oneOf: field.relationTo.map((relation) => {\n return {\n type: withNullableJSONSchemaType('object', isRequired),\n additionalProperties: false,\n properties: {\n relationTo: {\n const: relation,\n },\n value: {\n oneOf: [\n {\n type: collectionIDFieldTypes[relation],\n },\n {\n $ref: `#/definitions/${relation}`,\n },\n ],\n },\n },\n required: ['value', 'relationTo'],\n }\n }),\n }\n }\n } else if (field.hasMany) {\n fieldSchema = {\n type: withNullableJSONSchemaType('array', isRequired),\n items: {\n oneOf: [\n {\n type: collectionIDFieldTypes[field.relationTo],\n },\n {\n $ref: `#/definitions/${field.relationTo}`,\n },\n ],\n },\n }\n } else {\n fieldSchema = {\n oneOf: [\n {\n type: withNullableJSONSchemaType(\n collectionIDFieldTypes[field.relationTo],\n isRequired,\n ),\n },\n {\n $ref: `#/definitions/${field.relationTo}`,\n },\n ],\n }\n }\n\n break\n }\n\n case 'upload': {\n fieldSchema = {\n oneOf: [\n {\n type: collectionIDFieldTypes[field.relationTo],\n },\n {\n $ref: `#/definitions/${field.relationTo}`,\n },\n ],\n }\n if (!isRequired) fieldSchema.oneOf.push({ type: 'null' })\n break\n }\n\n case 'blocks': {\n fieldSchema = {\n type: withNullableJSONSchemaType('array', isRequired),\n items: {\n oneOf: field.blocks.map((block) => {\n const blockFieldSchemas = fieldsToJSONSchema(\n collectionIDFieldTypes,\n block.fields,\n interfaceNameDefinitions,\n config,\n )\n\n const blockSchema: JSONSchema4 = {\n type: 'object',\n additionalProperties: false,\n properties: {\n ...blockFieldSchemas.properties,\n blockType: {\n const: block.slug,\n },\n },\n required: ['blockType', ...blockFieldSchemas.required],\n }\n\n if (block.interfaceName) {\n interfaceNameDefinitions.set(block.interfaceName, blockSchema)\n\n return {\n $ref: `#/definitions/${block.interfaceName}`,\n }\n }\n\n return blockSchema\n }),\n },\n }\n break\n }\n\n case 'array': {\n fieldSchema = {\n type: withNullableJSONSchemaType('array', isRequired),\n items: {\n type: 'object',\n additionalProperties: false,\n ...fieldsToJSONSchema(\n collectionIDFieldTypes,\n field.fields,\n interfaceNameDefinitions,\n config,\n ),\n },\n }\n\n if (field.interfaceName) {\n interfaceNameDefinitions.set(field.interfaceName, fieldSchema)\n\n fieldSchema = {\n $ref: `#/definitions/${field.interfaceName}`,\n }\n }\n break\n }\n\n case 'row':\n case 'collapsible': {\n const childSchema = fieldsToJSONSchema(\n collectionIDFieldTypes,\n field.fields,\n interfaceNameDefinitions,\n config,\n )\n Object.entries(childSchema.properties).forEach(([propName, propSchema]) => {\n fieldSchemas.set(propName, propSchema)\n })\n childSchema.required.forEach((propName) => {\n requiredFieldNames.add(propName)\n })\n break\n }\n\n case 'tabs': {\n field.tabs.forEach((tab) => {\n const childSchema = fieldsToJSONSchema(\n collectionIDFieldTypes,\n tab.fields,\n interfaceNameDefinitions,\n config,\n )\n if (tabHasName(tab)) {\n // could have interface\n fieldSchemas.set(tab.name, {\n type: 'object',\n additionalProperties: false,\n ...childSchema,\n })\n requiredFieldNames.add(tab.name)\n } else {\n Object.entries(childSchema.properties).forEach(([propName, propSchema]) => {\n fieldSchemas.set(propName, propSchema)\n })\n childSchema.required.forEach((propName) => {\n requiredFieldNames.add(propName)\n })\n }\n })\n break\n }\n\n case 'group': {\n fieldSchema = {\n type: 'object',\n additionalProperties: false,\n ...fieldsToJSONSchema(\n collectionIDFieldTypes,\n field.fields,\n interfaceNameDefinitions,\n config,\n ),\n }\n\n if (field.interfaceName) {\n interfaceNameDefinitions.set(field.interfaceName, fieldSchema)\n\n fieldSchema = {\n $ref: `#/definitions/${field.interfaceName}`,\n }\n }\n break\n }\n\n default: {\n break\n }\n }\n\n if (fieldSchema && fieldAffectsData(field)) {\n fieldSchemas.set(field.name, fieldSchema)\n }\n\n return fieldSchemas\n }, new Map<string, JSONSchema4>()),\n ),\n required: Array.from(requiredFieldNames),\n }\n}\n\n// This function is part of the public API and is exported through payload/utilities\nexport function entityToJSONSchema(\n config: SanitizedConfig,\n incomingEntity: SanitizedCollectionConfig | SanitizedGlobalConfig,\n interfaceNameDefinitions: Map<string, JSONSchema4>,\n defaultIDType: 'number' | 'text',\n): JSONSchema4 {\n const entity: SanitizedCollectionConfig | SanitizedGlobalConfig = deepCopyObject(incomingEntity)\n const title = entity.typescript?.interface\n ? entity.typescript.interface\n : singular(toWords(entity.slug, true))\n\n const idField: FieldAffectingData = { name: 'id', type: defaultIDType as 'text', required: true }\n const customIdField = entity.fields.find(\n (field) => fieldAffectsData(field) && field.name === 'id',\n ) as FieldAffectingData\n\n if (customIdField && customIdField.type !== 'group' && customIdField.type !== 'tab') {\n customIdField.required = true\n } else {\n entity.fields.unshift(idField)\n }\n\n // mark timestamp fields required\n if ('timestamps' in entity && entity.timestamps !== false) {\n entity.fields = entity.fields.map((field) => {\n if (fieldAffectsData(field) && (field.name === 'createdAt' || field.name === 'updatedAt')) {\n return {\n ...field,\n required: true,\n }\n }\n return field\n })\n }\n\n if ('auth' in entity && entity.auth && !entity.auth?.disableLocalStrategy) {\n entity.fields.push({\n name: 'password',\n type: 'text',\n })\n }\n\n // Used for relationship fields, to determine whether to use a string or number type for the ID.\n const collectionIDFieldTypes = getCollectionIDFieldTypes({ config, defaultIDType })\n\n return {\n type: 'object',\n additionalProperties: false,\n title,\n ...fieldsToJSONSchema(collectionIDFieldTypes, entity.fields, interfaceNameDefinitions, config),\n }\n}\n\n/**\n * This is used for generating the TypeScript types (payload-types.ts) with the payload generate:types command.\n */\nexport function configToJSONSchema(\n config: SanitizedConfig,\n defaultIDType?: 'number' | 'text',\n): JSONSchema4 {\n // a mutable Map to store custom top-level `interfaceName` types. Fields with an `interfaceName` property will be moved to the top-level definitions here\n const interfaceNameDefinitions: Map<string, JSONSchema4> = new Map()\n\n // Collections and Globals have to be moved to the top-level definitions as well. Reason: The top-level type will be the `Config` type - we don't want all collection and global\n // types to be inlined inside the `Config` type\n const entityDefinitions: { [k: string]: JSONSchema4 } = [\n ...config.globals,\n ...config.collections,\n ].reduce((acc, entity) => {\n acc[entity.slug] = entityToJSONSchema(config, entity, interfaceNameDefinitions, defaultIDType)\n return acc\n }, {})\n\n return {\n additionalProperties: false,\n definitions: { ...entityDefinitions, ...Object.fromEntries(interfaceNameDefinitions) },\n // These properties here will be very simple, as all the complexity is in the definitions. These are just the properties for the top-level `Config` type\n type: 'object',\n properties: {\n collections: generateEntitySchemas(config.collections || []),\n globals: generateEntitySchemas(config.globals || []),\n user: generateAuthEntitySchemas(config.collections),\n },\n required: ['user', 'collections', 'globals'],\n title: 'Config',\n }\n}\n"],"names":["pluralize","singular","fieldAffectsData","tabHasName","deepCopyObject","toWords","getCollectionIDFieldTypes","fieldIsRequired","field","isConditional","Boolean","admin","condition","isMarkedRequired","required","type","fields","some","subField","tabs","tab","buildOptionEnums","options","map","option","value","generateEntitySchemas","entities","properties","reduce","acc","slug","$ref","additionalProperties","Object","keys","generateAuthEntitySchemas","filter","auth","allOf","collection","enum","oneOf","withNullableJSONSchemaType","fieldType","isRequired","fieldTypes","push","fieldsToJSONSchema","collectionIDFieldTypes","interfaceNameDefinitions","config","requiredFieldNames","Set","fromEntries","fieldSchemas","add","name","fieldSchema","hasMany","items","editor","outputSchema","optionEnums","maxItems","minItems","Array","isArray","relationTo","relation","const","blocks","block","blockFieldSchemas","blockSchema","blockType","interfaceName","set","childSchema","entries","forEach","propName","propSchema","Map","from","entityToJSONSchema","incomingEntity","defaultIDType","entity","title","typescript","interface","idField","customIdField","find","unshift","timestamps","disableLocalStrategy","configToJSONSchema","entityDefinitions","globals","collections","definitions","user"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../src/utilities/configToJSONSchema.ts"],"sourcesContent":["import type { JSONSchema4, JSONSchema4TypeName } from 'json-schema'\n\nimport pluralize from 'pluralize'\nconst { singular } = pluralize\n\nimport type { SanitizedCollectionConfig } from '../collections/config/types.js'\nimport type { SanitizedConfig } from '../config/types.js'\nimport type { Field, FieldAffectingData, Option } from '../fields/config/types.js'\nimport type { SanitizedGlobalConfig } from '../globals/config/types.js'\n\nimport { fieldAffectsData, tabHasName } from '../fields/config/types.js'\nimport { deepCopyObject } from './deepCopyObject.js'\nimport { toWords } from './formatLabels.js'\nimport { getCollectionIDFieldTypes } from './getCollectionIDFieldTypes.js'\n\nconst fieldIsRequired = (field: Field) => {\n const isConditional = Boolean(field?.admin && field?.admin?.condition)\n if (isConditional) return false\n\n const isMarkedRequired = 'required' in field && field.required === true\n if (fieldAffectsData(field) && isMarkedRequired) return true\n\n // if any subfields are required, this field is required\n if ('fields' in field && field.type !== 'array') {\n return field.fields.some((subField) => fieldIsRequired(subField))\n }\n\n // if any tab subfields have required fields, this field is required\n if (field.type === 'tabs') {\n return field.tabs.some((tab) => {\n if ('name' in tab) {\n return tab.fields.some((subField) => fieldIsRequired(subField))\n }\n return false\n })\n }\n\n return false\n}\n\nfunction buildOptionEnums(options: Option[]): string[] {\n return options.map((option) => {\n if (typeof option === 'object' && 'value' in option) {\n return option.value\n }\n\n return option\n })\n}\n\nfunction generateEntitySchemas(\n entities: (SanitizedCollectionConfig | SanitizedGlobalConfig)[],\n): JSONSchema4 {\n const properties = [...entities].reduce((acc, { slug }) => {\n acc[slug] = {\n $ref: `#/definitions/${slug}`,\n }\n\n return acc\n }, {})\n\n return {\n type: 'object',\n additionalProperties: false,\n properties,\n required: Object.keys(properties),\n }\n}\n\nfunction generateLocaleEntitySchemas(localization: SanitizedConfig['localization']): JSONSchema4 {\n if (localization && 'locales' in localization && localization?.locales) {\n const localesFromConfig = localization?.locales\n\n const locales = [...localesFromConfig].map((locale) => {\n return locale.code\n }, [])\n\n return {\n type: 'string',\n enum: locales,\n }\n }\n\n return {\n type: 'null',\n }\n}\n\nfunction generateAuthEntitySchemas(entities: SanitizedCollectionConfig[]): JSONSchema4 {\n const properties: JSONSchema4[] = [...entities]\n .filter(({ auth }) => Boolean(auth))\n .map(({ slug }) => {\n return {\n allOf: [\n { $ref: `#/definitions/${slug}` },\n {\n type: 'object',\n additionalProperties: false,\n properties: {\n collection: { type: 'string', enum: [slug] },\n },\n required: ['collection'],\n },\n ],\n }\n }, {})\n\n return {\n oneOf: properties,\n }\n}\n\n/**\n * Returns a JSON Schema Type with 'null' added if the field is not required.\n */\nexport function withNullableJSONSchemaType(\n fieldType: JSONSchema4TypeName,\n isRequired: boolean,\n): JSONSchema4TypeName | JSONSchema4TypeName[] {\n const fieldTypes = [fieldType]\n if (isRequired) return fieldType\n fieldTypes.push('null')\n return fieldTypes\n}\n\nexport function fieldsToJSONSchema(\n /**\n * Used for relationship fields, to determine whether to use a string or number type for the ID.\n * While there is a default ID field type set by the db adapter, they can differ on a collection-level\n * if they have custom ID fields.\n */\n collectionIDFieldTypes: { [key: string]: 'number' | 'string' },\n fields: Field[],\n /**\n * Allows you to define new top-level interfaces that can be re-used in the output schema.\n */\n interfaceNameDefinitions: Map<string, JSONSchema4>,\n config?: SanitizedConfig,\n): {\n properties: {\n [k: string]: JSONSchema4\n }\n required: string[]\n} {\n const requiredFieldNames = new Set<string>()\n\n return {\n properties: Object.fromEntries(\n fields.reduce((fieldSchemas, field) => {\n const isRequired = fieldAffectsData(field) && fieldIsRequired(field)\n if (isRequired) requiredFieldNames.add(field.name)\n\n let fieldSchema: JSONSchema4\n switch (field.type) {\n case 'text':\n if (field.hasMany === true) {\n fieldSchema = {\n type: withNullableJSONSchemaType('array', isRequired),\n items: { type: 'string' },\n }\n } else {\n fieldSchema = { type: withNullableJSONSchemaType('string', isRequired) }\n }\n break\n case 'textarea':\n case 'code':\n case 'email':\n case 'date': {\n fieldSchema = { type: withNullableJSONSchemaType('string', isRequired) }\n break\n }\n\n case 'number': {\n if (field.hasMany === true) {\n fieldSchema = {\n type: withNullableJSONSchemaType('array', isRequired),\n items: { type: 'number' },\n }\n } else {\n fieldSchema = { type: withNullableJSONSchemaType('number', isRequired) }\n }\n break\n }\n\n case 'checkbox': {\n fieldSchema = { type: withNullableJSONSchemaType('boolean', isRequired) }\n break\n }\n\n case 'json': {\n fieldSchema = {\n type: ['object', 'array', 'string', 'number', 'boolean', 'null'],\n }\n break\n }\n\n case 'richText': {\n if (typeof field.editor === 'function') {\n throw new Error('Attempted to access unsanitized rich text editor.')\n }\n if (field.editor.outputSchema) {\n fieldSchema = field.editor.outputSchema({\n collectionIDFieldTypes,\n config,\n field,\n interfaceNameDefinitions,\n isRequired,\n })\n } else {\n // Maintain backwards compatibility with existing rich text editors\n fieldSchema = {\n type: withNullableJSONSchemaType('array', isRequired),\n items: {\n type: 'object',\n },\n }\n }\n\n break\n }\n\n case 'radio': {\n fieldSchema = {\n type: withNullableJSONSchemaType('string', isRequired),\n enum: buildOptionEnums(field.options),\n }\n\n break\n }\n\n case 'select': {\n const optionEnums = buildOptionEnums(field.options)\n\n if (field.hasMany) {\n fieldSchema = {\n type: withNullableJSONSchemaType('array', isRequired),\n items: {\n type: 'string',\n enum: optionEnums,\n },\n }\n } else {\n fieldSchema = {\n type: withNullableJSONSchemaType('string', isRequired),\n enum: optionEnums,\n }\n }\n\n break\n }\n\n case 'point': {\n fieldSchema = {\n type: withNullableJSONSchemaType('array', isRequired),\n items: [\n {\n type: 'number',\n },\n {\n type: 'number',\n },\n ],\n maxItems: 2,\n minItems: 2,\n }\n break\n }\n\n case 'relationship': {\n if (Array.isArray(field.relationTo)) {\n if (field.hasMany) {\n fieldSchema = {\n type: withNullableJSONSchemaType('array', isRequired),\n items: {\n oneOf: field.relationTo.map((relation) => {\n return {\n type: 'object',\n additionalProperties: false,\n properties: {\n relationTo: {\n const: relation,\n },\n value: {\n oneOf: [\n {\n type: collectionIDFieldTypes[relation],\n },\n {\n $ref: `#/definitions/${relation}`,\n },\n ],\n },\n },\n required: ['value', 'relationTo'],\n }\n }),\n },\n }\n } else {\n fieldSchema = {\n oneOf: field.relationTo.map((relation) => {\n return {\n type: withNullableJSONSchemaType('object', isRequired),\n additionalProperties: false,\n properties: {\n relationTo: {\n const: relation,\n },\n value: {\n oneOf: [\n {\n type: collectionIDFieldTypes[relation],\n },\n {\n $ref: `#/definitions/${relation}`,\n },\n ],\n },\n },\n required: ['value', 'relationTo'],\n }\n }),\n }\n }\n } else if (field.hasMany) {\n fieldSchema = {\n type: withNullableJSONSchemaType('array', isRequired),\n items: {\n oneOf: [\n {\n type: collectionIDFieldTypes[field.relationTo],\n },\n {\n $ref: `#/definitions/${field.relationTo}`,\n },\n ],\n },\n }\n } else {\n fieldSchema = {\n oneOf: [\n {\n type: withNullableJSONSchemaType(\n collectionIDFieldTypes[field.relationTo],\n isRequired,\n ),\n },\n {\n $ref: `#/definitions/${field.relationTo}`,\n },\n ],\n }\n }\n\n break\n }\n\n case 'upload': {\n fieldSchema = {\n oneOf: [\n {\n type: collectionIDFieldTypes[field.relationTo],\n },\n {\n $ref: `#/definitions/${field.relationTo}`,\n },\n ],\n }\n if (!isRequired) fieldSchema.oneOf.push({ type: 'null' })\n break\n }\n\n case 'blocks': {\n fieldSchema = {\n type: withNullableJSONSchemaType('array', isRequired),\n items: {\n oneOf: field.blocks.map((block) => {\n const blockFieldSchemas = fieldsToJSONSchema(\n collectionIDFieldTypes,\n block.fields,\n interfaceNameDefinitions,\n config,\n )\n\n const blockSchema: JSONSchema4 = {\n type: 'object',\n additionalProperties: false,\n properties: {\n ...blockFieldSchemas.properties,\n blockType: {\n const: block.slug,\n },\n },\n required: ['blockType', ...blockFieldSchemas.required],\n }\n\n if (block.interfaceName) {\n interfaceNameDefinitions.set(block.interfaceName, blockSchema)\n\n return {\n $ref: `#/definitions/${block.interfaceName}`,\n }\n }\n\n return blockSchema\n }),\n },\n }\n break\n }\n\n case 'array': {\n fieldSchema = {\n type: withNullableJSONSchemaType('array', isRequired),\n items: {\n type: 'object',\n additionalProperties: false,\n ...fieldsToJSONSchema(\n collectionIDFieldTypes,\n field.fields,\n interfaceNameDefinitions,\n config,\n ),\n },\n }\n\n if (field.interfaceName) {\n interfaceNameDefinitions.set(field.interfaceName, fieldSchema)\n\n fieldSchema = {\n $ref: `#/definitions/${field.interfaceName}`,\n }\n }\n break\n }\n\n case 'row':\n case 'collapsible': {\n const childSchema = fieldsToJSONSchema(\n collectionIDFieldTypes,\n field.fields,\n interfaceNameDefinitions,\n config,\n )\n Object.entries(childSchema.properties).forEach(([propName, propSchema]) => {\n fieldSchemas.set(propName, propSchema)\n })\n childSchema.required.forEach((propName) => {\n requiredFieldNames.add(propName)\n })\n break\n }\n\n case 'tabs': {\n field.tabs.forEach((tab) => {\n const childSchema = fieldsToJSONSchema(\n collectionIDFieldTypes,\n tab.fields,\n interfaceNameDefinitions,\n config,\n )\n if (tabHasName(tab)) {\n // could have interface\n fieldSchemas.set(tab.name, {\n type: 'object',\n additionalProperties: false,\n ...childSchema,\n })\n\n // If the named tab has any required fields then we mark this as required otherwise it should be optional\n const hasRequiredFields = tab.fields.some((subField) => fieldIsRequired(subField))\n\n if (hasRequiredFields) {\n requiredFieldNames.add(tab.name)\n }\n } else {\n Object.entries(childSchema.properties).forEach(([propName, propSchema]) => {\n fieldSchemas.set(propName, propSchema)\n })\n childSchema.required.forEach((propName) => {\n requiredFieldNames.add(propName)\n })\n }\n })\n break\n }\n\n case 'group': {\n fieldSchema = {\n type: 'object',\n additionalProperties: false,\n ...fieldsToJSONSchema(\n collectionIDFieldTypes,\n field.fields,\n interfaceNameDefinitions,\n config,\n ),\n }\n\n if (field.interfaceName) {\n interfaceNameDefinitions.set(field.interfaceName, fieldSchema)\n\n fieldSchema = {\n $ref: `#/definitions/${field.interfaceName}`,\n }\n }\n break\n }\n\n default: {\n break\n }\n }\n\n if (fieldSchema && fieldAffectsData(field)) {\n fieldSchemas.set(field.name, fieldSchema)\n }\n\n return fieldSchemas\n }, new Map<string, JSONSchema4>()),\n ),\n required: Array.from(requiredFieldNames),\n }\n}\n\n// This function is part of the public API and is exported through payload/utilities\nexport function entityToJSONSchema(\n config: SanitizedConfig,\n incomingEntity: SanitizedCollectionConfig | SanitizedGlobalConfig,\n interfaceNameDefinitions: Map<string, JSONSchema4>,\n defaultIDType: 'number' | 'text',\n): JSONSchema4 {\n const entity: SanitizedCollectionConfig | SanitizedGlobalConfig = deepCopyObject(incomingEntity)\n const title = entity.typescript?.interface\n ? entity.typescript.interface\n : singular(toWords(entity.slug, true))\n\n const idField: FieldAffectingData = { name: 'id', type: defaultIDType as 'text', required: true }\n const customIdField = entity.fields.find(\n (field) => fieldAffectsData(field) && field.name === 'id',\n ) as FieldAffectingData\n\n if (customIdField && customIdField.type !== 'group' && customIdField.type !== 'tab') {\n customIdField.required = true\n } else {\n entity.fields.unshift(idField)\n }\n\n // mark timestamp fields required\n if ('timestamps' in entity && entity.timestamps !== false) {\n entity.fields = entity.fields.map((field) => {\n if (fieldAffectsData(field) && (field.name === 'createdAt' || field.name === 'updatedAt')) {\n return {\n ...field,\n required: true,\n }\n }\n return field\n })\n }\n\n if ('auth' in entity && entity.auth && !entity.auth?.disableLocalStrategy) {\n entity.fields.push({\n name: 'password',\n type: 'text',\n })\n }\n\n // Used for relationship fields, to determine whether to use a string or number type for the ID.\n const collectionIDFieldTypes = getCollectionIDFieldTypes({ config, defaultIDType })\n\n return {\n type: 'object',\n additionalProperties: false,\n title,\n ...fieldsToJSONSchema(collectionIDFieldTypes, entity.fields, interfaceNameDefinitions, config),\n }\n}\n\n/**\n * This is used for generating the TypeScript types (payload-types.ts) with the payload generate:types command.\n */\nexport function configToJSONSchema(\n config: SanitizedConfig,\n defaultIDType?: 'number' | 'text',\n): JSONSchema4 {\n // a mutable Map to store custom top-level `interfaceName` types. Fields with an `interfaceName` property will be moved to the top-level definitions here\n const interfaceNameDefinitions: Map<string, JSONSchema4> = new Map()\n\n // Collections and Globals have to be moved to the top-level definitions as well. Reason: The top-level type will be the `Config` type - we don't want all collection and global\n // types to be inlined inside the `Config` type\n const entityDefinitions: { [k: string]: JSONSchema4 } = [\n ...config.globals,\n ...config.collections,\n ].reduce((acc, entity) => {\n acc[entity.slug] = entityToJSONSchema(config, entity, interfaceNameDefinitions, defaultIDType)\n return acc\n }, {})\n\n return {\n additionalProperties: false,\n definitions: { ...entityDefinitions, ...Object.fromEntries(interfaceNameDefinitions) },\n // These properties here will be very simple, as all the complexity is in the definitions. These are just the properties for the top-level `Config` type\n type: 'object',\n properties: {\n collections: generateEntitySchemas(config.collections || []),\n globals: generateEntitySchemas(config.globals || []),\n locale: generateLocaleEntitySchemas(config.localization),\n user: generateAuthEntitySchemas(config.collections),\n },\n required: ['user', 'locale', 'collections', 'globals'],\n title: 'Config',\n }\n}\n"],"names":["pluralize","singular","fieldAffectsData","tabHasName","deepCopyObject","toWords","getCollectionIDFieldTypes","fieldIsRequired","field","isConditional","Boolean","admin","condition","isMarkedRequired","required","type","fields","some","subField","tabs","tab","buildOptionEnums","options","map","option","value","generateEntitySchemas","entities","properties","reduce","acc","slug","$ref","additionalProperties","Object","keys","generateLocaleEntitySchemas","localization","locales","localesFromConfig","locale","code","enum","generateAuthEntitySchemas","filter","auth","allOf","collection","oneOf","withNullableJSONSchemaType","fieldType","isRequired","fieldTypes","push","fieldsToJSONSchema","collectionIDFieldTypes","interfaceNameDefinitions","config","requiredFieldNames","Set","fromEntries","fieldSchemas","add","name","fieldSchema","hasMany","items","editor","Error","outputSchema","optionEnums","maxItems","minItems","Array","isArray","relationTo","relation","const","blocks","block","blockFieldSchemas","blockSchema","blockType","interfaceName","set","childSchema","entries","forEach","propName","propSchema","hasRequiredFields","Map","from","entityToJSONSchema","incomingEntity","defaultIDType","entity","title","typescript","interface","idField","customIdField","find","unshift","timestamps","disableLocalStrategy","configToJSONSchema","entityDefinitions","globals","collections","definitions","user"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAEA,OAAOA,eAAe,YAAW;AACjC,MAAM,EAAEC,QAAQ,EAAE,GAAGD;AAOrB,SAASE,gBAAgB,EAAEC,UAAU,QAAQ,4BAA2B;AACxE,SAASC,cAAc,QAAQ,sBAAqB;AACpD,SAASC,OAAO,QAAQ,oBAAmB;AAC3C,SAASC,yBAAyB,QAAQ,iCAAgC;AAE1E,MAAMC,kBAAkB,CAACC;IACvB,MAAMC,gBAAgBC,QAAQF,OAAOG,SAASH,OAAOG,OAAOC;IAC5D,IAAIH,eAAe,OAAO;IAE1B,MAAMI,mBAAmB,cAAcL,SAASA,MAAMM,QAAQ,KAAK;IACnE,IAAIZ,iBAAiBM,UAAUK,kBAAkB,OAAO;IAExD,wDAAwD;IACxD,IAAI,YAAYL,SAASA,MAAMO,IAAI,KAAK,SAAS;QAC/C,OAAOP,MAAMQ,MAAM,CAACC,IAAI,CAAC,CAACC,WAAaX,gBAAgBW;IACzD;IAEA,oEAAoE;IACpE,IAAIV,MAAMO,IAAI,KAAK,QAAQ;QACzB,OAAOP,MAAMW,IAAI,CAACF,IAAI,CAAC,CAACG;YACtB,IAAI,UAAUA,KAAK;gBACjB,OAAOA,IAAIJ,MAAM,CAACC,IAAI,CAAC,CAACC,WAAaX,gBAAgBW;YACvD;YACA,OAAO;QACT;IACF;IAEA,OAAO;AACT;AAEA,SAASG,iBAAiBC,OAAiB;IACzC,OAAOA,QAAQC,GAAG,CAAC,CAACC;QAClB,IAAI,OAAOA,WAAW,YAAY,WAAWA,QAAQ;YACnD,OAAOA,OAAOC,KAAK;QACrB;QAEA,OAAOD;IACT;AACF;AAEA,SAASE,sBACPC,QAA+D;IAE/D,MAAMC,aAAa;WAAID;KAAS,CAACE,MAAM,CAAC,CAACC,KAAK,EAAEC,IAAI,EAAE;QACpDD,GAAG,CAACC,KAAK,GAAG;YACVC,MAAM,CAAC,cAAc,EAAED,KAAK,CAAC;QAC/B;QAEA,OAAOD;IACT,GAAG,CAAC;IAEJ,OAAO;QACLf,MAAM;QACNkB,sBAAsB;QACtBL;QACAd,UAAUoB,OAAOC,IAAI,CAACP;IACxB;AACF;AAEA,SAASQ,4BAA4BC,YAA6C;IAChF,IAAIA,gBAAgB,aAAaA,gBAAgBA,cAAcC,SAAS;QACtE,MAAMC,oBAAoBF,cAAcC;QAExC,MAAMA,UAAU;eAAIC;SAAkB,CAAChB,GAAG,CAAC,CAACiB;YAC1C,OAAOA,OAAOC,IAAI;QACpB,GAAG,EAAE;QAEL,OAAO;YACL1B,MAAM;YACN2B,MAAMJ;QACR;IACF;IAEA,OAAO;QACLvB,MAAM;IACR;AACF;AAEA,SAAS4B,0BAA0BhB,QAAqC;IACtE,MAAMC,aAA4B;WAAID;KAAS,CAC5CiB,MAAM,CAAC,CAAC,EAAEC,IAAI,EAAE,GAAKnC,QAAQmC,OAC7BtB,GAAG,CAAC,CAAC,EAAEQ,IAAI,EAAE;QACZ,OAAO;YACLe,OAAO;gBACL;oBAAEd,MAAM,CAAC,cAAc,EAAED,KAAK,CAAC;gBAAC;gBAChC;oBACEhB,MAAM;oBACNkB,sBAAsB;oBACtBL,YAAY;wBACVmB,YAAY;4BAAEhC,MAAM;4BAAU2B,MAAM;gCAACX;6BAAK;wBAAC;oBAC7C;oBACAjB,UAAU;wBAAC;qBAAa;gBAC1B;aACD;QACH;IACF,GAAG,CAAC;IAEN,OAAO;QACLkC,OAAOpB;IACT;AACF;AAEA;;CAEC,GACD,OAAO,SAASqB,2BACdC,SAA8B,EAC9BC,UAAmB;IAEnB,MAAMC,aAAa;QAACF;KAAU;IAC9B,IAAIC,YAAY,OAAOD;IACvBE,WAAWC,IAAI,CAAC;IAChB,OAAOD;AACT;AAEA,OAAO,SAASE,mBACd;;;;GAIC,GACDC,sBAA8D,EAC9DvC,MAAe,EACf;;GAEC,GACDwC,wBAAkD,EAClDC,MAAwB;IAOxB,MAAMC,qBAAqB,IAAIC;IAE/B,OAAO;QACL/B,YAAYM,OAAO0B,WAAW,CAC5B5C,OAAOa,MAAM,CAAC,CAACgC,cAAcrD;YAC3B,MAAM2C,aAAajD,iBAAiBM,UAAUD,gBAAgBC;YAC9D,IAAI2C,YAAYO,mBAAmBI,GAAG,CAACtD,MAAMuD,IAAI;YAEjD,IAAIC;YACJ,OAAQxD,MAAMO,IAAI;gBAChB,KAAK;oBACH,IAAIP,MAAMyD,OAAO,KAAK,MAAM;wBAC1BD,cAAc;4BACZjD,MAAMkC,2BAA2B,SAASE;4BAC1Ce,OAAO;gCAAEnD,MAAM;4BAAS;wBAC1B;oBACF,OAAO;wBACLiD,cAAc;4BAAEjD,MAAMkC,2BAA2B,UAAUE;wBAAY;oBACzE;oBACA;gBACF,KAAK;gBACL,KAAK;gBACL,KAAK;gBACL,KAAK;oBAAQ;wBACXa,cAAc;4BAAEjD,MAAMkC,2BAA2B,UAAUE;wBAAY;wBACvE;oBACF;gBAEA,KAAK;oBAAU;wBACb,IAAI3C,MAAMyD,OAAO,KAAK,MAAM;4BAC1BD,cAAc;gCACZjD,MAAMkC,2BAA2B,SAASE;gCAC1Ce,OAAO;oCAAEnD,MAAM;gCAAS;4BAC1B;wBACF,OAAO;4BACLiD,cAAc;gCAAEjD,MAAMkC,2BAA2B,UAAUE;4BAAY;wBACzE;wBACA;oBACF;gBAEA,KAAK;oBAAY;wBACfa,cAAc;4BAAEjD,MAAMkC,2BAA2B,WAAWE;wBAAY;wBACxE;oBACF;gBAEA,KAAK;oBAAQ;wBACXa,cAAc;4BACZjD,MAAM;gCAAC;gCAAU;gCAAS;gCAAU;gCAAU;gCAAW;6BAAO;wBAClE;wBACA;oBACF;gBAEA,KAAK;oBAAY;wBACf,IAAI,OAAOP,MAAM2D,MAAM,KAAK,YAAY;4BACtC,MAAM,IAAIC,MAAM;wBAClB;wBACA,IAAI5D,MAAM2D,MAAM,CAACE,YAAY,EAAE;4BAC7BL,cAAcxD,MAAM2D,MAAM,CAACE,YAAY,CAAC;gCACtCd;gCACAE;gCACAjD;gCACAgD;gCACAL;4BACF;wBACF,OAAO;4BACL,mEAAmE;4BACnEa,cAAc;gCACZjD,MAAMkC,2BAA2B,SAASE;gCAC1Ce,OAAO;oCACLnD,MAAM;gCACR;4BACF;wBACF;wBAEA;oBACF;gBAEA,KAAK;oBAAS;wBACZiD,cAAc;4BACZjD,MAAMkC,2BAA2B,UAAUE;4BAC3CT,MAAMrB,iBAAiBb,MAAMc,OAAO;wBACtC;wBAEA;oBACF;gBAEA,KAAK;oBAAU;wBACb,MAAMgD,cAAcjD,iBAAiBb,MAAMc,OAAO;wBAElD,IAAId,MAAMyD,OAAO,EAAE;4BACjBD,cAAc;gCACZjD,MAAMkC,2BAA2B,SAASE;gCAC1Ce,OAAO;oCACLnD,MAAM;oCACN2B,MAAM4B;gCACR;4BACF;wBACF,OAAO;4BACLN,cAAc;gCACZjD,MAAMkC,2BAA2B,UAAUE;gCAC3CT,MAAM4B;4BACR;wBACF;wBAEA;oBACF;gBAEA,KAAK;oBAAS;wBACZN,cAAc;4BACZjD,MAAMkC,2BAA2B,SAASE;4BAC1Ce,OAAO;gCACL;oCACEnD,MAAM;gCACR;gCACA;oCACEA,MAAM;gCACR;6BACD;4BACDwD,UAAU;4BACVC,UAAU;wBACZ;wBACA;oBACF;gBAEA,KAAK;oBAAgB;wBACnB,IAAIC,MAAMC,OAAO,CAAClE,MAAMmE,UAAU,GAAG;4BACnC,IAAInE,MAAMyD,OAAO,EAAE;gCACjBD,cAAc;oCACZjD,MAAMkC,2BAA2B,SAASE;oCAC1Ce,OAAO;wCACLlB,OAAOxC,MAAMmE,UAAU,CAACpD,GAAG,CAAC,CAACqD;4CAC3B,OAAO;gDACL7D,MAAM;gDACNkB,sBAAsB;gDACtBL,YAAY;oDACV+C,YAAY;wDACVE,OAAOD;oDACT;oDACAnD,OAAO;wDACLuB,OAAO;4DACL;gEACEjC,MAAMwC,sBAAsB,CAACqB,SAAS;4DACxC;4DACA;gEACE5C,MAAM,CAAC,cAAc,EAAE4C,SAAS,CAAC;4DACnC;yDACD;oDACH;gDACF;gDACA9D,UAAU;oDAAC;oDAAS;iDAAa;4CACnC;wCACF;oCACF;gCACF;4BACF,OAAO;gCACLkD,cAAc;oCACZhB,OAAOxC,MAAMmE,UAAU,CAACpD,GAAG,CAAC,CAACqD;wCAC3B,OAAO;4CACL7D,MAAMkC,2BAA2B,UAAUE;4CAC3ClB,sBAAsB;4CACtBL,YAAY;gDACV+C,YAAY;oDACVE,OAAOD;gDACT;gDACAnD,OAAO;oDACLuB,OAAO;wDACL;4DACEjC,MAAMwC,sBAAsB,CAACqB,SAAS;wDACxC;wDACA;4DACE5C,MAAM,CAAC,cAAc,EAAE4C,SAAS,CAAC;wDACnC;qDACD;gDACH;4CACF;4CACA9D,UAAU;gDAAC;gDAAS;6CAAa;wCACnC;oCACF;gCACF;4BACF;wBACF,OAAO,IAAIN,MAAMyD,OAAO,EAAE;4BACxBD,cAAc;gCACZjD,MAAMkC,2BAA2B,SAASE;gCAC1Ce,OAAO;oCACLlB,OAAO;wCACL;4CACEjC,MAAMwC,sBAAsB,CAAC/C,MAAMmE,UAAU,CAAC;wCAChD;wCACA;4CACE3C,MAAM,CAAC,cAAc,EAAExB,MAAMmE,UAAU,CAAC,CAAC;wCAC3C;qCACD;gCACH;4BACF;wBACF,OAAO;4BACLX,cAAc;gCACZhB,OAAO;oCACL;wCACEjC,MAAMkC,2BACJM,sBAAsB,CAAC/C,MAAMmE,UAAU,CAAC,EACxCxB;oCAEJ;oCACA;wCACEnB,MAAM,CAAC,cAAc,EAAExB,MAAMmE,UAAU,CAAC,CAAC;oCAC3C;iCACD;4BACH;wBACF;wBAEA;oBACF;gBAEA,KAAK;oBAAU;wBACbX,cAAc;4BACZhB,OAAO;gCACL;oCACEjC,MAAMwC,sBAAsB,CAAC/C,MAAMmE,UAAU,CAAC;gCAChD;gCACA;oCACE3C,MAAM,CAAC,cAAc,EAAExB,MAAMmE,UAAU,CAAC,CAAC;gCAC3C;6BACD;wBACH;wBACA,IAAI,CAACxB,YAAYa,YAAYhB,KAAK,CAACK,IAAI,CAAC;4BAAEtC,MAAM;wBAAO;wBACvD;oBACF;gBAEA,KAAK;oBAAU;wBACbiD,cAAc;4BACZjD,MAAMkC,2BAA2B,SAASE;4BAC1Ce,OAAO;gCACLlB,OAAOxC,MAAMsE,MAAM,CAACvD,GAAG,CAAC,CAACwD;oCACvB,MAAMC,oBAAoB1B,mBACxBC,wBACAwB,MAAM/D,MAAM,EACZwC,0BACAC;oCAGF,MAAMwB,cAA2B;wCAC/BlE,MAAM;wCACNkB,sBAAsB;wCACtBL,YAAY;4CACV,GAAGoD,kBAAkBpD,UAAU;4CAC/BsD,WAAW;gDACTL,OAAOE,MAAMhD,IAAI;4CACnB;wCACF;wCACAjB,UAAU;4CAAC;+CAAgBkE,kBAAkBlE,QAAQ;yCAAC;oCACxD;oCAEA,IAAIiE,MAAMI,aAAa,EAAE;wCACvB3B,yBAAyB4B,GAAG,CAACL,MAAMI,aAAa,EAAEF;wCAElD,OAAO;4CACLjD,MAAM,CAAC,cAAc,EAAE+C,MAAMI,aAAa,CAAC,CAAC;wCAC9C;oCACF;oCAEA,OAAOF;gCACT;4BACF;wBACF;wBACA;oBACF;gBAEA,KAAK;oBAAS;wBACZjB,cAAc;4BACZjD,MAAMkC,2BAA2B,SAASE;4BAC1Ce,OAAO;gCACLnD,MAAM;gCACNkB,sBAAsB;gCACtB,GAAGqB,mBACDC,wBACA/C,MAAMQ,MAAM,EACZwC,0BACAC,OACD;4BACH;wBACF;wBAEA,IAAIjD,MAAM2E,aAAa,EAAE;4BACvB3B,yBAAyB4B,GAAG,CAAC5E,MAAM2E,aAAa,EAAEnB;4BAElDA,cAAc;gCACZhC,MAAM,CAAC,cAAc,EAAExB,MAAM2E,aAAa,CAAC,CAAC;4BAC9C;wBACF;wBACA;oBACF;gBAEA,KAAK;gBACL,KAAK;oBAAe;wBAClB,MAAME,cAAc/B,mBAClBC,wBACA/C,MAAMQ,MAAM,EACZwC,0BACAC;wBAEFvB,OAAOoD,OAAO,CAACD,YAAYzD,UAAU,EAAE2D,OAAO,CAAC,CAAC,CAACC,UAAUC,WAAW;4BACpE5B,aAAauB,GAAG,CAACI,UAAUC;wBAC7B;wBACAJ,YAAYvE,QAAQ,CAACyE,OAAO,CAAC,CAACC;4BAC5B9B,mBAAmBI,GAAG,CAAC0B;wBACzB;wBACA;oBACF;gBAEA,KAAK;oBAAQ;wBACXhF,MAAMW,IAAI,CAACoE,OAAO,CAAC,CAACnE;4BAClB,MAAMiE,cAAc/B,mBAClBC,wBACAnC,IAAIJ,MAAM,EACVwC,0BACAC;4BAEF,IAAItD,WAAWiB,MAAM;gCACnB,uBAAuB;gCACvByC,aAAauB,GAAG,CAAChE,IAAI2C,IAAI,EAAE;oCACzBhD,MAAM;oCACNkB,sBAAsB;oCACtB,GAAGoD,WAAW;gCAChB;gCAEA,yGAAyG;gCACzG,MAAMK,oBAAoBtE,IAAIJ,MAAM,CAACC,IAAI,CAAC,CAACC,WAAaX,gBAAgBW;gCAExE,IAAIwE,mBAAmB;oCACrBhC,mBAAmBI,GAAG,CAAC1C,IAAI2C,IAAI;gCACjC;4BACF,OAAO;gCACL7B,OAAOoD,OAAO,CAACD,YAAYzD,UAAU,EAAE2D,OAAO,CAAC,CAAC,CAACC,UAAUC,WAAW;oCACpE5B,aAAauB,GAAG,CAACI,UAAUC;gCAC7B;gCACAJ,YAAYvE,QAAQ,CAACyE,OAAO,CAAC,CAACC;oCAC5B9B,mBAAmBI,GAAG,CAAC0B;gCACzB;4BACF;wBACF;wBACA;oBACF;gBAEA,KAAK;oBAAS;wBACZxB,cAAc;4BACZjD,MAAM;4BACNkB,sBAAsB;4BACtB,GAAGqB,mBACDC,wBACA/C,MAAMQ,MAAM,EACZwC,0BACAC,OACD;wBACH;wBAEA,IAAIjD,MAAM2E,aAAa,EAAE;4BACvB3B,yBAAyB4B,GAAG,CAAC5E,MAAM2E,aAAa,EAAEnB;4BAElDA,cAAc;gCACZhC,MAAM,CAAC,cAAc,EAAExB,MAAM2E,aAAa,CAAC,CAAC;4BAC9C;wBACF;wBACA;oBACF;gBAEA;oBAAS;wBACP;oBACF;YACF;YAEA,IAAInB,eAAe9D,iBAAiBM,QAAQ;gBAC1CqD,aAAauB,GAAG,CAAC5E,MAAMuD,IAAI,EAAEC;YAC/B;YAEA,OAAOH;QACT,GAAG,IAAI8B;QAET7E,UAAU2D,MAAMmB,IAAI,CAAClC;IACvB;AACF;AAEA,oFAAoF;AACpF,OAAO,SAASmC,mBACdpC,MAAuB,EACvBqC,cAAiE,EACjEtC,wBAAkD,EAClDuC,aAAgC;IAEhC,MAAMC,SAA4D5F,eAAe0F;IACjF,MAAMG,QAAQD,OAAOE,UAAU,EAAEC,YAC7BH,OAAOE,UAAU,CAACC,SAAS,GAC3BlG,SAASI,QAAQ2F,OAAOjE,IAAI,EAAE;IAElC,MAAMqE,UAA8B;QAAErC,MAAM;QAAMhD,MAAMgF;QAAyBjF,UAAU;IAAK;IAChG,MAAMuF,gBAAgBL,OAAOhF,MAAM,CAACsF,IAAI,CACtC,CAAC9F,QAAUN,iBAAiBM,UAAUA,MAAMuD,IAAI,KAAK;IAGvD,IAAIsC,iBAAiBA,cAActF,IAAI,KAAK,WAAWsF,cAActF,IAAI,KAAK,OAAO;QACnFsF,cAAcvF,QAAQ,GAAG;IAC3B,OAAO;QACLkF,OAAOhF,MAAM,CAACuF,OAAO,CAACH;IACxB;IAEA,iCAAiC;IACjC,IAAI,gBAAgBJ,UAAUA,OAAOQ,UAAU,KAAK,OAAO;QACzDR,OAAOhF,MAAM,GAAGgF,OAAOhF,MAAM,CAACO,GAAG,CAAC,CAACf;YACjC,IAAIN,iBAAiBM,UAAWA,CAAAA,MAAMuD,IAAI,KAAK,eAAevD,MAAMuD,IAAI,KAAK,WAAU,GAAI;gBACzF,OAAO;oBACL,GAAGvD,KAAK;oBACRM,UAAU;gBACZ;YACF;YACA,OAAON;QACT;IACF;IAEA,IAAI,UAAUwF,UAAUA,OAAOnD,IAAI,IAAI,CAACmD,OAAOnD,IAAI,EAAE4D,sBAAsB;QACzET,OAAOhF,MAAM,CAACqC,IAAI,CAAC;YACjBU,MAAM;YACNhD,MAAM;QACR;IACF;IAEA,iGAAiG;IACjG,MAAMwC,yBAAyBjD,0BAA0B;QAAEmD;QAAQsC;IAAc;IAEjF,OAAO;QACLhF,MAAM;QACNkB,sBAAsB;QACtBgE;QACA,GAAG3C,mBAAmBC,wBAAwByC,OAAOhF,MAAM,EAAEwC,0BAA0BC,OAAO;IAChG;AACF;AAEA;;CAEC,GACD,OAAO,SAASiD,mBACdjD,MAAuB,EACvBsC,aAAiC;IAEjC,yJAAyJ;IACzJ,MAAMvC,2BAAqD,IAAImC;IAE/D,gLAAgL;IAChL,+CAA+C;IAC/C,MAAMgB,oBAAkD;WACnDlD,OAAOmD,OAAO;WACdnD,OAAOoD,WAAW;KACtB,CAAChF,MAAM,CAAC,CAACC,KAAKkE;QACblE,GAAG,CAACkE,OAAOjE,IAAI,CAAC,GAAG8D,mBAAmBpC,QAAQuC,QAAQxC,0BAA0BuC;QAChF,OAAOjE;IACT,GAAG,CAAC;IAEJ,OAAO;QACLG,sBAAsB;QACtB6E,aAAa;YAAE,GAAGH,iBAAiB;YAAE,GAAGzE,OAAO0B,WAAW,CAACJ,yBAAyB;QAAC;QACrF,wJAAwJ;QACxJzC,MAAM;QACNa,YAAY;YACViF,aAAanF,sBAAsB+B,OAAOoD,WAAW,IAAI,EAAE;YAC3DD,SAASlF,sBAAsB+B,OAAOmD,OAAO,IAAI,EAAE;YACnDpE,QAAQJ,4BAA4BqB,OAAOpB,YAAY;YACvD0E,MAAMpE,0BAA0Bc,OAAOoD,WAAW;QACpD;QACA/F,UAAU;YAAC;YAAQ;YAAU;YAAe;SAAU;QACtDmF,OAAO;IACT;AACF"}
@@ -1,7 +1,8 @@
1
1
  import { sanitizeConfig } from '../config/sanitize.js';
2
2
  import { configToJSONSchema } from './configToJSONSchema.js';
3
3
  describe('configToJSONSchema', ()=>{
4
- it('should handle optional arrays with required fields', ()=>{
4
+ it('should handle optional arrays with required fields', async ()=>{
5
+ // @ts-expect-error
5
6
  const config = {
6
7
  collections: [
7
8
  {
@@ -23,7 +24,7 @@ describe('configToJSONSchema', ()=>{
23
24
  }
24
25
  ]
25
26
  };
26
- const sanitizedConfig = sanitizeConfig(config);
27
+ const sanitizedConfig = await sanitizeConfig(config);
27
28
  const schema = configToJSONSchema(sanitizedConfig, 'text');
28
29
  expect(schema?.definitions?.test).toStrictEqual({
29
30
  additionalProperties: false,
@@ -63,6 +64,101 @@ describe('configToJSONSchema', ()=>{
63
64
  type: 'object'
64
65
  });
65
66
  });
67
+ it('should handle tabs and named tabs with required fields', async ()=>{
68
+ // @ts-expect-error
69
+ const config = {
70
+ collections: [
71
+ {
72
+ fields: [
73
+ {
74
+ type: 'tabs',
75
+ tabs: [
76
+ {
77
+ label: 'unnamedTab',
78
+ fields: [
79
+ {
80
+ type: 'text',
81
+ name: 'fieldInUnnamedTab'
82
+ }
83
+ ]
84
+ },
85
+ {
86
+ label: 'namedTab',
87
+ name: 'namedTab',
88
+ fields: [
89
+ {
90
+ type: 'text',
91
+ name: 'fieldInNamedTab'
92
+ }
93
+ ]
94
+ },
95
+ {
96
+ label: 'namedTabWithRequired',
97
+ name: 'namedTabWithRequired',
98
+ fields: [
99
+ {
100
+ type: 'text',
101
+ name: 'fieldInNamedTab',
102
+ required: true
103
+ }
104
+ ]
105
+ }
106
+ ]
107
+ }
108
+ ],
109
+ slug: 'test',
110
+ timestamps: false
111
+ }
112
+ ]
113
+ };
114
+ const sanitizedConfig = await sanitizeConfig(config);
115
+ const schema = configToJSONSchema(sanitizedConfig, 'text');
116
+ expect(schema?.definitions?.test).toStrictEqual({
117
+ additionalProperties: false,
118
+ properties: {
119
+ id: {
120
+ type: 'string'
121
+ },
122
+ fieldInUnnamedTab: {
123
+ type: [
124
+ 'string',
125
+ 'null'
126
+ ]
127
+ },
128
+ namedTab: {
129
+ additionalProperties: false,
130
+ type: 'object',
131
+ properties: {
132
+ fieldInNamedTab: {
133
+ type: [
134
+ 'string',
135
+ 'null'
136
+ ]
137
+ }
138
+ },
139
+ required: []
140
+ },
141
+ namedTabWithRequired: {
142
+ additionalProperties: false,
143
+ type: 'object',
144
+ properties: {
145
+ fieldInNamedTab: {
146
+ type: 'string'
147
+ }
148
+ },
149
+ required: [
150
+ 'fieldInNamedTab'
151
+ ]
152
+ }
153
+ },
154
+ required: [
155
+ 'id',
156
+ 'namedTabWithRequired'
157
+ ],
158
+ title: 'Test',
159
+ type: 'object'
160
+ });
161
+ });
66
162
  });
67
163
 
68
164
  //# sourceMappingURL=configToJSONSchema.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utilities/configToJSONSchema.spec.ts"],"sourcesContent":["import type { Config } from '../config/types.js'\n\nimport { sanitizeConfig } from '../config/sanitize.js'\nimport { configToJSONSchema } from './configToJSONSchema.js'\n\ndescribe('configToJSONSchema', () => {\n it('should handle optional arrays with required fields', () => {\n const config: Config = {\n collections: [\n {\n fields: [\n {\n name: 'someRequiredField',\n type: 'array',\n fields: [\n {\n name: 'someRequiredField',\n required: true,\n type: 'text',\n },\n ],\n },\n ],\n slug: 'test',\n timestamps: false,\n },\n ],\n }\n\n const sanitizedConfig = sanitizeConfig(config)\n const schema = configToJSONSchema(sanitizedConfig, 'text')\n\n expect(schema?.definitions?.test).toStrictEqual({\n additionalProperties: false,\n properties: {\n id: {\n type: 'string',\n },\n someRequiredField: {\n items: {\n additionalProperties: false,\n properties: {\n id: {\n type: ['string', 'null'],\n },\n someRequiredField: {\n type: 'string',\n },\n },\n required: ['someRequiredField'],\n type: 'object',\n },\n type: ['array', 'null'],\n },\n },\n required: ['id'],\n title: 'Test',\n type: 'object',\n })\n })\n})\n"],"names":["sanitizeConfig","configToJSONSchema","describe","it","config","collections","fields","name","type","required","slug","timestamps","sanitizedConfig","schema","expect","definitions","test","toStrictEqual","additionalProperties","properties","id","someRequiredField","items","title"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAEA,SAASA,cAAc,QAAQ,wBAAuB;AACtD,SAASC,kBAAkB,QAAQ,0BAAyB;AAE5DC,SAAS,sBAAsB;IAC7BC,GAAG,sDAAsD;QACvD,MAAMC,SAAiB;YACrBC,aAAa;gBACX;oBACEC,QAAQ;wBACN;4BACEC,MAAM;4BACNC,MAAM;4BACNF,QAAQ;gCACN;oCACEC,MAAM;oCACNE,UAAU;oCACVD,MAAM;gCACR;6BACD;wBACH;qBACD;oBACDE,MAAM;oBACNC,YAAY;gBACd;aACD;QACH;QAEA,MAAMC,kBAAkBZ,eAAeI;QACvC,MAAMS,SAASZ,mBAAmBW,iBAAiB;QAEnDE,OAAOD,QAAQE,aAAaC,MAAMC,aAAa,CAAC;YAC9CC,sBAAsB;YACtBC,YAAY;gBACVC,IAAI;oBACFZ,MAAM;gBACR;gBACAa,mBAAmB;oBACjBC,OAAO;wBACLJ,sBAAsB;wBACtBC,YAAY;4BACVC,IAAI;gCACFZ,MAAM;oCAAC;oCAAU;iCAAO;4BAC1B;4BACAa,mBAAmB;gCACjBb,MAAM;4BACR;wBACF;wBACAC,UAAU;4BAAC;yBAAoB;wBAC/BD,MAAM;oBACR;oBACAA,MAAM;wBAAC;wBAAS;qBAAO;gBACzB;YACF;YACAC,UAAU;gBAAC;aAAK;YAChBc,OAAO;YACPf,MAAM;QACR;IACF;AACF"}
1
+ {"version":3,"sources":["../../src/utilities/configToJSONSchema.spec.ts"],"sourcesContent":["import type { Config } from '../config/types.js'\n\nimport { sanitizeConfig } from '../config/sanitize.js'\nimport { configToJSONSchema } from './configToJSONSchema.js'\n\ndescribe('configToJSONSchema', () => {\n it('should handle optional arrays with required fields', async () => {\n // @ts-expect-error\n const config: Config = {\n collections: [\n {\n fields: [\n {\n name: 'someRequiredField',\n type: 'array',\n fields: [\n {\n name: 'someRequiredField',\n required: true,\n type: 'text',\n },\n ],\n },\n ],\n slug: 'test',\n timestamps: false,\n },\n ],\n }\n\n const sanitizedConfig = await sanitizeConfig(config)\n const schema = configToJSONSchema(sanitizedConfig, 'text')\n\n expect(schema?.definitions?.test).toStrictEqual({\n additionalProperties: false,\n properties: {\n id: {\n type: 'string',\n },\n someRequiredField: {\n items: {\n additionalProperties: false,\n properties: {\n id: {\n type: ['string', 'null'],\n },\n someRequiredField: {\n type: 'string',\n },\n },\n required: ['someRequiredField'],\n type: 'object',\n },\n type: ['array', 'null'],\n },\n },\n required: ['id'],\n title: 'Test',\n type: 'object',\n })\n })\n\n it('should handle tabs and named tabs with required fields', async () => {\n // @ts-expect-error\n const config: Config = {\n collections: [\n {\n fields: [\n {\n type: 'tabs',\n tabs: [\n {\n label: 'unnamedTab',\n fields: [\n {\n type: 'text',\n name: 'fieldInUnnamedTab',\n },\n ],\n },\n {\n label: 'namedTab',\n name: 'namedTab',\n fields: [\n {\n type: 'text',\n name: 'fieldInNamedTab',\n },\n ],\n },\n {\n label: 'namedTabWithRequired',\n name: 'namedTabWithRequired',\n fields: [\n {\n type: 'text',\n name: 'fieldInNamedTab',\n required: true,\n },\n ],\n },\n ],\n },\n ],\n slug: 'test',\n timestamps: false,\n },\n ],\n }\n\n const sanitizedConfig = await sanitizeConfig(config)\n const schema = configToJSONSchema(sanitizedConfig, 'text')\n\n expect(schema?.definitions?.test).toStrictEqual({\n additionalProperties: false,\n properties: {\n id: {\n type: 'string',\n },\n fieldInUnnamedTab: {\n type: ['string', 'null'],\n },\n namedTab: {\n additionalProperties: false,\n type: 'object',\n properties: {\n fieldInNamedTab: {\n type: ['string', 'null'],\n },\n },\n required: [],\n },\n namedTabWithRequired: {\n additionalProperties: false,\n type: 'object',\n properties: {\n fieldInNamedTab: {\n type: 'string',\n },\n },\n required: ['fieldInNamedTab'],\n },\n },\n required: ['id', 'namedTabWithRequired'],\n title: 'Test',\n type: 'object',\n })\n })\n})\n"],"names":["sanitizeConfig","configToJSONSchema","describe","it","config","collections","fields","name","type","required","slug","timestamps","sanitizedConfig","schema","expect","definitions","test","toStrictEqual","additionalProperties","properties","id","someRequiredField","items","title","tabs","label","fieldInUnnamedTab","namedTab","fieldInNamedTab","namedTabWithRequired"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAEA,SAASA,cAAc,QAAQ,wBAAuB;AACtD,SAASC,kBAAkB,QAAQ,0BAAyB;AAE5DC,SAAS,sBAAsB;IAC7BC,GAAG,sDAAsD;QACvD,mBAAmB;QACnB,MAAMC,SAAiB;YACrBC,aAAa;gBACX;oBACEC,QAAQ;wBACN;4BACEC,MAAM;4BACNC,MAAM;4BACNF,QAAQ;gCACN;oCACEC,MAAM;oCACNE,UAAU;oCACVD,MAAM;gCACR;6BACD;wBACH;qBACD;oBACDE,MAAM;oBACNC,YAAY;gBACd;aACD;QACH;QAEA,MAAMC,kBAAkB,MAAMZ,eAAeI;QAC7C,MAAMS,SAASZ,mBAAmBW,iBAAiB;QAEnDE,OAAOD,QAAQE,aAAaC,MAAMC,aAAa,CAAC;YAC9CC,sBAAsB;YACtBC,YAAY;gBACVC,IAAI;oBACFZ,MAAM;gBACR;gBACAa,mBAAmB;oBACjBC,OAAO;wBACLJ,sBAAsB;wBACtBC,YAAY;4BACVC,IAAI;gCACFZ,MAAM;oCAAC;oCAAU;iCAAO;4BAC1B;4BACAa,mBAAmB;gCACjBb,MAAM;4BACR;wBACF;wBACAC,UAAU;4BAAC;yBAAoB;wBAC/BD,MAAM;oBACR;oBACAA,MAAM;wBAAC;wBAAS;qBAAO;gBACzB;YACF;YACAC,UAAU;gBAAC;aAAK;YAChBc,OAAO;YACPf,MAAM;QACR;IACF;IAEAL,GAAG,0DAA0D;QAC3D,mBAAmB;QACnB,MAAMC,SAAiB;YACrBC,aAAa;gBACX;oBACEC,QAAQ;wBACN;4BACEE,MAAM;4BACNgB,MAAM;gCACJ;oCACEC,OAAO;oCACPnB,QAAQ;wCACN;4CACEE,MAAM;4CACND,MAAM;wCACR;qCACD;gCACH;gCACA;oCACEkB,OAAO;oCACPlB,MAAM;oCACND,QAAQ;wCACN;4CACEE,MAAM;4CACND,MAAM;wCACR;qCACD;gCACH;gCACA;oCACEkB,OAAO;oCACPlB,MAAM;oCACND,QAAQ;wCACN;4CACEE,MAAM;4CACND,MAAM;4CACNE,UAAU;wCACZ;qCACD;gCACH;6BACD;wBACH;qBACD;oBACDC,MAAM;oBACNC,YAAY;gBACd;aACD;QACH;QAEA,MAAMC,kBAAkB,MAAMZ,eAAeI;QAC7C,MAAMS,SAASZ,mBAAmBW,iBAAiB;QAEnDE,OAAOD,QAAQE,aAAaC,MAAMC,aAAa,CAAC;YAC9CC,sBAAsB;YACtBC,YAAY;gBACVC,IAAI;oBACFZ,MAAM;gBACR;gBACAkB,mBAAmB;oBACjBlB,MAAM;wBAAC;wBAAU;qBAAO;gBAC1B;gBACAmB,UAAU;oBACRT,sBAAsB;oBACtBV,MAAM;oBACNW,YAAY;wBACVS,iBAAiB;4BACfpB,MAAM;gCAAC;gCAAU;6BAAO;wBAC1B;oBACF;oBACAC,UAAU,EAAE;gBACd;gBACAoB,sBAAsB;oBACpBX,sBAAsB;oBACtBV,MAAM;oBACNW,YAAY;wBACVS,iBAAiB;4BACfpB,MAAM;wBACR;oBACF;oBACAC,UAAU;wBAAC;qBAAkB;gBAC/B;YACF;YACAA,UAAU;gBAAC;gBAAM;aAAuB;YACxCc,OAAO;YACPf,MAAM;QACR;IACF;AACF"}
@@ -1,13 +1,13 @@
1
1
  import type { User } from '../auth/types.js';
2
2
  import type { Payload, RequestContext } from '../index.js';
3
- import type { PayloadRequest } from '../types/index.js';
3
+ import type { PayloadRequestWithData } from '../types/index.js';
4
4
  type CreateLocalReq = (options: {
5
5
  context?: RequestContext;
6
6
  fallbackLocale?: string;
7
7
  locale?: string;
8
- req?: PayloadRequest;
8
+ req?: PayloadRequestWithData;
9
9
  user?: User;
10
- }, payload: Payload) => Promise<PayloadRequest>;
10
+ }, payload: Payload) => Promise<PayloadRequestWithData>;
11
11
  export declare const createLocalReq: CreateLocalReq;
12
12
  export {};
13
13
  //# sourceMappingURL=createLocalReq.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createLocalReq.d.ts","sourceRoot":"","sources":["../../src/utilities/createLocalReq.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAC5C,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAsDvD,KAAK,cAAc,GAAG,CACpB,OAAO,EAAE;IACP,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,GAAG,CAAC,EAAE,cAAc,CAAA;IACpB,IAAI,CAAC,EAAE,IAAI,CAAA;CACZ,EACD,OAAO,EAAE,OAAO,KACb,OAAO,CAAC,cAAc,CAAC,CAAA;AAC5B,eAAO,MAAM,cAAc,EAAE,cAiC5B,CAAA"}
1
+ {"version":3,"file":"createLocalReq.d.ts","sourceRoot":"","sources":["../../src/utilities/createLocalReq.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAC5C,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAsD/D,KAAK,cAAc,GAAG,CACpB,OAAO,EAAE;IACP,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,GAAG,CAAC,EAAE,sBAAsB,CAAA;IAC5B,IAAI,CAAC,EAAE,IAAI,CAAA;CACZ,EACD,OAAO,EAAE,OAAO,KACb,OAAO,CAAC,sBAAsB,CAAC,CAAA;AACpC,eAAO,MAAM,cAAc,EAAE,cAqC5B,CAAA"}
@@ -22,7 +22,7 @@ const attachFakeURLProperties = (req)=>{
22
22
  * *NOTE*
23
23
  * If no URL is provided, the local API was called directly outside
24
24
  * the context of a request. Therefore we create a fake URL object.
25
- * `ts-ignore` is used below for properties that are 'read-only'
25
+ * `ts-expect-error` is used below for properties that are 'read-only'
26
26
  * since they do not exist yet we can safely ignore the error.
27
27
  */ let urlObject;
28
28
  function getURLObject() {
@@ -43,12 +43,9 @@ const attachFakeURLProperties = (req)=>{
43
43
  // @ts-expect-error
44
44
  if (!req.origin) req.origin = getURLObject().origin;
45
45
  // @ts-expect-error
46
- if (!req?.url) req.url = getURLObject().url;
46
+ if (!req?.url) req.url = getURLObject().href;
47
47
  };
48
48
  export const createLocalReq = async ({ context, fallbackLocale, locale: localeArg, req = {}, user }, payload)=>{
49
- const i18n = req?.i18n || await getLocalI18n({
50
- config: payload.config
51
- });
52
49
  if (payload.config?.localization) {
53
50
  const locale = localeArg === '*' ? 'all' : localeArg;
54
51
  const defaultLocale = payload.config.localization.defaultLocale;
@@ -60,6 +57,12 @@ export const createLocalReq = async ({ context, fallbackLocale, locale: localeAr
60
57
  req.fallbackLocale = fallbackLocaleFromConfig || defaultLocale;
61
58
  }
62
59
  }
60
+ const i18n = req?.i18n || await getLocalI18n({
61
+ config: payload.config,
62
+ language: payload.config.i18n.fallbackLanguage
63
+ });
64
+ // @ts-expect-error
65
+ if (!req.headers) req.headers = new Headers();
63
66
  req.context = getRequestContext(req, context);
64
67
  req.payloadAPI = req?.payloadAPI || 'local';
65
68
  req.payload = payload;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utilities/createLocalReq.ts"],"sourcesContent":["import type { User } from '../auth/types.js'\nimport type { Payload, RequestContext } from '../index.js'\nimport type { PayloadRequest } from '../types/index.js'\n\nimport { getDataLoader } from '../collections/dataloader.js'\nimport { getLocalI18n } from '../translations/getLocalI18n.js'\n\nfunction getRequestContext(\n req: PayloadRequest = { context: null } as PayloadRequest,\n context: RequestContext = {},\n): RequestContext {\n if (req.context) {\n if (Object.keys(req.context).length === 0 && req.context.constructor === Object) {\n // if req.context is `{}` avoid unnecessary spread\n return context\n } else {\n return { ...req.context, ...context }\n }\n } else {\n return context\n }\n}\n\nconst attachFakeURLProperties = (req: PayloadRequest) => {\n /**\n * *NOTE*\n * If no URL is provided, the local API was called directly outside\n * the context of a request. Therefore we create a fake URL object.\n * `ts-ignore` is used below for properties that are 'read-only'\n * since they do not exist yet we can safely ignore the error.\n */\n let urlObject\n\n function getURLObject() {\n if (urlObject) return urlObject\n const urlToUse = req?.url || req.payload.config?.serverURL || 'http://localhost'\n try {\n urlObject = new URL(urlToUse)\n } catch (error) {\n urlObject = new URL('http://localhost')\n }\n\n return urlObject\n }\n\n if (!req.host) req.host = getURLObject().host\n if (!req.protocol) req.protocol = getURLObject().protocol\n if (!req.pathname) req.pathname = getURLObject().pathname\n // @ts-expect-error\n if (!req.searchParams) req.searchParams = getURLObject().searchParams\n // @ts-expect-error\n if (!req.origin) req.origin = getURLObject().origin\n // @ts-expect-error\n if (!req?.url) req.url = getURLObject().url\n}\n\ntype CreateLocalReq = (\n options: {\n context?: RequestContext\n fallbackLocale?: string\n locale?: string\n req?: PayloadRequest\n user?: User\n },\n payload: Payload,\n) => Promise<PayloadRequest>\nexport const createLocalReq: CreateLocalReq = async (\n { context, fallbackLocale, locale: localeArg, req = {} as PayloadRequest, user },\n payload,\n) => {\n const i18n = req?.i18n || (await getLocalI18n({ config: payload.config }))\n\n if (payload.config?.localization) {\n const locale = localeArg === '*' ? 'all' : localeArg\n const defaultLocale = payload.config.localization.defaultLocale\n req.locale = locale || req?.locale || defaultLocale\n const fallbackLocaleFromConfig = payload.config.localization.locales.find(\n ({ code }) => req.locale === code,\n )?.fallbackLocale\n if (typeof fallbackLocale !== 'undefined') {\n req.fallbackLocale = fallbackLocale\n } else if (typeof req?.fallbackLocale === 'undefined') {\n req.fallbackLocale = fallbackLocaleFromConfig || defaultLocale\n }\n }\n\n req.context = getRequestContext(req, context)\n req.payloadAPI = req?.payloadAPI || 'local'\n req.payload = payload\n req.i18n = i18n\n req.t = i18n.t\n req.user = user || req?.user || null\n req.payloadDataLoader = req?.payloadDataLoader || getDataLoader(req)\n req.routeParams = req?.routeParams || {}\n req.query = req?.query || {}\n\n attachFakeURLProperties(req)\n\n return req\n}\n"],"names":["getDataLoader","getLocalI18n","getRequestContext","req","context","Object","keys","length","constructor","attachFakeURLProperties","urlObject","getURLObject","urlToUse","url","payload","config","serverURL","URL","error","host","protocol","pathname","searchParams","origin","createLocalReq","fallbackLocale","locale","localeArg","user","i18n","localization","defaultLocale","fallbackLocaleFromConfig","locales","find","code","payloadAPI","t","payloadDataLoader","routeParams","query"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../src/utilities/createLocalReq.ts"],"sourcesContent":["import type { User } from '../auth/types.js'\nimport type { Payload, RequestContext } from '../index.js'\nimport type { PayloadRequestWithData } from '../types/index.js'\n\nimport { getDataLoader } from '../collections/dataloader.js'\nimport { getLocalI18n } from '../translations/getLocalI18n.js'\n\nfunction getRequestContext(\n req: PayloadRequestWithData = { context: null } as PayloadRequestWithData,\n context: RequestContext = {},\n): RequestContext {\n if (req.context) {\n if (Object.keys(req.context).length === 0 && req.context.constructor === Object) {\n // if req.context is `{}` avoid unnecessary spread\n return context\n } else {\n return { ...req.context, ...context }\n }\n } else {\n return context\n }\n}\n\nconst attachFakeURLProperties = (req: PayloadRequestWithData) => {\n /**\n * *NOTE*\n * If no URL is provided, the local API was called directly outside\n * the context of a request. Therefore we create a fake URL object.\n * `ts-expect-error` is used below for properties that are 'read-only'\n * since they do not exist yet we can safely ignore the error.\n */\n let urlObject\n\n function getURLObject() {\n if (urlObject) return urlObject\n const urlToUse = req?.url || req.payload.config?.serverURL || 'http://localhost'\n try {\n urlObject = new URL(urlToUse)\n } catch (error) {\n urlObject = new URL('http://localhost')\n }\n\n return urlObject\n }\n\n if (!req.host) req.host = getURLObject().host\n if (!req.protocol) req.protocol = getURLObject().protocol\n if (!req.pathname) req.pathname = getURLObject().pathname\n // @ts-expect-error\n if (!req.searchParams) req.searchParams = getURLObject().searchParams\n // @ts-expect-error\n if (!req.origin) req.origin = getURLObject().origin\n // @ts-expect-error\n if (!req?.url) req.url = getURLObject().href\n}\n\ntype CreateLocalReq = (\n options: {\n context?: RequestContext\n fallbackLocale?: string\n locale?: string\n req?: PayloadRequestWithData\n user?: User\n },\n payload: Payload,\n) => Promise<PayloadRequestWithData>\nexport const createLocalReq: CreateLocalReq = async (\n { context, fallbackLocale, locale: localeArg, req = {} as PayloadRequestWithData, user },\n payload,\n) => {\n if (payload.config?.localization) {\n const locale = localeArg === '*' ? 'all' : localeArg\n const defaultLocale = payload.config.localization.defaultLocale\n req.locale = locale || req?.locale || defaultLocale\n const fallbackLocaleFromConfig = payload.config.localization.locales.find(\n ({ code }) => req.locale === code,\n )?.fallbackLocale\n if (typeof fallbackLocale !== 'undefined') {\n req.fallbackLocale = fallbackLocale\n } else if (typeof req?.fallbackLocale === 'undefined') {\n req.fallbackLocale = fallbackLocaleFromConfig || defaultLocale\n }\n }\n\n const i18n =\n req?.i18n ||\n (await getLocalI18n({ config: payload.config, language: payload.config.i18n.fallbackLanguage }))\n\n // @ts-expect-error\n if (!req.headers) req.headers = new Headers()\n req.context = getRequestContext(req, context)\n req.payloadAPI = req?.payloadAPI || 'local'\n req.payload = payload\n req.i18n = i18n\n req.t = i18n.t\n req.user = user || req?.user || null\n req.payloadDataLoader = req?.payloadDataLoader || getDataLoader(req)\n req.routeParams = req?.routeParams || {}\n req.query = req?.query || {}\n\n attachFakeURLProperties(req)\n\n return req\n}\n"],"names":["getDataLoader","getLocalI18n","getRequestContext","req","context","Object","keys","length","constructor","attachFakeURLProperties","urlObject","getURLObject","urlToUse","url","payload","config","serverURL","URL","error","host","protocol","pathname","searchParams","origin","href","createLocalReq","fallbackLocale","locale","localeArg","user","localization","defaultLocale","fallbackLocaleFromConfig","locales","find","code","i18n","language","fallbackLanguage","headers","Headers","payloadAPI","t","payloadDataLoader","routeParams","query"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAIA,SAASA,aAAa,QAAQ,+BAA8B;AAC5D,SAASC,YAAY,QAAQ,kCAAiC;AAE9D,SAASC,kBACPC,MAA8B;IAAEC,SAAS;AAAK,CAA2B,EACzEA,UAA0B,CAAC,CAAC;IAE5B,IAAID,IAAIC,OAAO,EAAE;QACf,IAAIC,OAAOC,IAAI,CAACH,IAAIC,OAAO,EAAEG,MAAM,KAAK,KAAKJ,IAAIC,OAAO,CAACI,WAAW,KAAKH,QAAQ;YAC/E,kDAAkD;YAClD,OAAOD;QACT,OAAO;YACL,OAAO;gBAAE,GAAGD,IAAIC,OAAO;gBAAE,GAAGA,OAAO;YAAC;QACtC;IACF,OAAO;QACL,OAAOA;IACT;AACF;AAEA,MAAMK,0BAA0B,CAACN;IAC/B;;;;;;GAMC,GACD,IAAIO;IAEJ,SAASC;QACP,IAAID,WAAW,OAAOA;QACtB,MAAME,WAAWT,KAAKU,OAAOV,IAAIW,OAAO,CAACC,MAAM,EAAEC,aAAa;QAC9D,IAAI;YACFN,YAAY,IAAIO,IAAIL;QACtB,EAAE,OAAOM,OAAO;YACdR,YAAY,IAAIO,IAAI;QACtB;QAEA,OAAOP;IACT;IAEA,IAAI,CAACP,IAAIgB,IAAI,EAAEhB,IAAIgB,IAAI,GAAGR,eAAeQ,IAAI;IAC7C,IAAI,CAAChB,IAAIiB,QAAQ,EAAEjB,IAAIiB,QAAQ,GAAGT,eAAeS,QAAQ;IACzD,IAAI,CAACjB,IAAIkB,QAAQ,EAAElB,IAAIkB,QAAQ,GAAGV,eAAeU,QAAQ;IACzD,mBAAmB;IACnB,IAAI,CAAClB,IAAImB,YAAY,EAAEnB,IAAImB,YAAY,GAAGX,eAAeW,YAAY;IACrE,mBAAmB;IACnB,IAAI,CAACnB,IAAIoB,MAAM,EAAEpB,IAAIoB,MAAM,GAAGZ,eAAeY,MAAM;IACnD,mBAAmB;IACnB,IAAI,CAACpB,KAAKU,KAAKV,IAAIU,GAAG,GAAGF,eAAea,IAAI;AAC9C;AAYA,OAAO,MAAMC,iBAAiC,OAC5C,EAAErB,OAAO,EAAEsB,cAAc,EAAEC,QAAQC,SAAS,EAAEzB,MAAM,CAAC,CAA2B,EAAE0B,IAAI,EAAE,EACxFf;IAEA,IAAIA,QAAQC,MAAM,EAAEe,cAAc;QAChC,MAAMH,SAASC,cAAc,MAAM,QAAQA;QAC3C,MAAMG,gBAAgBjB,QAAQC,MAAM,CAACe,YAAY,CAACC,aAAa;QAC/D5B,IAAIwB,MAAM,GAAGA,UAAUxB,KAAKwB,UAAUI;QACtC,MAAMC,2BAA2BlB,QAAQC,MAAM,CAACe,YAAY,CAACG,OAAO,CAACC,IAAI,CACvE,CAAC,EAAEC,IAAI,EAAE,GAAKhC,IAAIwB,MAAM,KAAKQ,OAC5BT;QACH,IAAI,OAAOA,mBAAmB,aAAa;YACzCvB,IAAIuB,cAAc,GAAGA;QACvB,OAAO,IAAI,OAAOvB,KAAKuB,mBAAmB,aAAa;YACrDvB,IAAIuB,cAAc,GAAGM,4BAA4BD;QACnD;IACF;IAEA,MAAMK,OACJjC,KAAKiC,QACJ,MAAMnC,aAAa;QAAEc,QAAQD,QAAQC,MAAM;QAAEsB,UAAUvB,QAAQC,MAAM,CAACqB,IAAI,CAACE,gBAAgB;IAAC;IAE/F,mBAAmB;IACnB,IAAI,CAACnC,IAAIoC,OAAO,EAAEpC,IAAIoC,OAAO,GAAG,IAAIC;IACpCrC,IAAIC,OAAO,GAAGF,kBAAkBC,KAAKC;IACrCD,IAAIsC,UAAU,GAAGtC,KAAKsC,cAAc;IACpCtC,IAAIW,OAAO,GAAGA;IACdX,IAAIiC,IAAI,GAAGA;IACXjC,IAAIuC,CAAC,GAAGN,KAAKM,CAAC;IACdvC,IAAI0B,IAAI,GAAGA,QAAQ1B,KAAK0B,QAAQ;IAChC1B,IAAIwC,iBAAiB,GAAGxC,KAAKwC,qBAAqB3C,cAAcG;IAChEA,IAAIyC,WAAW,GAAGzC,KAAKyC,eAAe,CAAC;IACvCzC,IAAI0C,KAAK,GAAG1C,KAAK0C,SAAS,CAAC;IAE3BpC,wBAAwBN;IAExB,OAAOA;AACT,EAAC"}
@@ -1,12 +1,12 @@
1
1
  import type { CollectionPermission, GlobalPermission } from '../auth/types.js';
2
2
  import type { SanitizedCollectionConfig } from '../collections/config/types.js';
3
3
  import type { SanitizedGlobalConfig } from '../globals/config/types.js';
4
- import type { AllOperations, PayloadRequest } from '../types/index.js';
4
+ import type { AllOperations, PayloadRequestWithData } from '../types/index.js';
5
5
  type Args = {
6
6
  entity: SanitizedCollectionConfig | SanitizedGlobalConfig;
7
7
  id?: number | string;
8
8
  operations: AllOperations[];
9
- req: PayloadRequest;
9
+ req: PayloadRequestWithData;
10
10
  type: 'collection' | 'global';
11
11
  };
12
12
  type ReturnType<T extends Args> = T['type'] extends 'global' ? GlobalPermission : CollectionPermission;
@@ -1 +1 @@
1
- {"version":3,"file":"getEntityPolicies.d.ts","sourceRoot":"","sources":["../../src/utilities/getEntityPolicies.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAC9E,OAAO,KAAK,EAAE,yBAAyB,EAAc,MAAM,gCAAgC,CAAA;AAG3F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AACvE,OAAO,KAAK,EAAE,aAAa,EAAY,cAAc,EAAS,MAAM,mBAAmB,CAAA;AAIvF,KAAK,IAAI,GAAG;IACV,MAAM,EAAE,yBAAyB,GAAG,qBAAqB,CAAA;IACzD,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,UAAU,EAAE,aAAa,EAAE,CAAA;IAC3B,GAAG,EAAE,cAAc,CAAA;IACnB,IAAI,EAAE,YAAY,GAAG,QAAQ,CAAA;CAC9B,CAAA;AAED,KAAK,UAAU,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,QAAQ,GACxD,gBAAgB,GAChB,oBAAoB,CAAA;AAYxB,wBAAsB,iBAAiB,CAAC,CAAC,SAAS,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CA4NvF"}
1
+ {"version":3,"file":"getEntityPolicies.d.ts","sourceRoot":"","sources":["../../src/utilities/getEntityPolicies.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAC9E,OAAO,KAAK,EAAE,yBAAyB,EAAc,MAAM,gCAAgC,CAAA;AAG3F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AACvE,OAAO,KAAK,EAAE,aAAa,EAAY,sBAAsB,EAAS,MAAM,mBAAmB,CAAA;AAI/F,KAAK,IAAI,GAAG;IACV,MAAM,EAAE,yBAAyB,GAAG,qBAAqB,CAAA;IACzD,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,UAAU,EAAE,aAAa,EAAE,CAAA;IAC3B,GAAG,EAAE,sBAAsB,CAAA;IAC3B,IAAI,EAAE,YAAY,GAAG,QAAQ,CAAA;CAC9B,CAAA;AAED,KAAK,UAAU,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,QAAQ,GACxD,gBAAgB,GAChB,oBAAoB,CAAA;AAYxB,wBAAsB,iBAAiB,CAAC,CAAC,SAAS,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CA4NvF"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utilities/getEntityPolicies.ts"],"sourcesContent":["import type { CollectionPermission, GlobalPermission } from '../auth/types.js'\nimport type { SanitizedCollectionConfig, TypeWithID } from '../collections/config/types.js'\nimport type { Access } from '../config/types.js'\nimport type { FieldAccess } from '../fields/config/types.js'\nimport type { SanitizedGlobalConfig } from '../globals/config/types.js'\nimport type { AllOperations, Document, PayloadRequest, Where } from '../types/index.js'\n\nimport { tabHasName } from '../fields/config/types.js'\n\ntype Args = {\n entity: SanitizedCollectionConfig | SanitizedGlobalConfig\n id?: number | string\n operations: AllOperations[]\n req: PayloadRequest\n type: 'collection' | 'global'\n}\n\ntype ReturnType<T extends Args> = T['type'] extends 'global'\n ? GlobalPermission\n : CollectionPermission\n\ntype CreateAccessPromise = (args: {\n access: Access | FieldAccess\n accessLevel: 'entity' | 'field'\n disableWhere?: boolean\n operation: AllOperations\n policiesObj: {\n [key: string]: any\n }\n}) => Promise<void>\n\nexport async function getEntityPolicies<T extends Args>(args: T): Promise<ReturnType<T>> {\n const { id, type, entity, operations, req } = args\n const { data, payload, user } = req\n const isLoggedIn = !!user\n\n const policies = {\n fields: {},\n } as ReturnType<T>\n\n let docBeingAccessed\n\n async function getEntityDoc({ where }: { where?: Where } = {}): Promise<TypeWithID & Document> {\n if (entity.slug) {\n if (type === 'global') {\n return payload.findGlobal({\n slug: entity.slug,\n overrideAccess: true,\n req,\n })\n }\n\n if (type === 'collection' && id) {\n if (typeof where === 'object') {\n const paginatedRes = await payload.find({\n collection: entity.slug,\n depth: 0,\n limit: 1,\n overrideAccess: true,\n pagination: false,\n req,\n where: {\n ...where,\n and: [\n ...(where.and || []),\n {\n id: {\n equals: id,\n },\n },\n ],\n },\n })\n\n return paginatedRes?.docs?.[0] || undefined\n }\n\n return payload.findByID({\n id,\n collection: entity.slug,\n depth: 0,\n overrideAccess: true,\n req,\n })\n }\n }\n\n return undefined\n }\n\n const createAccessPromise: CreateAccessPromise = async ({\n access,\n accessLevel,\n disableWhere = false,\n operation,\n policiesObj,\n }) => {\n const mutablePolicies = policiesObj\n\n if (accessLevel === 'field' && docBeingAccessed === undefined) {\n // assign docBeingAccessed first as the promise to avoid multiple calls to getEntityDoc\n docBeingAccessed = getEntityDoc().then((doc) => {\n docBeingAccessed = doc\n })\n }\n // awaiting the promise to ensure docBeingAccessed is assigned before it is used\n await docBeingAccessed\n\n // https://payloadcms.slack.com/archives/C048Z9C2BEX/p1702054928343769\n const accessResult = await access({ id, data, doc: docBeingAccessed, req })\n\n if (typeof accessResult === 'object' && !disableWhere) {\n mutablePolicies[operation] = {\n permission:\n id || type === 'global' ? !!(await getEntityDoc({ where: accessResult })) : true,\n where: accessResult,\n }\n } else if (mutablePolicies[operation]?.permission !== false) {\n mutablePolicies[operation] = {\n permission: !!accessResult,\n }\n }\n }\n\n const executeFieldPolicies = async ({ entityPermission, fields, operation, policiesObj }) => {\n const mutablePolicies = policiesObj.fields\n\n await Promise.all(\n fields.map(async (field) => {\n if (field.name) {\n if (!mutablePolicies[field.name]) mutablePolicies[field.name] = {}\n\n if (field.access && typeof field.access[operation] === 'function') {\n await createAccessPromise({\n access: field.access[operation],\n accessLevel: 'field',\n disableWhere: true,\n operation,\n policiesObj: mutablePolicies[field.name],\n })\n } else {\n mutablePolicies[field.name][operation] = {\n permission: policiesObj[operation]?.permission,\n }\n }\n\n if (field.fields) {\n if (!mutablePolicies[field.name].fields) mutablePolicies[field.name].fields = {}\n\n await executeFieldPolicies({\n entityPermission,\n fields: field.fields,\n operation,\n policiesObj: mutablePolicies[field.name],\n })\n }\n\n if (field?.blocks) {\n if (!mutablePolicies[field.name]?.blocks) mutablePolicies[field.name].blocks = {}\n\n await Promise.all(\n field.blocks.map(async (block) => {\n if (!mutablePolicies[field.name].blocks?.[block.slug]) {\n mutablePolicies[field.name].blocks[block.slug] = {\n fields: {},\n [operation]: { permission: entityPermission },\n }\n } else if (!mutablePolicies[field.name].blocks[block.slug][operation]) {\n mutablePolicies[field.name].blocks[block.slug][operation] = {\n permission: entityPermission,\n }\n }\n\n await executeFieldPolicies({\n entityPermission,\n fields: block.fields,\n operation,\n policiesObj: mutablePolicies[field.name].blocks[block.slug],\n })\n }),\n )\n }\n } else if (field.fields) {\n await executeFieldPolicies({\n entityPermission,\n fields: field.fields,\n operation,\n policiesObj,\n })\n } else if (field.type === 'tabs') {\n await Promise.all(\n field.tabs.map(async (tab) => {\n if (tabHasName(tab)) {\n if (!mutablePolicies[tab.name]) {\n mutablePolicies[tab.name] = {\n fields: {},\n [operation]: { permission: entityPermission },\n }\n } else if (!mutablePolicies[tab.name][operation]) {\n mutablePolicies[tab.name][operation] = { permission: entityPermission }\n }\n await executeFieldPolicies({\n entityPermission,\n fields: tab.fields,\n operation,\n policiesObj: mutablePolicies[tab.name],\n })\n } else {\n await executeFieldPolicies({\n entityPermission,\n fields: tab.fields,\n operation,\n policiesObj,\n })\n }\n }),\n )\n }\n }),\n )\n }\n\n await operations.reduce(async (priorOperation, operation) => {\n await priorOperation\n\n let entityAccessPromise: Promise<void>\n\n if (typeof entity.access[operation] === 'function') {\n entityAccessPromise = createAccessPromise({\n access: entity.access[operation],\n accessLevel: 'entity',\n operation,\n policiesObj: policies,\n })\n } else {\n policies[operation] = {\n permission: isLoggedIn,\n }\n }\n\n await entityAccessPromise\n\n await executeFieldPolicies({\n entityPermission: policies[operation].permission,\n fields: entity.fields,\n operation,\n policiesObj: policies,\n })\n }, Promise.resolve())\n\n return policies\n}\n"],"names":["tabHasName","getEntityPolicies","args","id","type","entity","operations","req","data","payload","user","isLoggedIn","policies","fields","docBeingAccessed","getEntityDoc","where","slug","findGlobal","overrideAccess","paginatedRes","find","collection","depth","limit","pagination","and","equals","docs","undefined","findByID","createAccessPromise","access","accessLevel","disableWhere","operation","policiesObj","mutablePolicies","then","doc","accessResult","permission","executeFieldPolicies","entityPermission","Promise","all","map","field","name","blocks","block","tabs","tab","reduce","priorOperation","entityAccessPromise","resolve"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../src/utilities/getEntityPolicies.ts"],"sourcesContent":["import type { CollectionPermission, GlobalPermission } from '../auth/types.js'\nimport type { SanitizedCollectionConfig, TypeWithID } from '../collections/config/types.js'\nimport type { Access } from '../config/types.js'\nimport type { FieldAccess } from '../fields/config/types.js'\nimport type { SanitizedGlobalConfig } from '../globals/config/types.js'\nimport type { AllOperations, Document, PayloadRequestWithData, Where } from '../types/index.js'\n\nimport { tabHasName } from '../fields/config/types.js'\n\ntype Args = {\n entity: SanitizedCollectionConfig | SanitizedGlobalConfig\n id?: number | string\n operations: AllOperations[]\n req: PayloadRequestWithData\n type: 'collection' | 'global'\n}\n\ntype ReturnType<T extends Args> = T['type'] extends 'global'\n ? GlobalPermission\n : CollectionPermission\n\ntype CreateAccessPromise = (args: {\n access: Access | FieldAccess\n accessLevel: 'entity' | 'field'\n disableWhere?: boolean\n operation: AllOperations\n policiesObj: {\n [key: string]: any\n }\n}) => Promise<void>\n\nexport async function getEntityPolicies<T extends Args>(args: T): Promise<ReturnType<T>> {\n const { id, type, entity, operations, req } = args\n const { data, payload, user } = req\n const isLoggedIn = !!user\n\n const policies = {\n fields: {},\n } as ReturnType<T>\n\n let docBeingAccessed\n\n async function getEntityDoc({ where }: { where?: Where } = {}): Promise<TypeWithID & Document> {\n if (entity.slug) {\n if (type === 'global') {\n return payload.findGlobal({\n slug: entity.slug,\n overrideAccess: true,\n req,\n })\n }\n\n if (type === 'collection' && id) {\n if (typeof where === 'object') {\n const paginatedRes = await payload.find({\n collection: entity.slug,\n depth: 0,\n limit: 1,\n overrideAccess: true,\n pagination: false,\n req,\n where: {\n ...where,\n and: [\n ...(where.and || []),\n {\n id: {\n equals: id,\n },\n },\n ],\n },\n })\n\n return paginatedRes?.docs?.[0] || undefined\n }\n\n return payload.findByID({\n id,\n collection: entity.slug,\n depth: 0,\n overrideAccess: true,\n req,\n })\n }\n }\n\n return undefined\n }\n\n const createAccessPromise: CreateAccessPromise = async ({\n access,\n accessLevel,\n disableWhere = false,\n operation,\n policiesObj,\n }) => {\n const mutablePolicies = policiesObj\n\n if (accessLevel === 'field' && docBeingAccessed === undefined) {\n // assign docBeingAccessed first as the promise to avoid multiple calls to getEntityDoc\n docBeingAccessed = getEntityDoc().then((doc) => {\n docBeingAccessed = doc\n })\n }\n // awaiting the promise to ensure docBeingAccessed is assigned before it is used\n await docBeingAccessed\n\n // https://payloadcms.slack.com/archives/C048Z9C2BEX/p1702054928343769\n const accessResult = await access({ id, data, doc: docBeingAccessed, req })\n\n if (typeof accessResult === 'object' && !disableWhere) {\n mutablePolicies[operation] = {\n permission:\n id || type === 'global' ? !!(await getEntityDoc({ where: accessResult })) : true,\n where: accessResult,\n }\n } else if (mutablePolicies[operation]?.permission !== false) {\n mutablePolicies[operation] = {\n permission: !!accessResult,\n }\n }\n }\n\n const executeFieldPolicies = async ({ entityPermission, fields, operation, policiesObj }) => {\n const mutablePolicies = policiesObj.fields\n\n await Promise.all(\n fields.map(async (field) => {\n if (field.name) {\n if (!mutablePolicies[field.name]) mutablePolicies[field.name] = {}\n\n if (field.access && typeof field.access[operation] === 'function') {\n await createAccessPromise({\n access: field.access[operation],\n accessLevel: 'field',\n disableWhere: true,\n operation,\n policiesObj: mutablePolicies[field.name],\n })\n } else {\n mutablePolicies[field.name][operation] = {\n permission: policiesObj[operation]?.permission,\n }\n }\n\n if (field.fields) {\n if (!mutablePolicies[field.name].fields) mutablePolicies[field.name].fields = {}\n\n await executeFieldPolicies({\n entityPermission,\n fields: field.fields,\n operation,\n policiesObj: mutablePolicies[field.name],\n })\n }\n\n if (field?.blocks) {\n if (!mutablePolicies[field.name]?.blocks) mutablePolicies[field.name].blocks = {}\n\n await Promise.all(\n field.blocks.map(async (block) => {\n if (!mutablePolicies[field.name].blocks?.[block.slug]) {\n mutablePolicies[field.name].blocks[block.slug] = {\n fields: {},\n [operation]: { permission: entityPermission },\n }\n } else if (!mutablePolicies[field.name].blocks[block.slug][operation]) {\n mutablePolicies[field.name].blocks[block.slug][operation] = {\n permission: entityPermission,\n }\n }\n\n await executeFieldPolicies({\n entityPermission,\n fields: block.fields,\n operation,\n policiesObj: mutablePolicies[field.name].blocks[block.slug],\n })\n }),\n )\n }\n } else if (field.fields) {\n await executeFieldPolicies({\n entityPermission,\n fields: field.fields,\n operation,\n policiesObj,\n })\n } else if (field.type === 'tabs') {\n await Promise.all(\n field.tabs.map(async (tab) => {\n if (tabHasName(tab)) {\n if (!mutablePolicies[tab.name]) {\n mutablePolicies[tab.name] = {\n fields: {},\n [operation]: { permission: entityPermission },\n }\n } else if (!mutablePolicies[tab.name][operation]) {\n mutablePolicies[tab.name][operation] = { permission: entityPermission }\n }\n await executeFieldPolicies({\n entityPermission,\n fields: tab.fields,\n operation,\n policiesObj: mutablePolicies[tab.name],\n })\n } else {\n await executeFieldPolicies({\n entityPermission,\n fields: tab.fields,\n operation,\n policiesObj,\n })\n }\n }),\n )\n }\n }),\n )\n }\n\n await operations.reduce(async (priorOperation, operation) => {\n await priorOperation\n\n let entityAccessPromise: Promise<void>\n\n if (typeof entity.access[operation] === 'function') {\n entityAccessPromise = createAccessPromise({\n access: entity.access[operation],\n accessLevel: 'entity',\n operation,\n policiesObj: policies,\n })\n } else {\n policies[operation] = {\n permission: isLoggedIn,\n }\n }\n\n await entityAccessPromise\n\n await executeFieldPolicies({\n entityPermission: policies[operation].permission,\n fields: entity.fields,\n operation,\n policiesObj: policies,\n })\n }, Promise.resolve())\n\n return policies\n}\n"],"names":["tabHasName","getEntityPolicies","args","id","type","entity","operations","req","data","payload","user","isLoggedIn","policies","fields","docBeingAccessed","getEntityDoc","where","slug","findGlobal","overrideAccess","paginatedRes","find","collection","depth","limit","pagination","and","equals","docs","undefined","findByID","createAccessPromise","access","accessLevel","disableWhere","operation","policiesObj","mutablePolicies","then","doc","accessResult","permission","executeFieldPolicies","entityPermission","Promise","all","map","field","name","blocks","block","tabs","tab","reduce","priorOperation","entityAccessPromise","resolve"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"importWithoutClientFiles.d.ts","sourceRoot":"","sources":["../../src/utilities/importWithoutClientFiles.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAKzD,eAAO,MAAM,wBAAwB,0BAAiC,MAAM,eAM3E,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,eAAsB,MAAM,6BAcpD,CAAA"}
1
+ {"version":3,"file":"importWithoutClientFiles.d.ts","sourceRoot":"","sources":["../../src/utilities/importWithoutClientFiles.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAOzD,eAAO,MAAM,wBAAwB,0BAAiC,MAAM,eAO3E,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,eAAsB,MAAM,6BAoBpD,CAAA"}
@@ -1,23 +1,29 @@
1
1
  import { register } from 'node:module';
2
- import { fileURLToPath, pathToFileURL } from 'node:url';
2
+ import { URL, fileURLToPath, pathToFileURL } from 'node:url';
3
3
  import path from 'path';
4
+ import { loadEnv } from '../bin/loadEnv.js';
4
5
  const filename = fileURLToPath(import.meta.url);
5
6
  const dirname = path.dirname(filename);
6
7
  export const importWithoutClientFiles = async (filePath)=>{
7
- const url = pathToFileURL(filePath).toString();
8
- register(path.resolve(dirname, '../../dist/bin/loader/index.js'), url);
8
+ const { href: filePathUrl } = pathToFileURL(filePath);
9
+ const { href: loaderUrl } = pathToFileURL(path.resolve(dirname, '../../dist/bin/loader/index.js'));
10
+ register(loaderUrl, filePathUrl);
9
11
  const result = await import(filePath);
10
12
  return result;
11
13
  };
12
14
  /**
13
15
  * Resolve and load Payload config from either a relative or absolute path
14
16
  */ export const importConfig = async (configPath)=>{
17
+ loadEnv() // loadConfig would usually be run outside of next. This means they will not get next's automatic env loading here. In order to not force them to install dotenv and set it up manually, we can load the env for them here
18
+ ;
15
19
  const isAbsolutePath = path.isAbsolute(configPath);
16
20
  if (isAbsolutePath) {
17
21
  const config = await importWithoutClientFiles(configPath);
18
22
  return await config.default;
19
23
  }
20
- const callerDir = path.dirname(getCallerInfo()[1].getFileName()).replace('file://', '');
24
+ const callerFilename = getCallerInfo()[1].getFileName();
25
+ const url = new URL(callerFilename);
26
+ const callerDir = path.dirname(fileURLToPath(url));
21
27
  const fullConfigPath = path.resolve(callerDir, configPath);
22
28
  const config = await importWithoutClientFiles(fullConfigPath);
23
29
  return await config.default;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utilities/importWithoutClientFiles.ts"],"sourcesContent":["import { register } from 'node:module'\nimport { fileURLToPath, pathToFileURL } from 'node:url'\nimport path from 'path'\n\nimport type { SanitizedConfig } from '../config/types.js'\n\nconst filename = fileURLToPath(import.meta.url)\nconst dirname = path.dirname(filename)\n\nexport const importWithoutClientFiles = async <T = unknown>(filePath: string) => {\n const url = pathToFileURL(filePath).toString()\n\n register(path.resolve(dirname, '../../dist/bin/loader/index.js'), url)\n const result = await import(filePath)\n return result as T\n}\n\n/**\n * Resolve and load Payload config from either a relative or absolute path\n */\nexport const importConfig = async (configPath: string) => {\n const isAbsolutePath = path.isAbsolute(configPath)\n if (isAbsolutePath) {\n const config = await importWithoutClientFiles<{ default: Promise<SanitizedConfig> }>(configPath)\n return await config.default\n }\n\n const callerDir = path.dirname(getCallerInfo()[1].getFileName()).replace('file://', '')\n const fullConfigPath = path.resolve(callerDir, configPath)\n\n const config = await importWithoutClientFiles<{ default: Promise<SanitizedConfig> }>(\n fullConfigPath,\n )\n return await config.default\n}\n\nconst getCallerInfo = () => {\n const _prepareStackTrace = Error.prepareStackTrace\n try {\n let result = []\n Error.prepareStackTrace = (_, callSites) => {\n const callSitesWithoutCurrent = callSites.slice(1)\n result = callSitesWithoutCurrent\n return callSitesWithoutCurrent\n }\n\n new Error().stack\n return result\n } finally {\n Error.prepareStackTrace = _prepareStackTrace\n }\n}\n"],"names":["register","fileURLToPath","pathToFileURL","path","filename","url","dirname","importWithoutClientFiles","filePath","toString","resolve","result","importConfig","configPath","isAbsolutePath","isAbsolute","config","default","callerDir","getCallerInfo","getFileName","replace","fullConfigPath","_prepareStackTrace","Error","prepareStackTrace","_","callSites","callSitesWithoutCurrent","slice","stack"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,QAAQ,QAAQ,cAAa;AACtC,SAASC,aAAa,EAAEC,aAAa,QAAQ,WAAU;AACvD,OAAOC,UAAU,OAAM;AAIvB,MAAMC,WAAWH,cAAc,YAAYI,GAAG;AAC9C,MAAMC,UAAUH,KAAKG,OAAO,CAACF;AAE7B,OAAO,MAAMG,2BAA2B,OAAoBC;IAC1D,MAAMH,MAAMH,cAAcM,UAAUC,QAAQ;IAE5CT,SAASG,KAAKO,OAAO,CAACJ,SAAS,mCAAmCD;IAClE,MAAMM,SAAS,MAAM,MAAM,CAACH;IAC5B,OAAOG;AACT,EAAC;AAED;;CAEC,GACD,OAAO,MAAMC,eAAe,OAAOC;IACjC,MAAMC,iBAAiBX,KAAKY,UAAU,CAACF;IACvC,IAAIC,gBAAgB;QAClB,MAAME,SAAS,MAAMT,yBAAgEM;QACrF,OAAO,MAAMG,OAAOC,OAAO;IAC7B;IAEA,MAAMC,YAAYf,KAAKG,OAAO,CAACa,eAAe,CAAC,EAAE,CAACC,WAAW,IAAIC,OAAO,CAAC,WAAW;IACpF,MAAMC,iBAAiBnB,KAAKO,OAAO,CAACQ,WAAWL;IAE/C,MAAMG,SAAS,MAAMT,yBACnBe;IAEF,OAAO,MAAMN,OAAOC,OAAO;AAC7B,EAAC;AAED,MAAME,gBAAgB;IACpB,MAAMI,qBAAqBC,MAAMC,iBAAiB;IAClD,IAAI;QACF,IAAId,SAAS,EAAE;QACfa,MAAMC,iBAAiB,GAAG,CAACC,GAAGC;YAC5B,MAAMC,0BAA0BD,UAAUE,KAAK,CAAC;YAChDlB,SAASiB;YACT,OAAOA;QACT;QAEA,IAAIJ,QAAQM,KAAK;QACjB,OAAOnB;IACT,SAAU;QACRa,MAAMC,iBAAiB,GAAGF;IAC5B;AACF"}
1
+ {"version":3,"sources":["../../src/utilities/importWithoutClientFiles.ts"],"sourcesContent":["import { register } from 'node:module'\nimport { URL, fileURLToPath, pathToFileURL } from 'node:url'\nimport path from 'path'\n\nimport type { SanitizedConfig } from '../config/types.js'\n\nimport { loadEnv } from '../bin/loadEnv.js'\n\nconst filename = fileURLToPath(import.meta.url)\nconst dirname = path.dirname(filename)\n\nexport const importWithoutClientFiles = async <T = unknown>(filePath: string) => {\n const { href: filePathUrl } = pathToFileURL(filePath)\n const { href: loaderUrl } = pathToFileURL(path.resolve(dirname, '../../dist/bin/loader/index.js'))\n\n register(loaderUrl, filePathUrl)\n const result = await import(filePath)\n return result as T\n}\n\n/**\n * Resolve and load Payload config from either a relative or absolute path\n */\nexport const importConfig = async (configPath: string) => {\n loadEnv() // loadConfig would usually be run outside of next. This means they will not get next's automatic env loading here. In order to not force them to install dotenv and set it up manually, we can load the env for them here\n const isAbsolutePath = path.isAbsolute(configPath)\n if (isAbsolutePath) {\n const config = await importWithoutClientFiles<{ default: Promise<SanitizedConfig> }>(configPath)\n return await config.default\n }\n\n const callerFilename = getCallerInfo()[1].getFileName()\n\n const url = new URL(callerFilename)\n\n const callerDir = path.dirname(fileURLToPath(url))\n\n const fullConfigPath = path.resolve(callerDir, configPath)\n\n const config = await importWithoutClientFiles<{ default: Promise<SanitizedConfig> }>(\n fullConfigPath,\n )\n return await config.default\n}\n\nconst getCallerInfo = () => {\n const _prepareStackTrace = Error.prepareStackTrace\n try {\n let result = []\n Error.prepareStackTrace = (_, callSites) => {\n const callSitesWithoutCurrent = callSites.slice(1)\n result = callSitesWithoutCurrent\n return callSitesWithoutCurrent\n }\n\n new Error().stack\n return result\n } finally {\n Error.prepareStackTrace = _prepareStackTrace\n }\n}\n"],"names":["register","URL","fileURLToPath","pathToFileURL","path","loadEnv","filename","url","dirname","importWithoutClientFiles","filePath","href","filePathUrl","loaderUrl","resolve","result","importConfig","configPath","isAbsolutePath","isAbsolute","config","default","callerFilename","getCallerInfo","getFileName","callerDir","fullConfigPath","_prepareStackTrace","Error","prepareStackTrace","_","callSites","callSitesWithoutCurrent","slice","stack"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,QAAQ,QAAQ,cAAa;AACtC,SAASC,GAAG,EAAEC,aAAa,EAAEC,aAAa,QAAQ,WAAU;AAC5D,OAAOC,UAAU,OAAM;AAIvB,SAASC,OAAO,QAAQ,oBAAmB;AAE3C,MAAMC,WAAWJ,cAAc,YAAYK,GAAG;AAC9C,MAAMC,UAAUJ,KAAKI,OAAO,CAACF;AAE7B,OAAO,MAAMG,2BAA2B,OAAoBC;IAC1D,MAAM,EAAEC,MAAMC,WAAW,EAAE,GAAGT,cAAcO;IAC5C,MAAM,EAAEC,MAAME,SAAS,EAAE,GAAGV,cAAcC,KAAKU,OAAO,CAACN,SAAS;IAEhER,SAASa,WAAWD;IACpB,MAAMG,SAAS,MAAM,MAAM,CAACL;IAC5B,OAAOK;AACT,EAAC;AAED;;CAEC,GACD,OAAO,MAAMC,eAAe,OAAOC;IACjCZ,UAAU,0NAA0N;;IACpO,MAAMa,iBAAiBd,KAAKe,UAAU,CAACF;IACvC,IAAIC,gBAAgB;QAClB,MAAME,SAAS,MAAMX,yBAAgEQ;QACrF,OAAO,MAAMG,OAAOC,OAAO;IAC7B;IAEA,MAAMC,iBAAiBC,eAAe,CAAC,EAAE,CAACC,WAAW;IAErD,MAAMjB,MAAM,IAAIN,IAAIqB;IAEpB,MAAMG,YAAYrB,KAAKI,OAAO,CAACN,cAAcK;IAE7C,MAAMmB,iBAAiBtB,KAAKU,OAAO,CAACW,WAAWR;IAE/C,MAAMG,SAAS,MAAMX,yBACnBiB;IAEF,OAAO,MAAMN,OAAOC,OAAO;AAC7B,EAAC;AAED,MAAME,gBAAgB;IACpB,MAAMI,qBAAqBC,MAAMC,iBAAiB;IAClD,IAAI;QACF,IAAId,SAAS,EAAE;QACfa,MAAMC,iBAAiB,GAAG,CAACC,GAAGC;YAC5B,MAAMC,0BAA0BD,UAAUE,KAAK,CAAC;YAChDlB,SAASiB;YACT,OAAOA;QACT;QAEA,IAAIJ,QAAQM,KAAK;QACjB,OAAOnB;IACT,SAAU;QACRa,MAAMC,iBAAiB,GAAGF;IAC5B;AACF"}
@@ -1,7 +1,7 @@
1
- import type { PayloadRequest } from '../types/index.js';
1
+ import type { PayloadRequestWithData } from '../types/index.js';
2
2
  /**
3
3
  * Starts a new transaction using the db adapter with a random id and then assigns it to the req.transaction
4
4
  * @returns true if beginning a transaction and false when req already has a transaction to use
5
5
  */
6
- export declare function initTransaction(req: PayloadRequest): Promise<boolean>;
6
+ export declare function initTransaction(req: PayloadRequestWithData): Promise<boolean>;
7
7
  //# sourceMappingURL=initTransaction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"initTransaction.d.ts","sourceRoot":"","sources":["../../src/utilities/initTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAEvD;;;GAGG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAuB3E"}
1
+ {"version":3,"file":"initTransaction.d.ts","sourceRoot":"","sources":["../../src/utilities/initTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAE/D;;;GAGG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,sBAAsB,GAAG,OAAO,CAAC,OAAO,CAAC,CAuBnF"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utilities/initTransaction.ts"],"sourcesContent":["import type { PayloadRequest } from '../types/index.js'\n\n/**\n * Starts a new transaction using the db adapter with a random id and then assigns it to the req.transaction\n * @returns true if beginning a transaction and false when req already has a transaction to use\n */\nexport async function initTransaction(req: PayloadRequest): Promise<boolean> {\n const { payload, transactionID, transactionIDPromise } = req\n if (transactionID) {\n // we already have a transaction, we're not in charge of committing it\n return false\n }\n if (transactionIDPromise) {\n // wait for whoever else is already creating the transaction\n await transactionIDPromise\n return false\n }\n if (typeof payload.db.beginTransaction === 'function') {\n // create a new transaction\n req.transactionIDPromise = payload.db.beginTransaction().then((transactionID) => {\n if (transactionID) {\n req.transactionID = transactionID\n }\n delete req.transactionIDPromise\n })\n await req.transactionIDPromise\n return !!req.transactionID\n }\n return false\n}\n"],"names":["initTransaction","req","payload","transactionID","transactionIDPromise","db","beginTransaction","then"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAEA;;;CAGC,GACD,OAAO,eAAeA,gBAAgBC,GAAmB;IACvD,MAAM,EAAEC,OAAO,EAAEC,aAAa,EAAEC,oBAAoB,EAAE,GAAGH;IACzD,IAAIE,eAAe;QACjB,sEAAsE;QACtE,OAAO;IACT;IACA,IAAIC,sBAAsB;QACxB,4DAA4D;QAC5D,MAAMA;QACN,OAAO;IACT;IACA,IAAI,OAAOF,QAAQG,EAAE,CAACC,gBAAgB,KAAK,YAAY;QACrD,2BAA2B;QAC3BL,IAAIG,oBAAoB,GAAGF,QAAQG,EAAE,CAACC,gBAAgB,GAAGC,IAAI,CAAC,CAACJ;YAC7D,IAAIA,eAAe;gBACjBF,IAAIE,aAAa,GAAGA;YACtB;YACA,OAAOF,IAAIG,oBAAoB;QACjC;QACA,MAAMH,IAAIG,oBAAoB;QAC9B,OAAO,CAAC,CAACH,IAAIE,aAAa;IAC5B;IACA,OAAO;AACT"}
1
+ {"version":3,"sources":["../../src/utilities/initTransaction.ts"],"sourcesContent":["import type { PayloadRequestWithData } from '../types/index.js'\n\n/**\n * Starts a new transaction using the db adapter with a random id and then assigns it to the req.transaction\n * @returns true if beginning a transaction and false when req already has a transaction to use\n */\nexport async function initTransaction(req: PayloadRequestWithData): Promise<boolean> {\n const { payload, transactionID, transactionIDPromise } = req\n if (transactionID) {\n // we already have a transaction, we're not in charge of committing it\n return false\n }\n if (transactionIDPromise) {\n // wait for whoever else is already creating the transaction\n await transactionIDPromise\n return false\n }\n if (typeof payload.db.beginTransaction === 'function') {\n // create a new transaction\n req.transactionIDPromise = payload.db.beginTransaction().then((transactionID) => {\n if (transactionID) {\n req.transactionID = transactionID\n }\n delete req.transactionIDPromise\n })\n await req.transactionIDPromise\n return !!req.transactionID\n }\n return false\n}\n"],"names":["initTransaction","req","payload","transactionID","transactionIDPromise","db","beginTransaction","then"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAEA;;;CAGC,GACD,OAAO,eAAeA,gBAAgBC,GAA2B;IAC/D,MAAM,EAAEC,OAAO,EAAEC,aAAa,EAAEC,oBAAoB,EAAE,GAAGH;IACzD,IAAIE,eAAe;QACjB,sEAAsE;QACtE,OAAO;IACT;IACA,IAAIC,sBAAsB;QACxB,4DAA4D;QAC5D,MAAMA;QACN,OAAO;IACT;IACA,IAAI,OAAOF,QAAQG,EAAE,CAACC,gBAAgB,KAAK,YAAY;QACrD,2BAA2B;QAC3BL,IAAIG,oBAAoB,GAAGF,QAAQG,EAAE,CAACC,gBAAgB,GAAGC,IAAI,CAAC,CAACJ;YAC7D,IAAIA,eAAe;gBACjBF,IAAIE,aAAa,GAAGA;YACtB;YACA,OAAOF,IAAIG,oBAAoB;QACjC;QACA,MAAMH,IAAIG,oBAAoB;QAC9B,OAAO,CAAC,CAACH,IAAIE,aAAa;IAC5B;IACA,OAAO;AACT"}
@@ -1,8 +1,8 @@
1
- import type { PayloadRequest } from 'payload/types';
2
1
  import type { SanitizedCollectionConfig } from '../collections/config/types.js';
3
2
  import type { SanitizedGlobalConfig } from '../globals/config/types.js';
3
+ import type { PayloadRequestWithData } from '../types/index.js';
4
4
  export declare const isEntityHidden: ({ hidden, user, }: {
5
5
  hidden: SanitizedCollectionConfig['admin']['hidden'] | SanitizedGlobalConfig['admin']['hidden'];
6
- user: PayloadRequest['user'];
6
+ user: PayloadRequestWithData['user'];
7
7
  }) => boolean;
8
8
  //# sourceMappingURL=isEntityHidden.d.ts.map