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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (541) hide show
  1. package/LICENSE.md +1 -1
  2. package/bin.js +11 -0
  3. package/dist/admin/RichText.d.ts +2 -2
  4. package/dist/admin/RichText.d.ts.map +1 -1
  5. package/dist/admin/RichText.js.map +1 -1
  6. package/dist/admin/adapters/devReload.d.ts +9 -0
  7. package/dist/admin/adapters/devReload.d.ts.map +1 -0
  8. package/dist/admin/adapters/devReload.js +6 -0
  9. package/dist/admin/adapters/devReload.js.map +1 -0
  10. package/dist/admin/adapters/index.d.ts +3 -0
  11. package/dist/admin/adapters/index.d.ts.map +1 -1
  12. package/dist/admin/adapters/index.js.map +1 -1
  13. package/dist/admin/adapters/render.d.ts +16 -0
  14. package/dist/admin/adapters/render.d.ts.map +1 -0
  15. package/dist/admin/adapters/render.js +7 -0
  16. package/dist/admin/adapters/render.js.map +1 -0
  17. package/dist/admin/adapters/views.d.ts +36 -0
  18. package/dist/admin/adapters/views.d.ts.map +1 -0
  19. package/dist/admin/adapters/views.js +7 -0
  20. package/dist/admin/adapters/views.js.map +1 -0
  21. package/dist/admin/fields/Row.d.ts +2 -2
  22. package/dist/admin/fields/Row.d.ts.map +1 -1
  23. package/dist/admin/fields/Row.js.map +1 -1
  24. package/dist/admin/forms/Description.d.ts +2 -2
  25. package/dist/admin/forms/Description.d.ts.map +1 -1
  26. package/dist/admin/forms/Description.js.map +1 -1
  27. package/dist/admin/forms/Field.d.ts +10 -5
  28. package/dist/admin/forms/Field.d.ts.map +1 -1
  29. package/dist/admin/forms/Field.js.map +1 -1
  30. package/dist/admin/functions/index.d.ts +10 -1
  31. package/dist/admin/functions/index.d.ts.map +1 -1
  32. package/dist/admin/functions/index.js.map +1 -1
  33. package/dist/admin/types.d.ts +3 -2
  34. package/dist/admin/types.d.ts.map +1 -1
  35. package/dist/admin/types.js.map +1 -1
  36. package/dist/admin/views/dashboard.d.ts +7 -0
  37. package/dist/admin/views/dashboard.d.ts.map +1 -1
  38. package/dist/admin/views/dashboard.js.map +1 -1
  39. package/dist/admin/views/document.d.ts +5 -3
  40. package/dist/admin/views/document.d.ts.map +1 -1
  41. package/dist/admin/views/document.js.map +1 -1
  42. package/dist/admin/views/list.d.ts +5 -0
  43. package/dist/admin/views/list.d.ts.map +1 -1
  44. package/dist/admin/views/list.js.map +1 -1
  45. package/dist/auth/baseFields/apiKey.d.ts +10 -2
  46. package/dist/auth/baseFields/apiKey.d.ts.map +1 -1
  47. package/dist/auth/baseFields/apiKey.js +35 -24
  48. package/dist/auth/baseFields/apiKey.js.map +1 -1
  49. package/dist/auth/defaultAccess.d.ts +1 -1
  50. package/dist/auth/defaultAccess.d.ts.map +1 -1
  51. package/dist/auth/defaultAccess.js +1 -1
  52. package/dist/auth/defaultAccess.js.map +1 -1
  53. package/dist/auth/defaultUser.d.ts.map +1 -1
  54. package/dist/auth/defaultUser.js +2 -1
  55. package/dist/auth/defaultUser.js.map +1 -1
  56. package/dist/auth/getAuthFields.js +2 -2
  57. package/dist/auth/getAuthFields.js.map +1 -1
  58. package/dist/auth/operations/auth.d.ts +2 -2
  59. package/dist/auth/operations/auth.d.ts.map +1 -1
  60. package/dist/auth/operations/auth.js.map +1 -1
  61. package/dist/auth/operations/login.d.ts +2 -1
  62. package/dist/auth/operations/login.d.ts.map +1 -1
  63. package/dist/auth/operations/login.js.map +1 -1
  64. package/dist/auth/operations/me.js.map +1 -1
  65. package/dist/auth/operations/refresh.d.ts.map +1 -1
  66. package/dist/auth/operations/refresh.js +9 -3
  67. package/dist/auth/operations/refresh.js.map +1 -1
  68. package/dist/auth/operations/resetPassword.d.ts.map +1 -1
  69. package/dist/auth/operations/resetPassword.js.map +1 -1
  70. package/dist/auth/sendVerificationEmail.d.ts +2 -2
  71. package/dist/auth/sendVerificationEmail.d.ts.map +1 -1
  72. package/dist/auth/sendVerificationEmail.js +1 -1
  73. package/dist/auth/sendVerificationEmail.js.map +1 -1
  74. package/dist/auth/sessions.d.ts +4 -5
  75. package/dist/auth/sessions.d.ts.map +1 -1
  76. package/dist/auth/sessions.js +5 -3
  77. package/dist/auth/sessions.js.map +1 -1
  78. package/dist/auth/strategies/apiKey.js.map +1 -1
  79. package/dist/auth/strategies/local/incrementLoginAttempts.d.ts +2 -2
  80. package/dist/auth/strategies/local/incrementLoginAttempts.d.ts.map +1 -1
  81. package/dist/auth/strategies/local/incrementLoginAttempts.js +1 -1
  82. package/dist/auth/strategies/local/incrementLoginAttempts.js.map +1 -1
  83. package/dist/auth/types.d.ts +28 -21
  84. package/dist/auth/types.d.ts.map +1 -1
  85. package/dist/auth/types.js.map +1 -1
  86. package/dist/bin/build.d.ts +25 -0
  87. package/dist/bin/build.d.ts.map +1 -0
  88. package/dist/bin/build.js +80 -0
  89. package/dist/bin/build.js.map +1 -0
  90. package/dist/bin/build.spec.js +170 -0
  91. package/dist/bin/build.spec.js.map +1 -0
  92. package/dist/bin/generateImportMap/index.d.ts.map +1 -1
  93. package/dist/bin/generateImportMap/index.js +8 -5
  94. package/dist/bin/generateImportMap/index.js.map +1 -1
  95. package/dist/bin/generateImportMap/iterateCollections.d.ts.map +1 -1
  96. package/dist/bin/generateImportMap/iterateCollections.js +11 -0
  97. package/dist/bin/generateImportMap/iterateCollections.js.map +1 -1
  98. package/dist/bin/generateImportMap/iterateConfig.d.ts.map +1 -1
  99. package/dist/bin/generateImportMap/iterateConfig.js +12 -0
  100. package/dist/bin/generateImportMap/iterateConfig.js.map +1 -1
  101. package/dist/bin/generateImportMap/utilities/resolveImportMapFilePath.d.ts +5 -1
  102. package/dist/bin/generateImportMap/utilities/resolveImportMapFilePath.d.ts.map +1 -1
  103. package/dist/bin/generateImportMap/utilities/resolveImportMapFilePath.js +32 -18
  104. package/dist/bin/generateImportMap/utilities/resolveImportMapFilePath.js.map +1 -1
  105. package/dist/bin/generateTypes.d.ts +3 -2
  106. package/dist/bin/generateTypes.d.ts.map +1 -1
  107. package/dist/bin/generateTypes.js +4 -0
  108. package/dist/bin/generateTypes.js.map +1 -1
  109. package/dist/bin/index.d.ts.map +1 -1
  110. package/dist/bin/index.js +9 -0
  111. package/dist/bin/index.js.map +1 -1
  112. package/dist/bin/loadEnv.d.ts +3 -1
  113. package/dist/bin/loadEnv.d.ts.map +1 -1
  114. package/dist/bin/loadEnv.js +40 -10
  115. package/dist/bin/loadEnv.js.map +1 -1
  116. package/dist/collections/config/client.d.ts +1 -1
  117. package/dist/collections/config/client.d.ts.map +1 -1
  118. package/dist/collections/config/client.js +1 -0
  119. package/dist/collections/config/client.js.map +1 -1
  120. package/dist/collections/config/defaults.d.ts +0 -4
  121. package/dist/collections/config/defaults.d.ts.map +1 -1
  122. package/dist/collections/config/defaults.js +2 -17
  123. package/dist/collections/config/defaults.js.map +1 -1
  124. package/dist/collections/config/defaults.spec.js +47 -0
  125. package/dist/collections/config/defaults.spec.js.map +1 -0
  126. package/dist/collections/config/sanitize.d.ts.map +1 -1
  127. package/dist/collections/config/sanitize.js +1 -11
  128. package/dist/collections/config/sanitize.js.map +1 -1
  129. package/dist/collections/config/types.d.ts +11 -7
  130. package/dist/collections/config/types.d.ts.map +1 -1
  131. package/dist/collections/config/types.js.map +1 -1
  132. package/dist/collections/endpoints/create.d.ts.map +1 -1
  133. package/dist/collections/endpoints/create.js +0 -2
  134. package/dist/collections/endpoints/create.js.map +1 -1
  135. package/dist/collections/endpoints/updateByID.d.ts.map +1 -1
  136. package/dist/collections/endpoints/updateByID.js +1 -2
  137. package/dist/collections/endpoints/updateByID.js.map +1 -1
  138. package/dist/collections/operations/count.d.ts.map +1 -1
  139. package/dist/collections/operations/count.js +1 -0
  140. package/dist/collections/operations/count.js.map +1 -1
  141. package/dist/collections/operations/create.d.ts +0 -1
  142. package/dist/collections/operations/create.d.ts.map +1 -1
  143. package/dist/collections/operations/create.js +15 -6
  144. package/dist/collections/operations/create.js.map +1 -1
  145. package/dist/collections/operations/delete.d.ts.map +1 -1
  146. package/dist/collections/operations/delete.js +3 -0
  147. package/dist/collections/operations/delete.js.map +1 -1
  148. package/dist/collections/operations/findDistinct.d.ts.map +1 -1
  149. package/dist/collections/operations/findDistinct.js +1 -0
  150. package/dist/collections/operations/findDistinct.js.map +1 -1
  151. package/dist/collections/operations/local/count.d.ts +3 -3
  152. package/dist/collections/operations/local/count.d.ts.map +1 -1
  153. package/dist/collections/operations/local/count.js.map +1 -1
  154. package/dist/collections/operations/local/countVersions.d.ts +3 -3
  155. package/dist/collections/operations/local/countVersions.d.ts.map +1 -1
  156. package/dist/collections/operations/local/countVersions.js.map +1 -1
  157. package/dist/collections/operations/local/create.d.ts +3 -3
  158. package/dist/collections/operations/local/create.d.ts.map +1 -1
  159. package/dist/collections/operations/local/create.js.map +1 -1
  160. package/dist/collections/operations/local/delete.d.ts +3 -3
  161. package/dist/collections/operations/local/delete.d.ts.map +1 -1
  162. package/dist/collections/operations/local/delete.js.map +1 -1
  163. package/dist/collections/operations/local/duplicate.d.ts +3 -3
  164. package/dist/collections/operations/local/duplicate.d.ts.map +1 -1
  165. package/dist/collections/operations/local/duplicate.js.map +1 -1
  166. package/dist/collections/operations/local/find.d.ts +3 -3
  167. package/dist/collections/operations/local/find.d.ts.map +1 -1
  168. package/dist/collections/operations/local/find.js.map +1 -1
  169. package/dist/collections/operations/local/findByID.d.ts +3 -3
  170. package/dist/collections/operations/local/findByID.d.ts.map +1 -1
  171. package/dist/collections/operations/local/findByID.js.map +1 -1
  172. package/dist/collections/operations/local/findDistinct.d.ts +2 -2
  173. package/dist/collections/operations/local/findDistinct.d.ts.map +1 -1
  174. package/dist/collections/operations/local/findDistinct.js.map +1 -1
  175. package/dist/collections/operations/local/findVersionByID.d.ts +3 -3
  176. package/dist/collections/operations/local/findVersionByID.d.ts.map +1 -1
  177. package/dist/collections/operations/local/findVersionByID.js.map +1 -1
  178. package/dist/collections/operations/local/findVersions.d.ts +3 -3
  179. package/dist/collections/operations/local/findVersions.d.ts.map +1 -1
  180. package/dist/collections/operations/local/findVersions.js.map +1 -1
  181. package/dist/collections/operations/local/restoreVersion.d.ts +3 -3
  182. package/dist/collections/operations/local/restoreVersion.d.ts.map +1 -1
  183. package/dist/collections/operations/local/restoreVersion.js.map +1 -1
  184. package/dist/collections/operations/local/update.d.ts +7 -11
  185. package/dist/collections/operations/local/update.d.ts.map +1 -1
  186. package/dist/collections/operations/local/update.js +1 -2
  187. package/dist/collections/operations/local/update.js.map +1 -1
  188. package/dist/collections/operations/update.d.ts +0 -1
  189. package/dist/collections/operations/update.d.ts.map +1 -1
  190. package/dist/collections/operations/update.js +8 -4
  191. package/dist/collections/operations/update.js.map +1 -1
  192. package/dist/collections/operations/updateByID.d.ts +0 -1
  193. package/dist/collections/operations/updateByID.d.ts.map +1 -1
  194. package/dist/collections/operations/updateByID.js +1 -5
  195. package/dist/collections/operations/updateByID.js.map +1 -1
  196. package/dist/collections/operations/utilities/copyDataWithFreshRowIDs.d.ts +9 -0
  197. package/dist/collections/operations/utilities/copyDataWithFreshRowIDs.d.ts.map +1 -0
  198. package/dist/collections/operations/utilities/copyDataWithFreshRowIDs.js +170 -0
  199. package/dist/collections/operations/utilities/copyDataWithFreshRowIDs.js.map +1 -0
  200. package/dist/collections/operations/utilities/types.d.ts +0 -9
  201. package/dist/collections/operations/utilities/types.d.ts.map +1 -1
  202. package/dist/collections/operations/utilities/types.js.map +1 -1
  203. package/dist/collections/operations/utilities/update.d.ts +1 -2
  204. package/dist/collections/operations/utilities/update.d.ts.map +1 -1
  205. package/dist/collections/operations/utilities/update.js +64 -65
  206. package/dist/collections/operations/utilities/update.js.map +1 -1
  207. package/dist/config/client.d.ts +2 -2
  208. package/dist/config/client.d.ts.map +1 -1
  209. package/dist/config/client.js.map +1 -1
  210. package/dist/config/defaults.d.ts +0 -4
  211. package/dist/config/defaults.d.ts.map +1 -1
  212. package/dist/config/defaults.js +0 -78
  213. package/dist/config/defaults.js.map +1 -1
  214. package/dist/config/definePlugin.d.ts +10 -10
  215. package/dist/config/definePlugin.d.ts.map +1 -1
  216. package/dist/config/definePlugin.js +7 -11
  217. package/dist/config/definePlugin.js.map +1 -1
  218. package/dist/config/orderable/index.d.ts.map +1 -1
  219. package/dist/config/orderable/index.js +23 -0
  220. package/dist/config/orderable/index.js.map +1 -1
  221. package/dist/config/sanitize.d.ts.map +1 -1
  222. package/dist/config/sanitize.js +137 -13
  223. package/dist/config/sanitize.js.map +1 -1
  224. package/dist/config/types.d.ts +57 -19
  225. package/dist/config/types.d.ts.map +1 -1
  226. package/dist/config/types.js +2 -0
  227. package/dist/config/types.js.map +1 -1
  228. package/dist/database/getLocalizedPaths.d.ts.map +1 -1
  229. package/dist/database/getLocalizedPaths.js +1 -1
  230. package/dist/database/getLocalizedPaths.js.map +1 -1
  231. package/dist/database/migrations/migrationsCollection.d.ts.map +1 -1
  232. package/dist/database/migrations/migrationsCollection.js +2 -1
  233. package/dist/database/migrations/migrationsCollection.js.map +1 -1
  234. package/dist/errors/ValidationError.d.ts +1 -0
  235. package/dist/errors/ValidationError.d.ts.map +1 -1
  236. package/dist/errors/ValidationError.js.map +1 -1
  237. package/dist/exports/internal.d.ts +1 -0
  238. package/dist/exports/internal.d.ts.map +1 -1
  239. package/dist/exports/internal.js +1 -0
  240. package/dist/exports/internal.js.map +1 -1
  241. package/dist/exports/migrations.d.ts +5 -13
  242. package/dist/exports/migrations.d.ts.map +1 -1
  243. package/dist/exports/migrations.js +5 -13
  244. package/dist/exports/migrations.js.map +1 -1
  245. package/dist/exports/shared.d.ts +23 -2
  246. package/dist/exports/shared.d.ts.map +1 -1
  247. package/dist/exports/shared.js +22 -1
  248. package/dist/exports/shared.js.map +1 -1
  249. package/dist/fields/baseFields/slug/countVersions.d.ts.map +1 -1
  250. package/dist/fields/baseFields/slug/countVersions.js +6 -8
  251. package/dist/fields/baseFields/slug/countVersions.js.map +1 -1
  252. package/dist/fields/baseFields/slug/generateSlug.d.ts +14 -7
  253. package/dist/fields/baseFields/slug/generateSlug.d.ts.map +1 -1
  254. package/dist/fields/baseFields/slug/generateSlug.js +53 -73
  255. package/dist/fields/baseFields/slug/generateSlug.js.map +1 -1
  256. package/dist/fields/baseFields/slug/types.d.ts +14 -0
  257. package/dist/fields/baseFields/slug/types.d.ts.map +1 -0
  258. package/dist/fields/baseFields/slug/types.js +6 -0
  259. package/dist/fields/baseFields/slug/types.js.map +1 -0
  260. package/dist/fields/config/client.d.ts +3 -3
  261. package/dist/fields/config/client.d.ts.map +1 -1
  262. package/dist/fields/config/client.js +13 -13
  263. package/dist/fields/config/client.js.map +1 -1
  264. package/dist/fields/config/sanitize.d.ts.map +1 -1
  265. package/dist/fields/config/sanitize.js +40 -4
  266. package/dist/fields/config/sanitize.js.map +1 -1
  267. package/dist/fields/config/types.d.ts +49 -28
  268. package/dist/fields/config/types.d.ts.map +1 -1
  269. package/dist/fields/config/types.js.map +1 -1
  270. package/dist/fields/hooks/afterChange/promise.js +1 -1
  271. package/dist/fields/hooks/afterChange/promise.js.map +1 -1
  272. package/dist/fields/hooks/afterRead/promise.d.ts.map +1 -1
  273. package/dist/fields/hooks/afterRead/promise.js +13 -3
  274. package/dist/fields/hooks/afterRead/promise.js.map +1 -1
  275. package/dist/fields/hooks/beforeChange/promise.d.ts.map +1 -1
  276. package/dist/fields/hooks/beforeChange/promise.js +3 -3
  277. package/dist/fields/hooks/beforeChange/promise.js.map +1 -1
  278. package/dist/fields/hooks/beforeDuplicate/promise.js +2 -2
  279. package/dist/fields/hooks/beforeDuplicate/promise.js.map +1 -1
  280. package/dist/fields/hooks/beforeValidate/promise.d.ts.map +1 -1
  281. package/dist/fields/hooks/beforeValidate/promise.js +11 -2
  282. package/dist/fields/hooks/beforeValidate/promise.js.map +1 -1
  283. package/dist/fields/setDefaultBeforeDuplicate.js +1 -0
  284. package/dist/fields/setDefaultBeforeDuplicate.js.map +1 -1
  285. package/dist/fields/sortableFieldTypes.d.ts.map +1 -1
  286. package/dist/fields/sortableFieldTypes.js +1 -0
  287. package/dist/fields/sortableFieldTypes.js.map +1 -1
  288. package/dist/fields/validations.d.ts +4 -1
  289. package/dist/fields/validations.d.ts.map +1 -1
  290. package/dist/fields/validations.js +12 -4
  291. package/dist/fields/validations.js.map +1 -1
  292. package/dist/globals/config/sanitize.d.ts.map +1 -1
  293. package/dist/globals/config/sanitize.js +2 -6
  294. package/dist/globals/config/sanitize.js.map +1 -1
  295. package/dist/globals/config/sanitize.spec.js +43 -0
  296. package/dist/globals/config/sanitize.spec.js.map +1 -0
  297. package/dist/globals/endpoints/update.d.ts.map +1 -1
  298. package/dist/globals/endpoints/update.js +0 -2
  299. package/dist/globals/endpoints/update.js.map +1 -1
  300. package/dist/globals/operations/local/countVersions.d.ts +3 -3
  301. package/dist/globals/operations/local/countVersions.d.ts.map +1 -1
  302. package/dist/globals/operations/local/countVersions.js.map +1 -1
  303. package/dist/globals/operations/local/findOne.d.ts +3 -3
  304. package/dist/globals/operations/local/findOne.d.ts.map +1 -1
  305. package/dist/globals/operations/local/findOne.js.map +1 -1
  306. package/dist/globals/operations/local/findVersionByID.d.ts +3 -3
  307. package/dist/globals/operations/local/findVersionByID.d.ts.map +1 -1
  308. package/dist/globals/operations/local/findVersionByID.js.map +1 -1
  309. package/dist/globals/operations/local/findVersions.d.ts +3 -3
  310. package/dist/globals/operations/local/findVersions.d.ts.map +1 -1
  311. package/dist/globals/operations/local/findVersions.js.map +1 -1
  312. package/dist/globals/operations/local/restoreVersion.d.ts +3 -3
  313. package/dist/globals/operations/local/restoreVersion.d.ts.map +1 -1
  314. package/dist/globals/operations/local/restoreVersion.js.map +1 -1
  315. package/dist/globals/operations/local/update.d.ts +7 -9
  316. package/dist/globals/operations/local/update.d.ts.map +1 -1
  317. package/dist/globals/operations/local/update.js +1 -2
  318. package/dist/globals/operations/local/update.js.map +1 -1
  319. package/dist/globals/operations/update.d.ts +0 -1
  320. package/dist/globals/operations/update.d.ts.map +1 -1
  321. package/dist/globals/operations/update.js +52 -58
  322. package/dist/globals/operations/update.js.map +1 -1
  323. package/dist/index.bundled.d.ts +595 -368
  324. package/dist/index.d.ts +71 -26
  325. package/dist/index.d.ts.map +1 -1
  326. package/dist/index.js +54 -37
  327. package/dist/index.js.map +1 -1
  328. package/dist/kv/adapters/DatabaseKVAdapter.d.ts.map +1 -1
  329. package/dist/kv/adapters/DatabaseKVAdapter.js +1 -0
  330. package/dist/kv/adapters/DatabaseKVAdapter.js.map +1 -1
  331. package/dist/locked-documents/config.d.ts.map +1 -1
  332. package/dist/locked-documents/config.js +2 -1
  333. package/dist/locked-documents/config.js.map +1 -1
  334. package/dist/preferences/config.d.ts.map +1 -1
  335. package/dist/preferences/config.js +2 -1
  336. package/dist/preferences/config.js.map +1 -1
  337. package/dist/preferences/keys.d.ts +4 -0
  338. package/dist/preferences/keys.d.ts.map +1 -1
  339. package/dist/preferences/keys.js +4 -1
  340. package/dist/preferences/keys.js.map +1 -1
  341. package/dist/preferences/types.d.ts +15 -0
  342. package/dist/preferences/types.d.ts.map +1 -1
  343. package/dist/preferences/types.js +3 -1
  344. package/dist/preferences/types.js.map +1 -1
  345. package/dist/query-presets/config.d.ts.map +1 -1
  346. package/dist/query-presets/config.js +75 -35
  347. package/dist/query-presets/config.js.map +1 -1
  348. package/dist/query-presets/constraints.d.ts.map +1 -1
  349. package/dist/query-presets/constraints.js +2 -1
  350. package/dist/query-presets/constraints.js.map +1 -1
  351. package/dist/queues/config/collection.d.ts.map +1 -1
  352. package/dist/queues/config/collection.js +2 -1
  353. package/dist/queues/config/collection.js.map +1 -1
  354. package/dist/queues/config/generateJobsJSONSchemas.js +2 -2
  355. package/dist/queues/config/generateJobsJSONSchemas.js.map +1 -1
  356. package/dist/queues/config/global.d.ts.map +1 -1
  357. package/dist/queues/config/global.js +2 -1
  358. package/dist/queues/config/global.js.map +1 -1
  359. package/dist/types/index.d.ts +8 -3
  360. package/dist/types/index.d.ts.map +1 -1
  361. package/dist/types/index.js.map +1 -1
  362. package/dist/uploads/generateFileData.d.ts +2 -1
  363. package/dist/uploads/generateFileData.d.ts.map +1 -1
  364. package/dist/uploads/generateFileData.js +5 -2
  365. package/dist/uploads/generateFileData.js.map +1 -1
  366. package/dist/uploads/matchMimeType.d.ts +8 -0
  367. package/dist/uploads/matchMimeType.d.ts.map +1 -0
  368. package/dist/uploads/matchMimeType.js +19 -0
  369. package/dist/uploads/matchMimeType.js.map +1 -0
  370. package/dist/uploads/matchMimeType.spec.js +66 -0
  371. package/dist/uploads/matchMimeType.spec.js.map +1 -0
  372. package/dist/uploads/safeFetch.d.ts.map +1 -1
  373. package/dist/uploads/safeFetch.js +11 -5
  374. package/dist/uploads/safeFetch.js.map +1 -1
  375. package/dist/uploads/types.d.ts +21 -0
  376. package/dist/uploads/types.d.ts.map +1 -1
  377. package/dist/uploads/types.js.map +1 -1
  378. package/dist/utilities/addDataAndFileToRequest.d.ts.map +1 -1
  379. package/dist/utilities/addDataAndFileToRequest.js +6 -0
  380. package/dist/utilities/addDataAndFileToRequest.js.map +1 -1
  381. package/dist/utilities/appendDateTimezoneSelectFields.js +2 -2
  382. package/dist/utilities/appendDateTimezoneSelectFields.js.map +1 -1
  383. package/dist/utilities/configToJSONSchema.d.ts +36 -2
  384. package/dist/utilities/configToJSONSchema.d.ts.map +1 -1
  385. package/dist/utilities/configToJSONSchema.js +204 -84
  386. package/dist/utilities/configToJSONSchema.js.map +1 -1
  387. package/dist/utilities/configToJSONSchema.spec.js +534 -29
  388. package/dist/utilities/configToJSONSchema.spec.js.map +1 -1
  389. package/dist/utilities/createLocalReq.d.ts +2 -2
  390. package/dist/utilities/createLocalReq.d.ts.map +1 -1
  391. package/dist/utilities/createLocalReq.js.map +1 -1
  392. package/dist/utilities/createPayloadRequest.d.ts.map +1 -1
  393. package/dist/utilities/createPayloadRequest.js +1 -0
  394. package/dist/utilities/createPayloadRequest.js.map +1 -1
  395. package/dist/utilities/deepCopyObject.d.ts.map +1 -1
  396. package/dist/utilities/deepCopyObject.js +8 -0
  397. package/dist/utilities/deepCopyObject.js.map +1 -1
  398. package/dist/utilities/dependencies/dependencyChecker.js +1 -1
  399. package/dist/utilities/dependencies/dependencyChecker.js.map +1 -1
  400. package/dist/utilities/dependencies/getDependencies.d.ts.map +1 -1
  401. package/dist/utilities/dependencies/getDependencies.js +5 -5
  402. package/dist/utilities/dependencies/getDependencies.js.map +1 -1
  403. package/dist/utilities/dynamicImport.js +1 -1
  404. package/dist/utilities/dynamicImport.js.map +1 -1
  405. package/dist/utilities/filterDataToSelectedLocales.d.ts.map +1 -1
  406. package/dist/utilities/filterDataToSelectedLocales.js +5 -12
  407. package/dist/utilities/filterDataToSelectedLocales.js.map +1 -1
  408. package/dist/utilities/filterDataToSelectedLocales.spec.js +1 -2
  409. package/dist/utilities/filterDataToSelectedLocales.spec.js.map +1 -1
  410. package/dist/utilities/flattenAllFields.d.ts.map +1 -1
  411. package/dist/utilities/flattenAllFields.js +7 -22
  412. package/dist/utilities/flattenAllFields.js.map +1 -1
  413. package/dist/utilities/formatErrors.d.ts.map +1 -1
  414. package/dist/utilities/formatErrors.js +3 -1
  415. package/dist/utilities/formatErrors.js.map +1 -1
  416. package/dist/utilities/getEntityPermissions/getEntityPermissions.d.ts.map +1 -1
  417. package/dist/utilities/getEntityPermissions/getEntityPermissions.js +2 -0
  418. package/dist/utilities/getEntityPermissions/getEntityPermissions.js.map +1 -1
  419. package/dist/utilities/getEntityPermissions/populateFieldPermissions.d.ts +7 -1
  420. package/dist/utilities/getEntityPermissions/populateFieldPermissions.d.ts.map +1 -1
  421. package/dist/utilities/getEntityPermissions/populateFieldPermissions.js +24 -7
  422. package/dist/utilities/getEntityPermissions/populateFieldPermissions.js.map +1 -1
  423. package/dist/utilities/getFieldByPath.d.ts.map +1 -1
  424. package/dist/utilities/getFieldByPath.js +1 -1
  425. package/dist/utilities/getFieldByPath.js.map +1 -1
  426. package/dist/utilities/getRequestLanguage.d.ts +2 -2
  427. package/dist/utilities/getRequestLanguage.d.ts.map +1 -1
  428. package/dist/utilities/getRequestLanguage.js.map +1 -1
  429. package/dist/utilities/getVersionsConfig.js.map +1 -1
  430. package/dist/utilities/handleEndpoints.d.ts.map +1 -1
  431. package/dist/utilities/handleEndpoints.js +7 -3
  432. package/dist/utilities/handleEndpoints.js.map +1 -1
  433. package/dist/utilities/isURLAllowed.d.ts.map +1 -1
  434. package/dist/utilities/isURLAllowed.js +9 -3
  435. package/dist/utilities/isURLAllowed.js.map +1 -1
  436. package/dist/utilities/isURLAllowed.spec.js +78 -0
  437. package/dist/utilities/isURLAllowed.spec.js.map +1 -0
  438. package/dist/utilities/mergeLocalizedData.d.ts +14 -4
  439. package/dist/utilities/mergeLocalizedData.d.ts.map +1 -1
  440. package/dist/utilities/mergeLocalizedData.js +54 -46
  441. package/dist/utilities/mergeLocalizedData.js.map +1 -1
  442. package/dist/utilities/mergeLocalizedData.spec.js +23 -23
  443. package/dist/utilities/mergeLocalizedData.spec.js.map +1 -1
  444. package/dist/utilities/parseParams/index.d.ts +2 -5
  445. package/dist/utilities/parseParams/index.d.ts.map +1 -1
  446. package/dist/utilities/parseParams/index.js.map +1 -1
  447. package/dist/utilities/parseParams/index.spec.js +0 -9
  448. package/dist/utilities/parseParams/index.spec.js.map +1 -1
  449. package/dist/utilities/telemetry/events/adminInit.d.ts.map +1 -1
  450. package/dist/utilities/telemetry/events/adminInit.js +2 -3
  451. package/dist/utilities/telemetry/events/adminInit.js.map +1 -1
  452. package/dist/utilities/telemetry/events/serverInit.d.ts.map +1 -1
  453. package/dist/utilities/telemetry/events/serverInit.js +2 -3
  454. package/dist/utilities/telemetry/events/serverInit.js.map +1 -1
  455. package/dist/utilities/telemetry/index.d.ts +14 -3
  456. package/dist/utilities/telemetry/index.d.ts.map +1 -1
  457. package/dist/utilities/telemetry/index.js +6 -1
  458. package/dist/utilities/telemetry/index.js.map +1 -1
  459. package/dist/utilities/telemetry/index.spec.js +43 -0
  460. package/dist/utilities/telemetry/index.spec.js.map +1 -0
  461. package/dist/utilities/transformColumnPreferences.js +4 -2
  462. package/dist/utilities/transformColumnPreferences.js.map +1 -1
  463. package/dist/utilities/traverseFields.d.ts.map +1 -1
  464. package/dist/utilities/traverseFields.js +2 -4
  465. package/dist/utilities/traverseFields.js.map +1 -1
  466. package/dist/utilities/traverseForLocalizedFields.d.ts.map +1 -1
  467. package/dist/utilities/traverseForLocalizedFields.js +3 -0
  468. package/dist/utilities/traverseForLocalizedFields.js.map +1 -1
  469. package/dist/versions/baseFields.d.ts +1 -2
  470. package/dist/versions/baseFields.d.ts.map +1 -1
  471. package/dist/versions/baseFields.js +0 -13
  472. package/dist/versions/baseFields.js.map +1 -1
  473. package/dist/versions/buildCollectionFields.d.ts.map +1 -1
  474. package/dist/versions/buildCollectionFields.js +0 -2
  475. package/dist/versions/buildCollectionFields.js.map +1 -1
  476. package/dist/versions/buildGlobalFields.d.ts.map +1 -1
  477. package/dist/versions/buildGlobalFields.js +0 -2
  478. package/dist/versions/buildGlobalFields.js.map +1 -1
  479. package/dist/versions/buildSingleLocalePublishData.d.ts +32 -0
  480. package/dist/versions/buildSingleLocalePublishData.d.ts.map +1 -0
  481. package/dist/versions/buildSingleLocalePublishData.js +37 -0
  482. package/dist/versions/buildSingleLocalePublishData.js.map +1 -0
  483. package/dist/versions/saveVersion.d.ts +0 -2
  484. package/dist/versions/saveVersion.d.ts.map +1 -1
  485. package/dist/versions/saveVersion.js +12 -17
  486. package/dist/versions/saveVersion.js.map +1 -1
  487. package/dist/versions/schedule/job.d.ts.map +1 -1
  488. package/dist/versions/schedule/job.js +6 -10
  489. package/dist/versions/schedule/job.js.map +1 -1
  490. package/dist/versions/types.d.ts +2 -15
  491. package/dist/versions/types.d.ts.map +1 -1
  492. package/dist/versions/types.js.map +1 -1
  493. package/package.json +9 -6
  494. package/dist/database/migrations/templates/localizeStatus.d.ts +0 -10
  495. package/dist/database/migrations/templates/localizeStatus.d.ts.map +0 -1
  496. package/dist/database/migrations/templates/localizeStatus.js +0 -54
  497. package/dist/database/migrations/templates/localizeStatus.js.map +0 -1
  498. package/dist/fields/baseFields/slug/index.d.ts +0 -89
  499. package/dist/fields/baseFields/slug/index.d.ts.map +0 -1
  500. package/dist/fields/baseFields/slug/index.js +0 -81
  501. package/dist/fields/baseFields/slug/index.js.map +0 -1
  502. package/dist/versions/migrations/localizeStatus/index.d.ts +0 -12
  503. package/dist/versions/migrations/localizeStatus/index.d.ts.map +0 -1
  504. package/dist/versions/migrations/localizeStatus/index.js +0 -33
  505. package/dist/versions/migrations/localizeStatus/index.js.map +0 -1
  506. package/dist/versions/migrations/localizeStatus/mongo/down.d.ts +0 -9
  507. package/dist/versions/migrations/localizeStatus/mongo/down.d.ts.map +0 -1
  508. package/dist/versions/migrations/localizeStatus/mongo/down.js +0 -112
  509. package/dist/versions/migrations/localizeStatus/mongo/down.js.map +0 -1
  510. package/dist/versions/migrations/localizeStatus/mongo/index.d.ts +0 -8
  511. package/dist/versions/migrations/localizeStatus/mongo/index.d.ts.map +0 -1
  512. package/dist/versions/migrations/localizeStatus/mongo/index.js +0 -8
  513. package/dist/versions/migrations/localizeStatus/mongo/index.js.map +0 -1
  514. package/dist/versions/migrations/localizeStatus/mongo/up.d.ts +0 -9
  515. package/dist/versions/migrations/localizeStatus/mongo/up.d.ts.map +0 -1
  516. package/dist/versions/migrations/localizeStatus/mongo/up.js +0 -220
  517. package/dist/versions/migrations/localizeStatus/mongo/up.js.map +0 -1
  518. package/dist/versions/migrations/localizeStatus/sql/down.d.ts +0 -11
  519. package/dist/versions/migrations/localizeStatus/sql/down.d.ts.map +0 -1
  520. package/dist/versions/migrations/localizeStatus/sql/down.js +0 -213
  521. package/dist/versions/migrations/localizeStatus/sql/down.js.map +0 -1
  522. package/dist/versions/migrations/localizeStatus/sql/index.d.ts +0 -8
  523. package/dist/versions/migrations/localizeStatus/sql/index.d.ts.map +0 -1
  524. package/dist/versions/migrations/localizeStatus/sql/index.js +0 -8
  525. package/dist/versions/migrations/localizeStatus/sql/index.js.map +0 -1
  526. package/dist/versions/migrations/localizeStatus/sql/migrateMainCollection.d.ts +0 -13
  527. package/dist/versions/migrations/localizeStatus/sql/migrateMainCollection.d.ts.map +0 -1
  528. package/dist/versions/migrations/localizeStatus/sql/migrateMainCollection.js +0 -51
  529. package/dist/versions/migrations/localizeStatus/sql/migrateMainCollection.js.map +0 -1
  530. package/dist/versions/migrations/localizeStatus/sql/migrateMainGlobal.d.ts +0 -13
  531. package/dist/versions/migrations/localizeStatus/sql/migrateMainGlobal.d.ts.map +0 -1
  532. package/dist/versions/migrations/localizeStatus/sql/migrateMainGlobal.js +0 -54
  533. package/dist/versions/migrations/localizeStatus/sql/migrateMainGlobal.js.map +0 -1
  534. package/dist/versions/migrations/localizeStatus/sql/up.d.ts +0 -11
  535. package/dist/versions/migrations/localizeStatus/sql/up.d.ts.map +0 -1
  536. package/dist/versions/migrations/localizeStatus/sql/up.js +0 -277
  537. package/dist/versions/migrations/localizeStatus/sql/up.js.map +0 -1
  538. package/dist/versions/saveSnapshot.d.ts +0 -18
  539. package/dist/versions/saveSnapshot.d.ts.map +0 -1
  540. package/dist/versions/saveSnapshot.js +0 -38
  541. package/dist/versions/saveSnapshot.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  import { describe, it, expect } from 'vitest';
2
2
  import { sanitizeConfig } from '../config/sanitize.js';
3
- import { configToJSONSchema } from './configToJSONSchema.js';
3
+ import { configToJSONSchema, entityToStandaloneJSONSchema } from './configToJSONSchema.js';
4
4
  describe('configToJSONSchema', ()=>{
5
5
  it('should handle optional arrays with required fields', async ()=>{
6
6
  // @ts-expect-error
@@ -21,13 +21,14 @@ describe('configToJSONSchema', ()=>{
21
21
  ]
22
22
  }
23
23
  ],
24
- timestamps: false
24
+ timestamps: false,
25
+ versions: false
25
26
  }
26
27
  ]
27
28
  };
28
29
  const sanitizedConfig = await sanitizeConfig(config);
29
30
  const { jsonSchema: schema } = configToJSONSchema(sanitizedConfig, 'text');
30
- expect(schema?.definitions?.test).toStrictEqual({
31
+ expect(schema?.$defs?.test).toStrictEqual({
31
32
  type: 'object',
32
33
  additionalProperties: false,
33
34
  properties: {
@@ -65,6 +66,325 @@ describe('configToJSONSchema', ()=>{
65
66
  title: 'Test'
66
67
  });
67
68
  });
69
+ it('should generate separate input types when generateInputTypes is enabled', async ()=>{
70
+ // @ts-expect-error partial config
71
+ const config = {
72
+ collections: [
73
+ {
74
+ slug: 'authors',
75
+ fields: [
76
+ {
77
+ name: 'name',
78
+ type: 'text'
79
+ }
80
+ ]
81
+ },
82
+ {
83
+ slug: 'categories',
84
+ fields: [
85
+ {
86
+ name: 'title',
87
+ type: 'text'
88
+ }
89
+ ]
90
+ },
91
+ {
92
+ slug: 'posts',
93
+ fields: [
94
+ {
95
+ name: 'title',
96
+ type: 'text',
97
+ required: true
98
+ },
99
+ {
100
+ name: 'status',
101
+ type: 'select',
102
+ defaultValue: 'draft',
103
+ options: [
104
+ 'draft',
105
+ 'published'
106
+ ],
107
+ required: true
108
+ },
109
+ {
110
+ name: 'author',
111
+ type: 'relationship',
112
+ relationTo: 'authors'
113
+ },
114
+ {
115
+ name: 'categories',
116
+ type: 'relationship',
117
+ hasMany: true,
118
+ relationTo: 'categories'
119
+ }
120
+ ]
121
+ }
122
+ ],
123
+ typescript: {
124
+ generateInputTypes: true
125
+ }
126
+ };
127
+ const sanitizedConfig = await sanitizeConfig(config);
128
+ const { jsonSchema: schema } = configToJSONSchema(sanitizedConfig, 'text');
129
+ // Output (read) shape is unchanged: relationships may be populated, managed fields are present,
130
+ // and a required field with a defaultValue stays required.
131
+ const postsOutput = schema?.$defs?.posts;
132
+ expect(postsOutput.title).toBe('Post');
133
+ expect(postsOutput.properties.author).toStrictEqual({
134
+ oneOf: [
135
+ {
136
+ type: [
137
+ 'string',
138
+ 'null'
139
+ ]
140
+ },
141
+ {
142
+ $ref: '#/$defs/authors'
143
+ }
144
+ ]
145
+ });
146
+ expect(postsOutput.properties.categories).toStrictEqual({
147
+ type: [
148
+ 'array',
149
+ 'null'
150
+ ],
151
+ items: {
152
+ oneOf: [
153
+ {
154
+ type: 'string'
155
+ },
156
+ {
157
+ $ref: '#/$defs/categories'
158
+ }
159
+ ]
160
+ }
161
+ });
162
+ expect(postsOutput.required).toStrictEqual([
163
+ 'id',
164
+ 'title',
165
+ 'status',
166
+ 'updatedAt',
167
+ 'createdAt'
168
+ ]);
169
+ // Input (write) shape: relationships are ID-only, the defaultValue field is optional, `id` is
170
+ // optional, and createdAt/updatedAt are dropped. `id` and the defaulted `status` are optional
171
+ // but NOT nullable - nullability follows the read shape, where they're non-null.
172
+ expect(schema?.$defs?.posts_input).toStrictEqual({
173
+ type: 'object',
174
+ additionalProperties: false,
175
+ properties: {
176
+ id: {
177
+ type: 'string'
178
+ },
179
+ title: {
180
+ type: 'string'
181
+ },
182
+ status: {
183
+ type: 'string',
184
+ enum: [
185
+ 'draft',
186
+ 'published'
187
+ ]
188
+ },
189
+ author: {
190
+ type: [
191
+ 'string',
192
+ 'null'
193
+ ]
194
+ },
195
+ categories: {
196
+ type: [
197
+ 'array',
198
+ 'null'
199
+ ],
200
+ items: {
201
+ type: 'string'
202
+ }
203
+ }
204
+ },
205
+ required: [
206
+ 'title'
207
+ ],
208
+ title: 'PostInput'
209
+ });
210
+ // The Config type exposes input shapes under `collectionsInput`.
211
+ expect(schema?.properties?.collectionsInput?.properties?.posts).toStrictEqual({
212
+ $ref: '#/$defs/posts_input'
213
+ });
214
+ });
215
+ it('should skip input types by default and generate them when enabled', async ()=>{
216
+ // @ts-expect-error partial config
217
+ const offByDefault = {
218
+ collections: [
219
+ {
220
+ slug: 'posts',
221
+ fields: [
222
+ {
223
+ name: 'title',
224
+ type: 'text'
225
+ }
226
+ ]
227
+ }
228
+ ]
229
+ };
230
+ const { jsonSchema: defaultSchema } = configToJSONSchema(await sanitizeConfig(offByDefault), 'text');
231
+ expect(defaultSchema?.$defs?.posts_input).toBeUndefined();
232
+ expect(defaultSchema?.properties?.collectionsInput).toBeUndefined();
233
+ // @ts-expect-error partial config
234
+ const enabled = {
235
+ collections: [
236
+ {
237
+ slug: 'posts',
238
+ fields: [
239
+ {
240
+ name: 'title',
241
+ type: 'text'
242
+ }
243
+ ]
244
+ }
245
+ ],
246
+ typescript: {
247
+ generateInputTypes: true
248
+ }
249
+ };
250
+ const { jsonSchema: enabledSchema } = configToJSONSchema(await sanitizeConfig(enabled), 'text');
251
+ expect(enabledSchema?.$defs?.posts_input).toBeDefined();
252
+ expect(enabledSchema?.properties?.collectionsInput).toBeDefined();
253
+ });
254
+ it('should generate Input-suffixed definitions for named interfaces and blocks', async ()=>{
255
+ // @ts-expect-error partial config
256
+ const config = {
257
+ collections: [
258
+ {
259
+ slug: 'authors',
260
+ fields: [
261
+ {
262
+ name: 'name',
263
+ type: 'text'
264
+ }
265
+ ]
266
+ },
267
+ {
268
+ slug: 'pages',
269
+ fields: [
270
+ {
271
+ name: 'meta',
272
+ type: 'group',
273
+ interfaceName: 'Meta',
274
+ fields: [
275
+ {
276
+ name: 'author',
277
+ type: 'relationship',
278
+ relationTo: 'authors'
279
+ }
280
+ ]
281
+ },
282
+ {
283
+ name: 'layout',
284
+ type: 'blocks',
285
+ blocks: [
286
+ {
287
+ slug: 'hero',
288
+ fields: [
289
+ {
290
+ name: 'heading',
291
+ type: 'text',
292
+ required: true
293
+ },
294
+ {
295
+ name: 'cta',
296
+ type: 'relationship',
297
+ relationTo: 'authors'
298
+ }
299
+ ]
300
+ }
301
+ ]
302
+ }
303
+ ]
304
+ }
305
+ ],
306
+ typescript: {
307
+ generateInputTypes: true
308
+ }
309
+ };
310
+ const sanitizedConfig = await sanitizeConfig(config);
311
+ const { jsonSchema: schema } = configToJSONSchema(sanitizedConfig, 'text');
312
+ // Read-shaped named interface keeps the populated-doc union...
313
+ expect((schema?.$defs?.Meta).properties.author).toStrictEqual({
314
+ oneOf: [
315
+ {
316
+ type: [
317
+ 'string',
318
+ 'null'
319
+ ]
320
+ },
321
+ {
322
+ $ref: '#/$defs/authors'
323
+ }
324
+ ]
325
+ });
326
+ // ...and a separate `Input` definition is ID-only, so the two don't collide.
327
+ expect((schema?.$defs?.MetaInput).properties.author).toStrictEqual({
328
+ type: [
329
+ 'string',
330
+ 'null'
331
+ ]
332
+ });
333
+ // Blocks get the same treatment: read-shaped `Hero`, write-shaped `HeroInput`.
334
+ const heroInput = schema?.$defs?.HeroInput;
335
+ expect(heroInput.properties.cta).toStrictEqual({
336
+ type: [
337
+ 'string',
338
+ 'null'
339
+ ]
340
+ });
341
+ expect(heroInput.required).toStrictEqual([
342
+ 'blockType',
343
+ 'heading'
344
+ ]);
345
+ expect((schema?.$defs?.Hero).properties.cta).toStrictEqual({
346
+ oneOf: [
347
+ {
348
+ type: [
349
+ 'string',
350
+ 'null'
351
+ ]
352
+ },
353
+ {
354
+ $ref: '#/$defs/authors'
355
+ }
356
+ ]
357
+ });
358
+ });
359
+ it('passes the variant to field-level jsonSchema transforms', async ()=>{
360
+ // @ts-expect-error partial config
361
+ const config = {
362
+ collections: [
363
+ {
364
+ slug: 'posts',
365
+ fields: [
366
+ {
367
+ name: 'custom',
368
+ type: 'text',
369
+ jsonSchema: [
370
+ ({ jsonSchema, variant })=>({
371
+ ...jsonSchema,
372
+ description: variant
373
+ })
374
+ ]
375
+ }
376
+ ]
377
+ }
378
+ ],
379
+ typescript: {
380
+ generateInputTypes: true
381
+ }
382
+ };
383
+ const sanitizedConfig = await sanitizeConfig(config);
384
+ const { jsonSchema: schema } = configToJSONSchema(sanitizedConfig, 'text');
385
+ expect((schema?.$defs?.posts).properties.custom.description).toBe('output');
386
+ expect((schema?.$defs?.posts_input).properties.custom.description).toBe('input');
387
+ });
68
388
  it('should handle block fields with no blocks', async ()=>{
69
389
  // @ts-expect-error
70
390
  const config = {
@@ -115,13 +435,14 @@ describe('configToJSONSchema', ()=>{
115
435
  ]
116
436
  }
117
437
  ],
118
- timestamps: false
438
+ timestamps: false,
439
+ versions: false
119
440
  }
120
441
  ]
121
442
  };
122
443
  const sanitizedConfig = await sanitizeConfig(config);
123
444
  const { jsonSchema: schema } = configToJSONSchema(sanitizedConfig, 'text');
124
- expect(schema?.definitions?.test).toStrictEqual({
445
+ expect(schema?.$defs?.test).toStrictEqual({
125
446
  type: 'object',
126
447
  additionalProperties: false,
127
448
  properties: {
@@ -147,7 +468,7 @@ describe('configToJSONSchema', ()=>{
147
468
  items: {
148
469
  oneOf: [
149
470
  {
150
- $ref: '#/definitions/Test'
471
+ $ref: '#/$defs/Test'
151
472
  }
152
473
  ]
153
474
  }
@@ -160,7 +481,7 @@ describe('configToJSONSchema', ()=>{
160
481
  items: {
161
482
  oneOf: [
162
483
  {
163
- $ref: '#/definitions/TestRequired'
484
+ $ref: '#/$defs/TestRequired'
164
485
  }
165
486
  ]
166
487
  }
@@ -205,7 +526,8 @@ describe('configToJSONSchema', ()=>{
205
526
  ]
206
527
  }
207
528
  ],
208
- timestamps: false
529
+ timestamps: false,
530
+ versions: false
209
531
  },
210
532
  {
211
533
  slug: 'posts',
@@ -227,13 +549,14 @@ describe('configToJSONSchema', ()=>{
227
549
  ]
228
550
  }
229
551
  ],
230
- timestamps: false
552
+ timestamps: false,
553
+ versions: false
231
554
  }
232
555
  ]
233
556
  };
234
557
  const sanitizedConfig = await sanitizeConfig(config);
235
558
  const { jsonSchema: schema } = configToJSONSchema(sanitizedConfig, 'text');
236
- const defs = schema.definitions;
559
+ const defs = schema.$defs;
237
560
  // The first `hero` keeps the clean name; the unique block is unaffected.
238
561
  expect(defs.Hero).toBeDefined();
239
562
  expect(defs.Cta).toBeDefined();
@@ -245,14 +568,14 @@ describe('configToJSONSchema', ()=>{
245
568
  expect(defs.Hero.description).toBeUndefined();
246
569
  // Each collection's block field references its own block's interface.
247
570
  const refsOf = (slug)=>defs[slug].properties.layout.items.oneOf.map((r)=>r.$ref);
248
- expect(refsOf('pages')).toContain('#/definitions/Hero');
249
- expect(refsOf('pages')).toContain('#/definitions/Cta');
571
+ expect(refsOf('pages')).toContain('#/$defs/Hero');
572
+ expect(refsOf('pages')).toContain('#/$defs/Cta');
250
573
  expect(refsOf('posts')).toStrictEqual([
251
- `#/definitions/${hashedHeroNames[0]}`
574
+ `#/$defs/${hashedHeroNames[0]}`
252
575
  ]);
253
576
  // Hashing is deterministic: regenerating yields identical names.
254
577
  const { jsonSchema: schema2 } = configToJSONSchema(sanitizedConfig, 'text');
255
- expect(Object.keys(schema2.definitions).filter((k)=>/^Hero/.test(k)).sort()).toStrictEqual(Object.keys(defs).filter((k)=>/^Hero/.test(k)).sort());
578
+ expect(Object.keys(schema2.$defs).filter((k)=>/^Hero/.test(k)).sort()).toStrictEqual(Object.keys(defs).filter((k)=>/^Hero/.test(k)).sort());
256
579
  });
257
580
  it('should handle tabs and named tabs with required fields', async ()=>{
258
581
  // @ts-expect-error
@@ -297,13 +620,14 @@ describe('configToJSONSchema', ()=>{
297
620
  ]
298
621
  }
299
622
  ],
300
- timestamps: false
623
+ timestamps: false,
624
+ versions: false
301
625
  }
302
626
  ]
303
627
  };
304
628
  const sanitizedConfig = await sanitizeConfig(config);
305
629
  const { jsonSchema: schema } = configToJSONSchema(sanitizedConfig, 'text');
306
- expect(schema?.definitions?.test).toStrictEqual({
630
+ expect(schema?.$defs?.test).toStrictEqual({
307
631
  type: 'object',
308
632
  additionalProperties: false,
309
633
  properties: {
@@ -385,13 +709,14 @@ describe('configToJSONSchema', ()=>{
385
709
  }
386
710
  }
387
711
  ],
388
- timestamps: false
712
+ timestamps: false,
713
+ versions: false
389
714
  }
390
715
  ]
391
716
  };
392
717
  const sanitizedConfig = await sanitizeConfig(config);
393
718
  const { jsonSchema: schema } = configToJSONSchema(sanitizedConfig, 'text');
394
- expect(schema?.definitions?.test).toStrictEqual({
719
+ expect(schema?.$defs?.test).toStrictEqual({
395
720
  type: 'object',
396
721
  additionalProperties: false,
397
722
  properties: {
@@ -443,7 +768,8 @@ describe('configToJSONSchema', ()=>{
443
768
  ]
444
769
  }
445
770
  ],
446
- timestamps: false
771
+ timestamps: false,
772
+ versions: false
447
773
  }
448
774
  ]
449
775
  };
@@ -485,7 +811,7 @@ describe('configToJSONSchema', ()=>{
485
811
  'blockType'
486
812
  ]
487
813
  };
488
- expect(schema?.definitions?.test).toStrictEqual({
814
+ expect(schema?.$defs?.test).toStrictEqual({
489
815
  type: 'object',
490
816
  additionalProperties: false,
491
817
  title: 'Test',
@@ -501,7 +827,7 @@ describe('configToJSONSchema', ()=>{
501
827
  items: {
502
828
  oneOf: [
503
829
  {
504
- $ref: '#/definitions/SharedBlock'
830
+ $ref: '#/$defs/SharedBlock'
505
831
  }
506
832
  ]
507
833
  }
@@ -512,7 +838,100 @@ describe('configToJSONSchema', ()=>{
512
838
  ]
513
839
  });
514
840
  // The definition should still be registered for TypeScript type generation
515
- expect(schema?.definitions?.SharedBlock).toStrictEqual(expectedBlockSchema);
841
+ expect(schema?.$defs?.SharedBlock).toStrictEqual(expectedBlockSchema);
842
+ });
843
+ it('content-hashes a colliding explicit interfaceName instead of overwriting it', async ()=>{
844
+ // Two different blocks both set `interfaceName: 'Hero'` - each must keep its own definition.
845
+ const config = {
846
+ collections: [
847
+ {
848
+ slug: 'test',
849
+ fields: [
850
+ {
851
+ name: 'blocksField',
852
+ type: 'blocks',
853
+ blocks: [
854
+ {
855
+ slug: 'blockA',
856
+ fields: [
857
+ {
858
+ name: 'title',
859
+ type: 'text'
860
+ }
861
+ ],
862
+ interfaceName: 'Hero'
863
+ },
864
+ {
865
+ slug: 'blockB',
866
+ fields: [
867
+ {
868
+ name: 'subtitle',
869
+ type: 'number'
870
+ }
871
+ ],
872
+ interfaceName: 'Hero'
873
+ }
874
+ ]
875
+ }
876
+ ],
877
+ timestamps: false,
878
+ versions: false
879
+ }
880
+ ]
881
+ };
882
+ const sanitizedConfig = await sanitizeConfig(config);
883
+ const { jsonSchema } = configToJSONSchema(sanitizedConfig, 'text');
884
+ const defs = jsonSchema.$defs;
885
+ // Each differently-shaped block keeps its own interface (one clean, one hash-suffixed).
886
+ const heroNames = Object.keys(defs).filter((k)=>/^Hero(_[0-9A-F]{8})?$/.test(k));
887
+ expect(heroNames).toHaveLength(2);
888
+ // ...and they carry distinct field shapes (not a silent overwrite).
889
+ const shapeOf = (name)=>Object.keys(defs[name].properties).sort().join(',');
890
+ expect(shapeOf(heroNames[0])).not.toBe(shapeOf(heroNames[1]));
891
+ });
892
+ it('reuses one definition when the same block is registered more than once', async ()=>{
893
+ // Reusing one block across fields registers an identical schema each time, so it dedupes.
894
+ const heroBlock = {
895
+ slug: 'hero',
896
+ fields: [
897
+ {
898
+ name: 'title',
899
+ type: 'text'
900
+ }
901
+ ],
902
+ interfaceName: 'Hero'
903
+ };
904
+ const config = {
905
+ collections: [
906
+ {
907
+ slug: 'test',
908
+ fields: [
909
+ {
910
+ name: 'a',
911
+ type: 'blocks',
912
+ blocks: [
913
+ heroBlock
914
+ ]
915
+ },
916
+ {
917
+ name: 'b',
918
+ type: 'blocks',
919
+ blocks: [
920
+ heroBlock
921
+ ]
922
+ }
923
+ ],
924
+ timestamps: false,
925
+ versions: false
926
+ }
927
+ ]
928
+ };
929
+ const sanitizedConfig = await sanitizeConfig(config);
930
+ const { jsonSchema } = configToJSONSchema(sanitizedConfig, 'text');
931
+ const heroNames = Object.keys(jsonSchema.$defs).filter((k)=>/^Hero(_[0-9A-F]{8})?$/.test(k));
932
+ expect(heroNames).toEqual([
933
+ 'Hero'
934
+ ]);
516
935
  });
517
936
  it('should allow overriding required to false', async ()=>{
518
937
  // @ts-expect-error
@@ -534,14 +953,15 @@ describe('configToJSONSchema', ()=>{
534
953
  ]
535
954
  }
536
955
  ],
537
- timestamps: false
956
+ timestamps: false,
957
+ versions: false
538
958
  }
539
959
  ]
540
960
  };
541
961
  const sanitizedConfig = await sanitizeConfig(config);
542
962
  const { jsonSchema: schema } = configToJSONSchema(sanitizedConfig, 'text');
543
963
  // @ts-expect-error
544
- expect(schema.definitions.test.properties.title.required).toStrictEqual(false);
964
+ expect(schema.$defs.test.properties.title.required).toStrictEqual(false);
545
965
  });
546
966
  it('should propagate forceInlineBlocks to nested fields (array, group, tab)', async ()=>{
547
967
  const namedBlock = {
@@ -587,34 +1007,119 @@ describe('configToJSONSchema', ()=>{
587
1007
  ]
588
1008
  }
589
1009
  ],
590
- timestamps: false
1010
+ timestamps: false,
1011
+ versions: false
591
1012
  }
592
1013
  ]
593
1014
  };
594
1015
  const sanitizedConfig = await sanitizeConfig(config);
595
1016
  // Without forceInlineBlocks: blocks field uses $ref
596
1017
  const { jsonSchema: schemaDefault } = configToJSONSchema(sanitizedConfig, 'text');
597
- const arrItemsDefault = schemaDefault.definitions.test.properties.arr.items;
1018
+ const arrItemsDefault = schemaDefault.$defs.test.properties.arr.items;
598
1019
  const arrBlocksDefault = arrItemsDefault.properties.blocks.items.oneOf[0];
599
1020
  expect(arrBlocksDefault).toStrictEqual({
600
- $ref: '#/definitions/MyBlock'
1021
+ $ref: '#/$defs/MyBlock'
601
1022
  });
602
1023
  // With forceInlineBlocks: blocks field is inlined, no $ref
603
1024
  const { jsonSchema: schemaInline } = configToJSONSchema(sanitizedConfig, 'text', undefined, {
604
1025
  forceInlineBlocks: true
605
1026
  });
606
- const arrItemsInline = schemaInline.definitions.test.properties.arr.items;
1027
+ const arrItemsInline = schemaInline.$defs.test.properties.arr.items;
607
1028
  const arrBlocksInline = arrItemsInline.properties.blocks.items.oneOf[0];
608
1029
  expect(arrBlocksInline).not.toHaveProperty('$ref');
609
1030
  expect(arrBlocksInline.properties?.blockType).toStrictEqual({
610
1031
  const: 'myBlock'
611
1032
  });
612
- const grpBlocksInline = schemaInline.definitions.test.properties.grp.properties.blocks.items.oneOf[0];
1033
+ const grpBlocksInline = schemaInline.$defs.test.properties.grp.properties.blocks.items.oneOf[0];
613
1034
  expect(grpBlocksInline).not.toHaveProperty('$ref');
614
1035
  expect(grpBlocksInline.properties?.blockType).toStrictEqual({
615
1036
  const: 'myBlock'
616
1037
  });
617
1038
  });
1039
+ it('entityToStandaloneJSONSchema bundles only the definitions an entity references', async ()=>{
1040
+ const sharedBlock = {
1041
+ slug: 'sharedBlock',
1042
+ interfaceName: 'SharedBlock',
1043
+ fields: [
1044
+ {
1045
+ name: 'title',
1046
+ type: 'text'
1047
+ }
1048
+ ]
1049
+ };
1050
+ // @ts-expect-error partial config
1051
+ const config = {
1052
+ admin: {
1053
+ timezones: {
1054
+ supportedTimezones: [
1055
+ {
1056
+ label: 'UTC',
1057
+ value: 'UTC'
1058
+ },
1059
+ {
1060
+ label: 'New York',
1061
+ value: 'America/New_York'
1062
+ }
1063
+ ]
1064
+ }
1065
+ },
1066
+ blocks: [
1067
+ sharedBlock
1068
+ ],
1069
+ collections: [
1070
+ {
1071
+ slug: 'with-refs',
1072
+ fields: [
1073
+ {
1074
+ name: 'layout',
1075
+ type: 'blocks',
1076
+ blocks: [
1077
+ 'sharedBlock'
1078
+ ]
1079
+ },
1080
+ {
1081
+ name: 'when',
1082
+ type: 'date',
1083
+ timezone: true
1084
+ }
1085
+ ],
1086
+ timestamps: false,
1087
+ versions: false
1088
+ },
1089
+ {
1090
+ slug: 'other',
1091
+ fields: [
1092
+ {
1093
+ name: 'title',
1094
+ type: 'text'
1095
+ }
1096
+ ],
1097
+ timestamps: false,
1098
+ versions: false
1099
+ }
1100
+ ]
1101
+ };
1102
+ const sanitizedConfig = await sanitizeConfig(config);
1103
+ const entity = sanitizedConfig.collections.find((collection)=>collection.slug === 'with-refs');
1104
+ const schema = entityToStandaloneJSONSchema({
1105
+ config: sanitizedConfig,
1106
+ defaultIDType: 'text',
1107
+ entity
1108
+ });
1109
+ // Has its own $schema, so it resolves on its own.
1110
+ expect(schema.$schema).toBe('https://json-schema.org/draft/2020-12/schema');
1111
+ // The block reference is resolved inline, so it can't dangle.
1112
+ const layoutItems = schema.properties?.layout?.items;
1113
+ const inlinedBlock = layoutItems?.oneOf?.[0] ?? {};
1114
+ expect(inlinedBlock.properties?.blockType).toStrictEqual({
1115
+ const: 'sharedBlock'
1116
+ });
1117
+ expect(inlinedBlock.properties?.title).toBeDefined();
1118
+ // A timezone field pulls in supportedTimezones from the root config.
1119
+ expect(schema.$defs?.supportedTimezones).toBeDefined();
1120
+ // Doesn't pull in unrelated collections.
1121
+ expect(schema.$defs?.other).toBeUndefined();
1122
+ });
618
1123
  });
619
1124
 
620
1125
  //# sourceMappingURL=configToJSONSchema.spec.js.map