payload 3.0.0-beta.120 → 3.0.0-beta.121

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 (287) hide show
  1. package/dist/auth/operations/registerFirstUser.d.ts.map +1 -1
  2. package/dist/auth/operations/registerFirstUser.js.map +1 -1
  3. package/dist/auth/strategies/local/register.d.ts +3 -2
  4. package/dist/auth/strategies/local/register.d.ts.map +1 -1
  5. package/dist/auth/strategies/local/register.js +3 -2
  6. package/dist/auth/strategies/local/register.js.map +1 -1
  7. package/dist/bin/generateTypes.d.ts.map +1 -1
  8. package/dist/bin/generateTypes.js +4 -0
  9. package/dist/bin/generateTypes.js.map +1 -1
  10. package/dist/bin/index.d.ts +1 -1
  11. package/dist/bin/index.d.ts.map +1 -1
  12. package/dist/bin/index.js +25 -0
  13. package/dist/bin/index.js.map +1 -1
  14. package/dist/collections/config/types.d.ts +7 -5
  15. package/dist/collections/config/types.d.ts.map +1 -1
  16. package/dist/collections/config/types.js.map +1 -1
  17. package/dist/collections/dataloader.d.ts +3 -2
  18. package/dist/collections/dataloader.d.ts.map +1 -1
  19. package/dist/collections/dataloader.js +9 -5
  20. package/dist/collections/dataloader.js.map +1 -1
  21. package/dist/collections/operations/create.d.ts +4 -3
  22. package/dist/collections/operations/create.d.ts.map +1 -1
  23. package/dist/collections/operations/create.js +6 -3
  24. package/dist/collections/operations/create.js.map +1 -1
  25. package/dist/collections/operations/delete.d.ts +4 -9
  26. package/dist/collections/operations/delete.d.ts.map +1 -1
  27. package/dist/collections/operations/delete.js +3 -1
  28. package/dist/collections/operations/delete.js.map +1 -1
  29. package/dist/collections/operations/deleteByID.d.ts +4 -3
  30. package/dist/collections/operations/deleteByID.d.ts.map +1 -1
  31. package/dist/collections/operations/deleteByID.js +3 -1
  32. package/dist/collections/operations/deleteByID.js.map +1 -1
  33. package/dist/collections/operations/duplicate.d.ts +4 -3
  34. package/dist/collections/operations/duplicate.d.ts.map +1 -1
  35. package/dist/collections/operations/duplicate.js +7 -3
  36. package/dist/collections/operations/duplicate.js.map +1 -1
  37. package/dist/collections/operations/find.d.ts +4 -3
  38. package/dist/collections/operations/find.d.ts.map +1 -1
  39. package/dist/collections/operations/find.js +7 -1
  40. package/dist/collections/operations/find.js.map +1 -1
  41. package/dist/collections/operations/findByID.d.ts +4 -3
  42. package/dist/collections/operations/findByID.d.ts.map +1 -1
  43. package/dist/collections/operations/findByID.js +5 -2
  44. package/dist/collections/operations/findByID.js.map +1 -1
  45. package/dist/collections/operations/findVersionByID.d.ts +2 -1
  46. package/dist/collections/operations/findVersionByID.d.ts.map +1 -1
  47. package/dist/collections/operations/findVersionByID.js +3 -1
  48. package/dist/collections/operations/findVersionByID.js.map +1 -1
  49. package/dist/collections/operations/findVersions.d.ts +2 -1
  50. package/dist/collections/operations/findVersions.d.ts.map +1 -1
  51. package/dist/collections/operations/findVersions.js +3 -1
  52. package/dist/collections/operations/findVersions.js.map +1 -1
  53. package/dist/collections/operations/local/create.d.ts +5 -4
  54. package/dist/collections/operations/local/create.d.ts.map +1 -1
  55. package/dist/collections/operations/local/create.js +2 -1
  56. package/dist/collections/operations/local/create.js.map +1 -1
  57. package/dist/collections/operations/local/delete.d.ts +12 -11
  58. package/dist/collections/operations/local/delete.d.ts.map +1 -1
  59. package/dist/collections/operations/local/delete.js +2 -1
  60. package/dist/collections/operations/local/delete.js.map +1 -1
  61. package/dist/collections/operations/local/duplicate.d.ts +5 -4
  62. package/dist/collections/operations/local/duplicate.d.ts.map +1 -1
  63. package/dist/collections/operations/local/duplicate.js +2 -1
  64. package/dist/collections/operations/local/duplicate.js.map +1 -1
  65. package/dist/collections/operations/local/find.d.ts +5 -4
  66. package/dist/collections/operations/local/find.d.ts.map +1 -1
  67. package/dist/collections/operations/local/find.js +3 -1
  68. package/dist/collections/operations/local/find.js.map +1 -1
  69. package/dist/collections/operations/local/findByID.d.ts +7 -6
  70. package/dist/collections/operations/local/findByID.d.ts.map +1 -1
  71. package/dist/collections/operations/local/findByID.js +3 -2
  72. package/dist/collections/operations/local/findByID.js.map +1 -1
  73. package/dist/collections/operations/local/findVersionByID.d.ts +2 -1
  74. package/dist/collections/operations/local/findVersionByID.d.ts.map +1 -1
  75. package/dist/collections/operations/local/findVersionByID.js +2 -1
  76. package/dist/collections/operations/local/findVersionByID.js.map +1 -1
  77. package/dist/collections/operations/local/findVersions.d.ts +2 -1
  78. package/dist/collections/operations/local/findVersions.d.ts.map +1 -1
  79. package/dist/collections/operations/local/findVersions.js +2 -1
  80. package/dist/collections/operations/local/findVersions.js.map +1 -1
  81. package/dist/collections/operations/local/index.d.ts.map +1 -1
  82. package/dist/collections/operations/local/index.js +1 -1
  83. package/dist/collections/operations/local/index.js.map +1 -1
  84. package/dist/collections/operations/local/restoreVersion.d.ts +2 -1
  85. package/dist/collections/operations/local/restoreVersion.d.ts.map +1 -1
  86. package/dist/collections/operations/local/restoreVersion.js +2 -1
  87. package/dist/collections/operations/local/restoreVersion.js.map +1 -1
  88. package/dist/collections/operations/local/update.d.ts +12 -11
  89. package/dist/collections/operations/local/update.d.ts.map +1 -1
  90. package/dist/collections/operations/local/update.js +2 -1
  91. package/dist/collections/operations/local/update.js.map +1 -1
  92. package/dist/collections/operations/restoreVersion.d.ts +2 -1
  93. package/dist/collections/operations/restoreVersion.d.ts.map +1 -1
  94. package/dist/collections/operations/restoreVersion.js +4 -2
  95. package/dist/collections/operations/restoreVersion.js.map +1 -1
  96. package/dist/collections/operations/update.d.ts +4 -3
  97. package/dist/collections/operations/update.d.ts.map +1 -1
  98. package/dist/collections/operations/update.js +6 -3
  99. package/dist/collections/operations/update.js.map +1 -1
  100. package/dist/collections/operations/updateByID.d.ts +4 -3
  101. package/dist/collections/operations/updateByID.d.ts.map +1 -1
  102. package/dist/collections/operations/updateByID.js +5 -2
  103. package/dist/collections/operations/updateByID.js.map +1 -1
  104. package/dist/collections/operations/utils.d.ts +8 -8
  105. package/dist/collections/operations/utils.d.ts.map +1 -1
  106. package/dist/collections/operations/utils.js.map +1 -1
  107. package/dist/config/client.d.ts +2 -2
  108. package/dist/config/client.d.ts.map +1 -1
  109. package/dist/config/client.js +1 -0
  110. package/dist/config/client.js.map +1 -1
  111. package/dist/config/defaults.d.ts.map +1 -1
  112. package/dist/config/defaults.js +8 -0
  113. package/dist/config/defaults.js.map +1 -1
  114. package/dist/config/sanitize.d.ts.map +1 -1
  115. package/dist/config/sanitize.js +21 -0
  116. package/dist/config/sanitize.js.map +1 -1
  117. package/dist/config/types.d.ts +6 -1
  118. package/dist/config/types.d.ts.map +1 -1
  119. package/dist/config/types.js.map +1 -1
  120. package/dist/database/types.d.ts +15 -1
  121. package/dist/database/types.d.ts.map +1 -1
  122. package/dist/database/types.js.map +1 -1
  123. package/dist/exports/shared.d.ts +1 -0
  124. package/dist/exports/shared.d.ts.map +1 -1
  125. package/dist/exports/shared.js +1 -0
  126. package/dist/exports/shared.js.map +1 -1
  127. package/dist/fields/config/types.d.ts +2 -0
  128. package/dist/fields/config/types.d.ts.map +1 -1
  129. package/dist/fields/config/types.js.map +1 -1
  130. package/dist/fields/hooks/afterRead/index.d.ts +2 -1
  131. package/dist/fields/hooks/afterRead/index.d.ts.map +1 -1
  132. package/dist/fields/hooks/afterRead/index.js +4 -1
  133. package/dist/fields/hooks/afterRead/index.js.map +1 -1
  134. package/dist/fields/hooks/afterRead/promise.d.ts +4 -2
  135. package/dist/fields/hooks/afterRead/promise.d.ts.map +1 -1
  136. package/dist/fields/hooks/afterRead/promise.js +59 -1
  137. package/dist/fields/hooks/afterRead/promise.js.map +1 -1
  138. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.d.ts.map +1 -1
  139. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.js +1 -0
  140. package/dist/fields/hooks/afterRead/relationshipPopulationPromise.js.map +1 -1
  141. package/dist/fields/hooks/afterRead/traverseFields.d.ts +4 -2
  142. package/dist/fields/hooks/afterRead/traverseFields.d.ts.map +1 -1
  143. package/dist/fields/hooks/afterRead/traverseFields.js +3 -1
  144. package/dist/fields/hooks/afterRead/traverseFields.js.map +1 -1
  145. package/dist/globals/config/types.d.ts +2 -1
  146. package/dist/globals/config/types.d.ts.map +1 -1
  147. package/dist/globals/config/types.js.map +1 -1
  148. package/dist/globals/operations/findOne.d.ts +2 -1
  149. package/dist/globals/operations/findOne.d.ts.map +1 -1
  150. package/dist/globals/operations/findOne.js +15 -2
  151. package/dist/globals/operations/findOne.js.map +1 -1
  152. package/dist/globals/operations/findVersionByID.d.ts +2 -1
  153. package/dist/globals/operations/findVersionByID.d.ts.map +1 -1
  154. package/dist/globals/operations/findVersionByID.js +3 -1
  155. package/dist/globals/operations/findVersionByID.js.map +1 -1
  156. package/dist/globals/operations/findVersions.d.ts +2 -1
  157. package/dist/globals/operations/findVersions.d.ts.map +1 -1
  158. package/dist/globals/operations/findVersions.js +7 -3
  159. package/dist/globals/operations/findVersions.js.map +1 -1
  160. package/dist/globals/operations/local/findOne.d.ts +5 -4
  161. package/dist/globals/operations/local/findOne.d.ts.map +1 -1
  162. package/dist/globals/operations/local/findOne.js +2 -1
  163. package/dist/globals/operations/local/findOne.js.map +1 -1
  164. package/dist/globals/operations/local/findVersionByID.d.ts +2 -1
  165. package/dist/globals/operations/local/findVersionByID.d.ts.map +1 -1
  166. package/dist/globals/operations/local/findVersionByID.js +2 -1
  167. package/dist/globals/operations/local/findVersionByID.js.map +1 -1
  168. package/dist/globals/operations/local/findVersions.d.ts +2 -1
  169. package/dist/globals/operations/local/findVersions.d.ts.map +1 -1
  170. package/dist/globals/operations/local/findVersions.js +3 -2
  171. package/dist/globals/operations/local/findVersions.js.map +1 -1
  172. package/dist/globals/operations/local/restoreVersion.d.ts.map +1 -1
  173. package/dist/globals/operations/local/restoreVersion.js +1 -1
  174. package/dist/globals/operations/local/restoreVersion.js.map +1 -1
  175. package/dist/globals/operations/local/update.d.ts +5 -4
  176. package/dist/globals/operations/local/update.d.ts.map +1 -1
  177. package/dist/globals/operations/local/update.js +2 -1
  178. package/dist/globals/operations/local/update.js.map +1 -1
  179. package/dist/globals/operations/update.d.ts +4 -3
  180. package/dist/globals/operations/update.d.ts.map +1 -1
  181. package/dist/globals/operations/update.js +15 -2
  182. package/dist/globals/operations/update.js.map +1 -1
  183. package/dist/index.d.ts +61 -14
  184. package/dist/index.d.ts.map +1 -1
  185. package/dist/index.js +2 -0
  186. package/dist/index.js.map +1 -1
  187. package/dist/queues/config/generateJobsJSONSchemas.d.ts +18 -0
  188. package/dist/queues/config/generateJobsJSONSchemas.d.ts.map +1 -0
  189. package/dist/queues/config/generateJobsJSONSchemas.js +125 -0
  190. package/dist/queues/config/generateJobsJSONSchemas.js.map +1 -0
  191. package/dist/queues/config/jobsCollection.d.ts +4 -0
  192. package/dist/queues/config/jobsCollection.d.ts.map +1 -0
  193. package/dist/queues/config/jobsCollection.js +211 -0
  194. package/dist/queues/config/jobsCollection.js.map +1 -0
  195. package/dist/queues/config/types/index.d.ts +45 -0
  196. package/dist/queues/config/types/index.d.ts.map +1 -0
  197. package/dist/queues/config/types/index.js +3 -0
  198. package/dist/queues/config/types/index.js.map +1 -0
  199. package/dist/queues/config/types/taskTypes.d.ts +134 -0
  200. package/dist/queues/config/types/taskTypes.d.ts.map +1 -0
  201. package/dist/queues/config/types/taskTypes.js +3 -0
  202. package/dist/queues/config/types/taskTypes.js.map +1 -0
  203. package/dist/queues/config/types/workflowJSONTypes.d.ts +29 -0
  204. package/dist/queues/config/types/workflowJSONTypes.d.ts.map +1 -0
  205. package/dist/queues/config/types/workflowJSONTypes.js +3 -0
  206. package/dist/queues/config/types/workflowJSONTypes.js.map +1 -0
  207. package/dist/queues/config/types/workflowTypes.d.ts +98 -0
  208. package/dist/queues/config/types/workflowTypes.d.ts.map +1 -0
  209. package/dist/queues/config/types/workflowTypes.js +3 -0
  210. package/dist/queues/config/types/workflowTypes.js.map +1 -0
  211. package/dist/queues/localAPI.d.ts +23 -0
  212. package/dist/queues/localAPI.d.ts.map +1 -0
  213. package/dist/queues/localAPI.js +28 -0
  214. package/dist/queues/localAPI.js.map +1 -0
  215. package/dist/queues/operations/runJobs/index.d.ts +21 -0
  216. package/dist/queues/operations/runJobs/index.d.ts.map +1 -0
  217. package/dist/queues/operations/runJobs/index.js +180 -0
  218. package/dist/queues/operations/runJobs/index.js.map +1 -0
  219. package/dist/queues/operations/runJobs/runJSONJob/index.d.ts +18 -0
  220. package/dist/queues/operations/runJobs/runJSONJob/index.d.ts.map +1 -0
  221. package/dist/queues/operations/runJobs/runJSONJob/index.js +125 -0
  222. package/dist/queues/operations/runJobs/runJSONJob/index.js.map +1 -0
  223. package/dist/queues/operations/runJobs/runJob/calculateBackoffWaitUntil.d.ts +6 -0
  224. package/dist/queues/operations/runJobs/runJob/calculateBackoffWaitUntil.d.ts.map +1 -0
  225. package/dist/queues/operations/runJobs/runJob/calculateBackoffWaitUntil.js +26 -0
  226. package/dist/queues/operations/runJobs/runJob/calculateBackoffWaitUntil.js.map +1 -0
  227. package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.d.ts +26 -0
  228. package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.d.ts.map +1 -0
  229. package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.js +204 -0
  230. package/dist/queues/operations/runJobs/runJob/getRunTaskFunction.js.map +1 -0
  231. package/dist/queues/operations/runJobs/runJob/getUpdateJobFunction.d.ts +5 -0
  232. package/dist/queues/operations/runJobs/runJob/getUpdateJobFunction.d.ts.map +1 -0
  233. package/dist/queues/operations/runJobs/runJob/getUpdateJobFunction.js +18 -0
  234. package/dist/queues/operations/runJobs/runJob/getUpdateJobFunction.js.map +1 -0
  235. package/dist/queues/operations/runJobs/runJob/handleWorkflowError.d.ts +17 -0
  236. package/dist/queues/operations/runJobs/runJob/handleWorkflowError.d.ts.map +1 -0
  237. package/dist/queues/operations/runJobs/runJob/handleWorkflowError.js +43 -0
  238. package/dist/queues/operations/runJobs/runJob/handleWorkflowError.js.map +1 -0
  239. package/dist/queues/operations/runJobs/runJob/importHandlerPath.d.ts +2 -0
  240. package/dist/queues/operations/runJobs/runJob/importHandlerPath.d.ts.map +1 -0
  241. package/dist/queues/operations/runJobs/runJob/importHandlerPath.js +21 -0
  242. package/dist/queues/operations/runJobs/runJob/importHandlerPath.js.map +1 -0
  243. package/dist/queues/operations/runJobs/runJob/index.d.ts +17 -0
  244. package/dist/queues/operations/runJobs/runJob/index.d.ts.map +1 -0
  245. package/dist/queues/operations/runJobs/runJob/index.js +48 -0
  246. package/dist/queues/operations/runJobs/runJob/index.js.map +1 -0
  247. package/dist/queues/restEndpointRun.d.ts +3 -0
  248. package/dist/queues/restEndpointRun.d.ts.map +1 -0
  249. package/dist/queues/restEndpointRun.js +66 -0
  250. package/dist/queues/restEndpointRun.js.map +1 -0
  251. package/dist/queues/utilities/getJobTaskStatus.d.ts +9 -0
  252. package/dist/queues/utilities/getJobTaskStatus.d.ts.map +1 -0
  253. package/dist/queues/utilities/getJobTaskStatus.js +29 -0
  254. package/dist/queues/utilities/getJobTaskStatus.js.map +1 -0
  255. package/dist/types/index.d.ts +20 -2
  256. package/dist/types/index.d.ts.map +1 -1
  257. package/dist/types/index.js.map +1 -1
  258. package/dist/utilities/addSelectGenericsToGeneratedTyoes.spec.js +562 -0
  259. package/dist/utilities/addSelectGenericsToGeneratedTyoes.spec.js.map +1 -0
  260. package/dist/utilities/addSelectGenericsToGeneretedTypes.d.ts +4 -0
  261. package/dist/utilities/addSelectGenericsToGeneretedTypes.d.ts.map +1 -0
  262. package/dist/utilities/addSelectGenericsToGeneretedTypes.js +41 -0
  263. package/dist/utilities/addSelectGenericsToGeneretedTypes.js.map +1 -0
  264. package/dist/utilities/configToJSONSchema.d.ts +6 -1
  265. package/dist/utilities/configToJSONSchema.d.ts.map +1 -1
  266. package/dist/utilities/configToJSONSchema.js +171 -15
  267. package/dist/utilities/configToJSONSchema.js.map +1 -1
  268. package/dist/utilities/getSelectMode.d.ts +3 -0
  269. package/dist/utilities/getSelectMode.d.ts.map +1 -0
  270. package/dist/utilities/getSelectMode.js +14 -0
  271. package/dist/utilities/getSelectMode.js.map +1 -0
  272. package/dist/utilities/traverseFields.d.ts.map +1 -1
  273. package/dist/utilities/traverseFields.js +51 -8
  274. package/dist/utilities/traverseFields.js.map +1 -1
  275. package/dist/versions/drafts/getQueryDraftsSelect.d.ts +5 -0
  276. package/dist/versions/drafts/getQueryDraftsSelect.d.ts.map +1 -0
  277. package/dist/versions/drafts/getQueryDraftsSelect.js +18 -0
  278. package/dist/versions/drafts/getQueryDraftsSelect.js.map +1 -0
  279. package/dist/versions/drafts/replaceWithDraftIfAvailable.d.ts +3 -2
  280. package/dist/versions/drafts/replaceWithDraftIfAvailable.d.ts.map +1 -1
  281. package/dist/versions/drafts/replaceWithDraftIfAvailable.js +11 -7
  282. package/dist/versions/drafts/replaceWithDraftIfAvailable.js.map +1 -1
  283. package/dist/versions/saveVersion.d.ts +3 -2
  284. package/dist/versions/saveVersion.d.ts.map +1 -1
  285. package/dist/versions/saveVersion.js +5 -1
  286. package/dist/versions/saveVersion.js.map +1 -1
  287. package/package.json +3 -2
@@ -0,0 +1,41 @@
1
+ export const addSelectGenericsToGeneratedTypes = ({ compiledGeneratedTypes })=>{
2
+ const modifiedLines = [];
3
+ let isCollectionsSelectToken = false;
4
+ let isSelectTypeToken = false;
5
+ for (const line of compiledGeneratedTypes.split('\n')){
6
+ let newLine = line;
7
+ if (line === ` collectionsSelect?: {` || line === ` globalsSelect?: {`) {
8
+ isCollectionsSelectToken = true;
9
+ }
10
+ if (isCollectionsSelectToken) {
11
+ if (line === ' };') {
12
+ isCollectionsSelectToken = false;
13
+ } else {
14
+ // replace <posts: PostsSelect;> with <posts: PostsSelect<true> | PostsSelect<false;>
15
+ newLine = line.replace(/(['"]?\w+['"]?):\s*(\w+);/g, (_, variable, type)=>{
16
+ return `${variable}: ${type}<false> | ${type}<true>;`;
17
+ });
18
+ }
19
+ }
20
+ // eslint-disable-next-line regexp/no-unused-capturing-group
21
+ if (line.match(/via the `definition` "([\w-]+_select)"/g)) {
22
+ isSelectTypeToken = true;
23
+ }
24
+ if (isSelectTypeToken) {
25
+ if (line.startsWith('export interface')) {
26
+ // add generic to the interface
27
+ newLine = line.replace(/(export interface\s+\w+)(\s*\{)/g, '$1<T extends boolean = true>$2');
28
+ } else {
29
+ // replace booleans with T on the line
30
+ newLine = line.replace(/(?<!\?)\bboolean\b/g, 'T');
31
+ if (line === '}') {
32
+ isSelectTypeToken = false;
33
+ }
34
+ }
35
+ }
36
+ modifiedLines.push(newLine);
37
+ }
38
+ return modifiedLines.join('\n');
39
+ };
40
+
41
+ //# sourceMappingURL=addSelectGenericsToGeneretedTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utilities/addSelectGenericsToGeneretedTypes.ts"],"sourcesContent":["export const addSelectGenericsToGeneratedTypes = ({\n compiledGeneratedTypes,\n}: {\n compiledGeneratedTypes: string\n}) => {\n const modifiedLines = []\n\n let isCollectionsSelectToken = false\n let isSelectTypeToken = false\n\n for (const line of compiledGeneratedTypes.split('\\n')) {\n let newLine = line\n if (line === ` collectionsSelect?: {` || line === ` globalsSelect?: {`) {\n isCollectionsSelectToken = true\n }\n\n if (isCollectionsSelectToken) {\n if (line === ' };') {\n isCollectionsSelectToken = false\n } else {\n // replace <posts: PostsSelect;> with <posts: PostsSelect<true> | PostsSelect<false;>\n newLine = line.replace(/(['\"]?\\w+['\"]?):\\s*(\\w+);/g, (_, variable, type) => {\n return `${variable}: ${type}<false> | ${type}<true>;`\n })\n }\n }\n\n // eslint-disable-next-line regexp/no-unused-capturing-group\n if (line.match(/via the `definition` \"([\\w-]+_select)\"/g)) {\n isSelectTypeToken = true\n }\n\n if (isSelectTypeToken) {\n if (line.startsWith('export interface')) {\n // add generic to the interface\n newLine = line.replace(/(export interface\\s+\\w+)(\\s*\\{)/g, '$1<T extends boolean = true>$2')\n } else {\n // replace booleans with T on the line\n newLine = line.replace(/(?<!\\?)\\bboolean\\b/g, 'T')\n\n if (line === '}') {\n isSelectTypeToken = false\n }\n }\n }\n\n modifiedLines.push(newLine)\n }\n\n return modifiedLines.join('\\n')\n}\n"],"names":["addSelectGenericsToGeneratedTypes","compiledGeneratedTypes","modifiedLines","isCollectionsSelectToken","isSelectTypeToken","line","split","newLine","replace","_","variable","type","match","startsWith","push","join"],"mappings":"AAAA,OAAO,MAAMA,oCAAoC,CAAC,EAChDC,sBAAsB,EAGvB;IACC,MAAMC,gBAAgB,EAAE;IAExB,IAAIC,2BAA2B;IAC/B,IAAIC,oBAAoB;IAExB,KAAK,MAAMC,QAAQJ,uBAAuBK,KAAK,CAAC,MAAO;QACrD,IAAIC,UAAUF;QACd,IAAIA,SAAS,CAAC,uBAAuB,CAAC,IAAIA,SAAS,CAAC,mBAAmB,CAAC,EAAE;YACxEF,2BAA2B;QAC7B;QAEA,IAAIA,0BAA0B;YAC5B,IAAIE,SAAS,QAAQ;gBACnBF,2BAA2B;YAC7B,OAAO;gBACL,qFAAqF;gBACrFI,UAAUF,KAAKG,OAAO,CAAC,8BAA8B,CAACC,GAAGC,UAAUC;oBACjE,OAAO,CAAC,EAAED,SAAS,EAAE,EAAEC,KAAK,UAAU,EAAEA,KAAK,OAAO,CAAC;gBACvD;YACF;QACF;QAEA,4DAA4D;QAC5D,IAAIN,KAAKO,KAAK,CAAC,4CAA4C;YACzDR,oBAAoB;QACtB;QAEA,IAAIA,mBAAmB;YACrB,IAAIC,KAAKQ,UAAU,CAAC,qBAAqB;gBACvC,+BAA+B;gBAC/BN,UAAUF,KAAKG,OAAO,CAAC,oCAAoC;YAC7D,OAAO;gBACL,sCAAsC;gBACtCD,UAAUF,KAAKG,OAAO,CAAC,uBAAuB;gBAE9C,IAAIH,SAAS,KAAK;oBAChBD,oBAAoB;gBACtB;YACF;QACF;QAEAF,cAAcY,IAAI,CAACP;IACrB;IAEA,OAAOL,cAAca,IAAI,CAAC;AAC5B,EAAC"}
@@ -25,7 +25,12 @@ interfaceNameDefinitions: Map<string, JSONSchema4>, config?: SanitizedConfig): {
25
25
  };
26
26
  required: string[];
27
27
  };
28
- export declare function entityToJSONSchema(config: SanitizedConfig, incomingEntity: SanitizedCollectionConfig | SanitizedGlobalConfig, interfaceNameDefinitions: Map<string, JSONSchema4>, defaultIDType: 'number' | 'text'): JSONSchema4;
28
+ export declare function entityToJSONSchema(config: SanitizedConfig, incomingEntity: SanitizedCollectionConfig | SanitizedGlobalConfig, interfaceNameDefinitions: Map<string, JSONSchema4>, defaultIDType: 'number' | 'text', collectionIDFieldTypes?: {
29
+ [key: string]: 'number' | 'string';
30
+ }): JSONSchema4;
31
+ export declare function fieldsToSelectJSONSchema({ fields }: {
32
+ fields: Field[];
33
+ }): JSONSchema4;
29
34
  export declare function authCollectionToOperationsJSONSchema(config: SanitizedCollectionConfig): JSONSchema4;
30
35
  /**
31
36
  * This is used for generating the TypeScript types (payload-types.ts) with the payload generate:types command.
@@ -1 +1 @@
1
- {"version":3,"file":"configToJSONSchema.d.ts","sourceRoot":"","sources":["../../src/utilities/configToJSONSchema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAMnE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAC/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,KAAK,EAAE,KAAK,EAA8B,MAAM,2BAA2B,CAAA;AAClF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAgIvE;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,mBAAmB,EAC9B,UAAU,EAAE,OAAO,GAClB,mBAAmB,GAAG,mBAAmB,EAAE,CAO7C;AAED,wBAAgB,kBAAkB;AAChC;;;;GAIG;AACH,sBAAsB,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAA;CAAE,EAC9D,MAAM,EAAE,KAAK,EAAE;AACf;;GAEG;AACH,wBAAwB,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,EAClD,MAAM,CAAC,EAAE,eAAe,GACvB;IACD,UAAU,EAAE;QACV,CAAC,CAAC,EAAE,MAAM,GAAG,WAAW,CAAA;KACzB,CAAA;IACD,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB,CAyZA;AAGD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,eAAe,EACvB,cAAc,EAAE,yBAAyB,GAAG,qBAAqB,EACjE,wBAAwB,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,EAClD,aAAa,EAAE,QAAQ,GAAG,MAAM,GAC/B,WAAW,CA8Cb;AAgHD,wBAAgB,oCAAoC,CAClD,MAAM,EAAE,yBAAyB,GAChC,WAAW,CA0Bb;AAoBD;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,eAAe,EACvB,aAAa,CAAC,EAAE,QAAQ,GAAG,MAAM,GAChC,WAAW,CAoDb"}
1
+ {"version":3,"file":"configToJSONSchema.d.ts","sourceRoot":"","sources":["../../src/utilities/configToJSONSchema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAMnE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAC/E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,KAAK,EAAE,KAAK,EAA8B,MAAM,2BAA2B,CAAA;AAClF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAoJvE;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,mBAAmB,EAC9B,UAAU,EAAE,OAAO,GAClB,mBAAmB,GAAG,mBAAmB,EAAE,CAO7C;AAED,wBAAgB,kBAAkB;AAChC;;;;GAIG;AACH,sBAAsB,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAA;CAAE,EAC9D,MAAM,EAAE,KAAK,EAAE;AACf;;GAEG;AACH,wBAAwB,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,EAClD,MAAM,CAAC,EAAE,eAAe,GACvB;IACD,UAAU,EAAE;QACV,CAAC,CAAC,EAAE,MAAM,GAAG,WAAW,CAAA;KACzB,CAAA;IACD,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB,CA6ZA;AAGD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,eAAe,EACvB,cAAc,EAAE,yBAAyB,GAAG,qBAAqB,EACjE,wBAAwB,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,EAClD,aAAa,EAAE,QAAQ,GAAG,MAAM,EAChC,sBAAsB,CAAC,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAA;CAAE,GAC9D,WAAW,CA8Cb;AAED,wBAAgB,wBAAwB,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,KAAK,EAAE,CAAA;CAAE,GAAG,WAAW,CA0FrF;AAgHD,wBAAgB,oCAAoC,CAClD,MAAM,EAAE,yBAAyB,GAChC,WAAW,CA0Bb;AAoBD;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,eAAe,EACvB,aAAa,CAAC,EAAE,QAAQ,GAAG,MAAM,GAChC,WAAW,CA0Gb"}
@@ -2,6 +2,7 @@ import pluralize from 'pluralize';
2
2
  const { singular } = pluralize;
3
3
  import { MissingEditorProp } from '../errors/MissingEditorProp.js';
4
4
  import { fieldAffectsData, tabHasName } from '../fields/config/types.js';
5
+ import { generateJobsJSONSchemas } from '../queues/config/generateJobsJSONSchemas.js';
5
6
  import { deepCopyObject } from './deepCopyObject.js';
6
7
  import { toWords } from './formatLabels.js';
7
8
  import { getCollectionIDFieldTypes } from './getCollectionIDFieldTypes.js';
@@ -53,6 +54,22 @@ function generateEntitySchemas(entities) {
53
54
  required: Object.keys(properties)
54
55
  };
55
56
  }
57
+ function generateEntitySelectSchemas(entities) {
58
+ const properties = [
59
+ ...entities
60
+ ].reduce((acc, { slug })=>{
61
+ acc[slug] = {
62
+ $ref: `#/definitions/${slug}_select`
63
+ };
64
+ return acc;
65
+ }, {});
66
+ return {
67
+ type: 'object',
68
+ additionalProperties: false,
69
+ properties,
70
+ required: Object.keys(properties)
71
+ };
72
+ }
56
73
  function generateLocaleEntitySchemas(localization) {
57
74
  if (localization && 'locales' in localization && localization?.locales) {
58
75
  const localesFromConfig = localization?.locales;
@@ -254,15 +271,19 @@ export function fieldsToJSONSchema(/**
254
271
  fieldSchema = {
255
272
  type: withNullableJSONSchemaType('array', isRequired),
256
273
  items: {
257
- type: 'string',
258
- enum: optionEnums
274
+ type: 'string'
259
275
  }
260
276
  };
277
+ if (optionEnums?.length) {
278
+ fieldSchema.items.enum = optionEnums;
279
+ }
261
280
  } else {
262
281
  fieldSchema = {
263
- type: withNullableJSONSchemaType('string', isRequired),
264
- enum: optionEnums
282
+ type: withNullableJSONSchemaType('string', isRequired)
265
283
  };
284
+ if (optionEnums?.length) {
285
+ fieldSchema.enum = optionEnums;
286
+ }
266
287
  }
267
288
  break;
268
289
  }
@@ -531,7 +552,13 @@ export function fieldsToJSONSchema(/**
531
552
  };
532
553
  }
533
554
  // This function is part of the public API and is exported through payload/utilities
534
- export function entityToJSONSchema(config, incomingEntity, interfaceNameDefinitions, defaultIDType) {
555
+ export function entityToJSONSchema(config, incomingEntity, interfaceNameDefinitions, defaultIDType, collectionIDFieldTypes) {
556
+ if (!collectionIDFieldTypes) {
557
+ collectionIDFieldTypes = getCollectionIDFieldTypes({
558
+ config,
559
+ defaultIDType
560
+ });
561
+ }
535
562
  const entity = deepCopyObject(incomingEntity);
536
563
  const title = entity.typescript?.interface ? entity.typescript.interface : singular(toWords(entity.slug, true));
537
564
  const idField = {
@@ -563,11 +590,6 @@ export function entityToJSONSchema(config, incomingEntity, interfaceNameDefiniti
563
590
  type: 'text'
564
591
  });
565
592
  }
566
- // Used for relationship fields, to determine whether to use a string or number type for the ID.
567
- const collectionIDFieldTypes = getCollectionIDFieldTypes({
568
- config,
569
- defaultIDType
570
- });
571
593
  return {
572
594
  type: 'object',
573
595
  additionalProperties: false,
@@ -575,6 +597,97 @@ export function entityToJSONSchema(config, incomingEntity, interfaceNameDefiniti
575
597
  ...fieldsToJSONSchema(collectionIDFieldTypes, entity.fields, interfaceNameDefinitions, config)
576
598
  };
577
599
  }
600
+ export function fieldsToSelectJSONSchema({ fields }) {
601
+ const schema = {
602
+ type: 'object',
603
+ additionalProperties: false,
604
+ properties: {}
605
+ };
606
+ for (const field of fields){
607
+ switch(field.type){
608
+ case 'row':
609
+ case 'collapsible':
610
+ schema.properties = {
611
+ ...schema.properties,
612
+ ...fieldsToSelectJSONSchema({
613
+ fields: field.fields
614
+ }).properties
615
+ };
616
+ break;
617
+ case 'array':
618
+ case 'group':
619
+ schema.properties[field.name] = {
620
+ oneOf: [
621
+ {
622
+ type: 'boolean'
623
+ },
624
+ fieldsToSelectJSONSchema({
625
+ fields: field.fields
626
+ })
627
+ ]
628
+ };
629
+ break;
630
+ case 'tabs':
631
+ for (const tab of field.tabs){
632
+ if (tabHasName(tab)) {
633
+ schema.properties[tab.name] = {
634
+ oneOf: [
635
+ {
636
+ type: 'boolean'
637
+ },
638
+ fieldsToSelectJSONSchema({
639
+ fields: tab.fields
640
+ })
641
+ ]
642
+ };
643
+ continue;
644
+ }
645
+ schema.properties = {
646
+ ...schema.properties,
647
+ ...fieldsToSelectJSONSchema({
648
+ fields: tab.fields
649
+ }).properties
650
+ };
651
+ }
652
+ break;
653
+ case 'blocks':
654
+ {
655
+ const blocksSchema = {
656
+ type: 'object',
657
+ additionalProperties: false,
658
+ properties: {}
659
+ };
660
+ for (const block of field.blocks){
661
+ blocksSchema.properties[block.slug] = {
662
+ oneOf: [
663
+ {
664
+ type: 'boolean'
665
+ },
666
+ fieldsToSelectJSONSchema({
667
+ fields: block.fields
668
+ })
669
+ ]
670
+ };
671
+ }
672
+ schema.properties[field.name] = {
673
+ oneOf: [
674
+ {
675
+ type: 'boolean'
676
+ },
677
+ blocksSchema
678
+ ]
679
+ };
680
+ break;
681
+ }
682
+ default:
683
+ schema.properties[field.name] = {
684
+ type: 'boolean'
685
+ };
686
+ break;
687
+ }
688
+ }
689
+ return schema;
690
+ }
578
691
  const fieldType = {
579
692
  type: 'string',
580
693
  required: false
@@ -756,13 +869,38 @@ function generateAuthOperationSchemas(collections) {
756
869
  */ export function configToJSONSchema(config, defaultIDType) {
757
870
  // a mutable Map to store custom top-level `interfaceName` types. Fields with an `interfaceName` property will be moved to the top-level definitions here
758
871
  const interfaceNameDefinitions = new Map();
872
+ // Used for relationship fields, to determine whether to use a string or number type for the ID.
873
+ const collectionIDFieldTypes = getCollectionIDFieldTypes({
874
+ config,
875
+ defaultIDType
876
+ });
759
877
  // 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
760
878
  // types to be inlined inside the `Config` type
761
- const entityDefinitions = [
762
- ...config.globals,
763
- ...config.collections
764
- ].reduce((acc, entity)=>{
765
- acc[entity.slug] = entityToJSONSchema(config, entity, interfaceNameDefinitions, defaultIDType);
879
+ const entities = [
880
+ ...config.globals.map((global)=>({
881
+ type: 'global',
882
+ entity: global
883
+ })),
884
+ ...config.collections.map((collection)=>({
885
+ type: 'collection',
886
+ entity: collection
887
+ }))
888
+ ];
889
+ const entityDefinitions = entities.reduce((acc, { type, entity })=>{
890
+ acc[entity.slug] = entityToJSONSchema(config, entity, interfaceNameDefinitions, defaultIDType, collectionIDFieldTypes);
891
+ const select = fieldsToSelectJSONSchema({
892
+ fields: entity.fields
893
+ });
894
+ if (type === 'global') {
895
+ select.properties.globalType = {
896
+ type: 'boolean'
897
+ };
898
+ }
899
+ acc[`${entity.slug}_select`] = {
900
+ type: 'object',
901
+ additionalProperties: false,
902
+ ...select
903
+ };
766
904
  return acc;
767
905
  }, {});
768
906
  const authOperationDefinitions = [
@@ -773,6 +911,7 @@ function generateAuthOperationSchemas(collections) {
773
911
  }, {
774
912
  auth: {}
775
913
  });
914
+ const jobsSchemas = config.jobs ? generateJobsJSONSchemas(config, config.jobs, interfaceNameDefinitions, collectionIDFieldTypes) : {};
776
915
  let jsonSchema = {
777
916
  additionalProperties: false,
778
917
  definitions: {
@@ -785,8 +924,10 @@ function generateAuthOperationSchemas(collections) {
785
924
  properties: {
786
925
  auth: generateAuthOperationSchemas(config.collections),
787
926
  collections: generateEntitySchemas(config.collections || []),
927
+ collectionsSelect: generateEntitySelectSchemas(config.collections || []),
788
928
  db: generateDbEntitySchema(config),
789
929
  globals: generateEntitySchemas(config.globals || []),
930
+ globalsSelect: generateEntitySelectSchemas(config.globals || []),
790
931
  locale: generateLocaleEntitySchemas(config.localization),
791
932
  user: generateAuthEntitySchemas(config.collections)
792
933
  },
@@ -800,6 +941,21 @@ function generateAuthOperationSchemas(collections) {
800
941
  ],
801
942
  title: 'Config'
802
943
  };
944
+ if (jobsSchemas.definitions?.size) {
945
+ for (const [key, value] of jobsSchemas.definitions){
946
+ jsonSchema.definitions[key] = value;
947
+ }
948
+ }
949
+ if (jobsSchemas.properties) {
950
+ jsonSchema.properties.jobs = {
951
+ type: 'object',
952
+ additionalProperties: false,
953
+ properties: jobsSchemas.properties,
954
+ required: [
955
+ 'tasks'
956
+ ]
957
+ };
958
+ }
803
959
  if (config?.typescript?.schema?.length) {
804
960
  for (const schema of config.typescript.schema){
805
961
  jsonSchema = schema({
@@ -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 { Auth } from '../auth/types.js'\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 { MissingEditorProp } from '../errors/MissingEditorProp.js'\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) {\n return false\n }\n\n const isMarkedRequired = 'required' in field && field.required === true\n if (fieldAffectsData(field) && isMarkedRequired) {\n return true\n }\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 * Generates the JSON Schema for database configuration\n *\n * @example { db: idType: string }\n */\nfunction generateDbEntitySchema(config: SanitizedConfig): JSONSchema4 {\n const defaultIDType: JSONSchema4 =\n config.db?.defaultIDType === 'number' ? { type: 'number' } : { type: 'string' }\n\n return {\n type: 'object',\n additionalProperties: false,\n properties: {\n defaultIDType,\n },\n required: ['defaultIDType'],\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) {\n return fieldType\n }\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) {\n requiredFieldNames.add(field.name)\n }\n\n let fieldSchema: JSONSchema4\n\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 = field.jsonSchema?.schema || {\n type: ['object', 'array', 'string', 'number', 'boolean', 'null'],\n }\n break\n }\n\n case 'richText': {\n if (!field?.editor) {\n throw new MissingEditorProp(field) // while we allow disabling editor functionality, you should not have any richText fields defined if you do not have an editor\n }\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 'join': {\n fieldSchema = {\n type: withNullableJSONSchemaType('object', false),\n additionalProperties: false,\n properties: {\n docs: {\n type: withNullableJSONSchemaType('array', false),\n items: {\n oneOf: [\n {\n type: collectionIDFieldTypes[field.collection],\n },\n {\n $ref: `#/definitions/${field.collection}`,\n },\n ],\n },\n },\n hasNextPage: { type: withNullableJSONSchemaType('boolean', false) },\n },\n }\n break\n }\n\n case 'upload':\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 'blocks': {\n // Check for a case where no blocks are provided.\n // We need to generate an empty array for this case, note that JSON schema 4 doesn't support empty arrays\n // so the best we can get is `unknown[]`\n const hasBlocks = Boolean(field.blocks.length)\n\n fieldSchema = {\n type: withNullableJSONSchemaType('array', isRequired),\n items: hasBlocks\n ? {\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 }\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 ('typescriptSchema' in field && field?.typescriptSchema?.length) {\n for (const schema of field.typescriptSchema) {\n fieldSchema = schema({ jsonSchema: fieldSchema })\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\nconst fieldType: JSONSchema4 = {\n type: 'string',\n required: false,\n}\nconst generateAuthFieldTypes = ({\n type,\n loginWithUsername,\n}: {\n loginWithUsername: Auth['loginWithUsername']\n type: 'forgotOrUnlock' | 'login' | 'register'\n}): JSONSchema4 => {\n if (loginWithUsername) {\n switch (type) {\n case 'login': {\n if (loginWithUsername.allowEmailLogin) {\n // allow username or email and require password for login\n return {\n additionalProperties: false,\n oneOf: [\n {\n additionalProperties: false,\n properties: { email: fieldType, password: fieldType },\n required: ['email', 'password'],\n },\n {\n additionalProperties: false,\n properties: { password: fieldType, username: fieldType },\n required: ['username', 'password'],\n },\n ],\n }\n } else {\n // allow only username and password for login\n return {\n additionalProperties: false,\n properties: {\n password: fieldType,\n username: fieldType,\n },\n required: ['username', 'password'],\n }\n }\n }\n\n case 'register': {\n const requiredFields: ('email' | 'password' | 'username')[] = ['password']\n const properties: {\n email?: JSONSchema4['properties']\n password?: JSONSchema4['properties']\n username?: JSONSchema4['properties']\n } = {\n password: fieldType,\n username: fieldType,\n }\n\n if (loginWithUsername.requireEmail) {\n requiredFields.push('email')\n }\n if (loginWithUsername.requireUsername) {\n requiredFields.push('username')\n }\n if (loginWithUsername.requireEmail || loginWithUsername.allowEmailLogin) {\n properties.email = fieldType\n }\n\n return {\n additionalProperties: false,\n properties,\n required: requiredFields,\n }\n }\n\n case 'forgotOrUnlock': {\n if (loginWithUsername.allowEmailLogin) {\n // allow email or username for unlock/forgot-password\n return {\n additionalProperties: false,\n oneOf: [\n {\n additionalProperties: false,\n properties: { email: fieldType },\n required: ['email'],\n },\n {\n additionalProperties: false,\n properties: { username: fieldType },\n required: ['username'],\n },\n ],\n }\n } else {\n // allow only username for unlock/forgot-password\n return {\n additionalProperties: false,\n properties: { username: fieldType },\n required: ['username'],\n }\n }\n }\n }\n }\n\n // default email (and password for login/register)\n return {\n additionalProperties: false,\n properties: { email: fieldType, password: fieldType },\n required: ['email', 'password'],\n }\n}\n\nexport function authCollectionToOperationsJSONSchema(\n config: SanitizedCollectionConfig,\n): JSONSchema4 {\n const loginWithUsername = config.auth?.loginWithUsername\n const loginUserFields: JSONSchema4 = generateAuthFieldTypes({ type: 'login', loginWithUsername })\n const forgotOrUnlockUserFields: JSONSchema4 = generateAuthFieldTypes({\n type: 'forgotOrUnlock',\n loginWithUsername,\n })\n const registerUserFields: JSONSchema4 = generateAuthFieldTypes({\n type: 'register',\n loginWithUsername,\n })\n\n const properties: JSONSchema4['properties'] = {\n forgotPassword: forgotOrUnlockUserFields,\n login: loginUserFields,\n registerFirstUser: registerUserFields,\n unlock: forgotOrUnlockUserFields,\n }\n\n return {\n type: 'object',\n additionalProperties: false,\n properties,\n required: Object.keys(properties),\n title: `${singular(toWords(`${config.slug}`, true))}AuthOperations`,\n }\n}\n\nfunction generateAuthOperationSchemas(collections: SanitizedCollectionConfig[]): JSONSchema4 {\n const properties = collections.reduce((acc, collection) => {\n if (collection.auth) {\n acc[collection.slug] = {\n $ref: `#/definitions/auth/${collection.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\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 const authOperationDefinitions = [...config.collections]\n .filter(({ auth }) => Boolean(auth))\n .reduce(\n (acc, authCollection) => {\n acc.auth[authCollection.slug] = authCollectionToOperationsJSONSchema(authCollection)\n return acc\n },\n { auth: {} },\n )\n\n let jsonSchema: JSONSchema4 = {\n additionalProperties: false,\n definitions: {\n ...entityDefinitions,\n ...Object.fromEntries(interfaceNameDefinitions),\n ...authOperationDefinitions,\n },\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 auth: generateAuthOperationSchemas(config.collections),\n collections: generateEntitySchemas(config.collections || []),\n db: generateDbEntitySchema(config),\n globals: generateEntitySchemas(config.globals || []),\n locale: generateLocaleEntitySchemas(config.localization),\n user: generateAuthEntitySchemas(config.collections),\n },\n required: ['user', 'locale', 'collections', 'globals', 'auth', 'db'],\n title: 'Config',\n }\n\n if (config?.typescript?.schema?.length) {\n for (const schema of config.typescript.schema) {\n jsonSchema = schema({ jsonSchema })\n }\n }\n\n return jsonSchema\n}\n"],"names":["pluralize","singular","MissingEditorProp","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","generateDbEntitySchema","config","defaultIDType","db","withNullableJSONSchemaType","fieldType","isRequired","fieldTypes","push","fieldsToJSONSchema","collectionIDFieldTypes","interfaceNameDefinitions","requiredFieldNames","Set","fromEntries","fieldSchemas","add","name","fieldSchema","hasMany","items","jsonSchema","schema","editor","Error","outputSchema","optionEnums","maxItems","minItems","docs","hasNextPage","Array","isArray","relationTo","relation","const","hasBlocks","blocks","length","block","blockFieldSchemas","blockSchema","blockType","interfaceName","set","childSchema","entries","forEach","propName","propSchema","hasRequiredFields","typescriptSchema","Map","from","entityToJSONSchema","incomingEntity","entity","title","typescript","interface","idField","customIdField","find","unshift","timestamps","disableLocalStrategy","generateAuthFieldTypes","loginWithUsername","allowEmailLogin","email","password","username","requiredFields","requireEmail","requireUsername","authCollectionToOperationsJSONSchema","loginUserFields","forgotOrUnlockUserFields","registerUserFields","forgotPassword","login","registerFirstUser","unlock","generateAuthOperationSchemas","collections","configToJSONSchema","entityDefinitions","globals","authOperationDefinitions","authCollection","definitions","user"],"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 { Auth } from '../auth/types.js'\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 { MissingEditorProp } from '../errors/MissingEditorProp.js'\nimport { fieldAffectsData, tabHasName } from '../fields/config/types.js'\nimport { generateJobsJSONSchemas } from '../queues/config/generateJobsJSONSchemas.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) {\n return false\n }\n\n const isMarkedRequired = 'required' in field && field.required === true\n if (fieldAffectsData(field) && isMarkedRequired) {\n return true\n }\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 generateEntitySelectSchemas(\n entities: (SanitizedCollectionConfig | SanitizedGlobalConfig)[],\n): JSONSchema4 {\n const properties = [...entities].reduce((acc, { slug }) => {\n acc[slug] = {\n $ref: `#/definitions/${slug}_select`,\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 * Generates the JSON Schema for database configuration\n *\n * @example { db: idType: string }\n */\nfunction generateDbEntitySchema(config: SanitizedConfig): JSONSchema4 {\n const defaultIDType: JSONSchema4 =\n config.db?.defaultIDType === 'number' ? { type: 'number' } : { type: 'string' }\n\n return {\n type: 'object',\n additionalProperties: false,\n properties: {\n defaultIDType,\n },\n required: ['defaultIDType'],\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) {\n return fieldType\n }\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) {\n requiredFieldNames.add(field.name)\n }\n\n let fieldSchema: JSONSchema4\n\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 = field.jsonSchema?.schema || {\n type: ['object', 'array', 'string', 'number', 'boolean', 'null'],\n }\n break\n }\n\n case 'richText': {\n if (!field?.editor) {\n throw new MissingEditorProp(field) // while we allow disabling editor functionality, you should not have any richText fields defined if you do not have an editor\n }\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 },\n }\n if (optionEnums?.length) {\n ;(fieldSchema.items as JSONSchema4).enum = optionEnums\n }\n } else {\n fieldSchema = {\n type: withNullableJSONSchemaType('string', isRequired),\n }\n if (optionEnums?.length) {\n fieldSchema.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 'join': {\n fieldSchema = {\n type: withNullableJSONSchemaType('object', false),\n additionalProperties: false,\n properties: {\n docs: {\n type: withNullableJSONSchemaType('array', false),\n items: {\n oneOf: [\n {\n type: collectionIDFieldTypes[field.collection],\n },\n {\n $ref: `#/definitions/${field.collection}`,\n },\n ],\n },\n },\n hasNextPage: { type: withNullableJSONSchemaType('boolean', false) },\n },\n }\n break\n }\n\n case 'upload':\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 'blocks': {\n // Check for a case where no blocks are provided.\n // We need to generate an empty array for this case, note that JSON schema 4 doesn't support empty arrays\n // so the best we can get is `unknown[]`\n const hasBlocks = Boolean(field.blocks.length)\n\n fieldSchema = {\n type: withNullableJSONSchemaType('array', isRequired),\n items: hasBlocks\n ? {\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 }\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 ('typescriptSchema' in field && field?.typescriptSchema?.length) {\n for (const schema of field.typescriptSchema) {\n fieldSchema = schema({ jsonSchema: fieldSchema })\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 collectionIDFieldTypes?: { [key: string]: 'number' | 'string' },\n): JSONSchema4 {\n if (!collectionIDFieldTypes) {\n collectionIDFieldTypes = getCollectionIDFieldTypes({ config, defaultIDType })\n }\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 return {\n type: 'object',\n additionalProperties: false,\n title,\n ...fieldsToJSONSchema(collectionIDFieldTypes, entity.fields, interfaceNameDefinitions, config),\n }\n}\n\nexport function fieldsToSelectJSONSchema({ fields }: { fields: Field[] }): JSONSchema4 {\n const schema: JSONSchema4 = {\n type: 'object',\n additionalProperties: false,\n properties: {},\n }\n\n for (const field of fields) {\n switch (field.type) {\n case 'row':\n case 'collapsible':\n schema.properties = {\n ...schema.properties,\n ...fieldsToSelectJSONSchema({ fields: field.fields }).properties,\n }\n\n break\n\n case 'array':\n case 'group':\n schema.properties[field.name] = {\n oneOf: [\n {\n type: 'boolean',\n },\n fieldsToSelectJSONSchema({ fields: field.fields }),\n ],\n }\n break\n\n case 'tabs':\n for (const tab of field.tabs) {\n if (tabHasName(tab)) {\n schema.properties[tab.name] = {\n oneOf: [\n {\n type: 'boolean',\n },\n fieldsToSelectJSONSchema({ fields: tab.fields }),\n ],\n }\n continue\n }\n\n schema.properties = {\n ...schema.properties,\n ...fieldsToSelectJSONSchema({ fields: tab.fields }).properties,\n }\n }\n break\n\n case 'blocks': {\n const blocksSchema: JSONSchema4 = {\n type: 'object',\n additionalProperties: false,\n properties: {},\n }\n\n for (const block of field.blocks) {\n blocksSchema.properties[block.slug] = {\n oneOf: [\n {\n type: 'boolean',\n },\n fieldsToSelectJSONSchema({ fields: block.fields }),\n ],\n }\n }\n\n schema.properties[field.name] = {\n oneOf: [\n {\n type: 'boolean',\n },\n blocksSchema,\n ],\n }\n\n break\n }\n\n default:\n schema.properties[field.name] = {\n type: 'boolean',\n }\n break\n }\n }\n\n return schema\n}\n\nconst fieldType: JSONSchema4 = {\n type: 'string',\n required: false,\n}\nconst generateAuthFieldTypes = ({\n type,\n loginWithUsername,\n}: {\n loginWithUsername: Auth['loginWithUsername']\n type: 'forgotOrUnlock' | 'login' | 'register'\n}): JSONSchema4 => {\n if (loginWithUsername) {\n switch (type) {\n case 'login': {\n if (loginWithUsername.allowEmailLogin) {\n // allow username or email and require password for login\n return {\n additionalProperties: false,\n oneOf: [\n {\n additionalProperties: false,\n properties: { email: fieldType, password: fieldType },\n required: ['email', 'password'],\n },\n {\n additionalProperties: false,\n properties: { password: fieldType, username: fieldType },\n required: ['username', 'password'],\n },\n ],\n }\n } else {\n // allow only username and password for login\n return {\n additionalProperties: false,\n properties: {\n password: fieldType,\n username: fieldType,\n },\n required: ['username', 'password'],\n }\n }\n }\n\n case 'register': {\n const requiredFields: ('email' | 'password' | 'username')[] = ['password']\n const properties: {\n email?: JSONSchema4['properties']\n password?: JSONSchema4['properties']\n username?: JSONSchema4['properties']\n } = {\n password: fieldType,\n username: fieldType,\n }\n\n if (loginWithUsername.requireEmail) {\n requiredFields.push('email')\n }\n if (loginWithUsername.requireUsername) {\n requiredFields.push('username')\n }\n if (loginWithUsername.requireEmail || loginWithUsername.allowEmailLogin) {\n properties.email = fieldType\n }\n\n return {\n additionalProperties: false,\n properties,\n required: requiredFields,\n }\n }\n\n case 'forgotOrUnlock': {\n if (loginWithUsername.allowEmailLogin) {\n // allow email or username for unlock/forgot-password\n return {\n additionalProperties: false,\n oneOf: [\n {\n additionalProperties: false,\n properties: { email: fieldType },\n required: ['email'],\n },\n {\n additionalProperties: false,\n properties: { username: fieldType },\n required: ['username'],\n },\n ],\n }\n } else {\n // allow only username for unlock/forgot-password\n return {\n additionalProperties: false,\n properties: { username: fieldType },\n required: ['username'],\n }\n }\n }\n }\n }\n\n // default email (and password for login/register)\n return {\n additionalProperties: false,\n properties: { email: fieldType, password: fieldType },\n required: ['email', 'password'],\n }\n}\n\nexport function authCollectionToOperationsJSONSchema(\n config: SanitizedCollectionConfig,\n): JSONSchema4 {\n const loginWithUsername = config.auth?.loginWithUsername\n const loginUserFields: JSONSchema4 = generateAuthFieldTypes({ type: 'login', loginWithUsername })\n const forgotOrUnlockUserFields: JSONSchema4 = generateAuthFieldTypes({\n type: 'forgotOrUnlock',\n loginWithUsername,\n })\n const registerUserFields: JSONSchema4 = generateAuthFieldTypes({\n type: 'register',\n loginWithUsername,\n })\n\n const properties: JSONSchema4['properties'] = {\n forgotPassword: forgotOrUnlockUserFields,\n login: loginUserFields,\n registerFirstUser: registerUserFields,\n unlock: forgotOrUnlockUserFields,\n }\n\n return {\n type: 'object',\n additionalProperties: false,\n properties,\n required: Object.keys(properties),\n title: `${singular(toWords(`${config.slug}`, true))}AuthOperations`,\n }\n}\n\nfunction generateAuthOperationSchemas(collections: SanitizedCollectionConfig[]): JSONSchema4 {\n const properties = collections.reduce((acc, collection) => {\n if (collection.auth) {\n acc[collection.slug] = {\n $ref: `#/definitions/auth/${collection.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\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 // 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 // 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\n const entities: {\n entity: SanitizedCollectionConfig | SanitizedGlobalConfig\n type: 'collection' | 'global'\n }[] = [\n ...config.globals.map((global) => ({ type: 'global' as const, entity: global })),\n ...config.collections.map((collection) => ({\n type: 'collection' as const,\n entity: collection,\n })),\n ]\n\n const entityDefinitions: { [k: string]: JSONSchema4 } = entities.reduce(\n (acc, { type, entity }) => {\n acc[entity.slug] = entityToJSONSchema(\n config,\n entity,\n interfaceNameDefinitions,\n defaultIDType,\n collectionIDFieldTypes,\n )\n const select = fieldsToSelectJSONSchema({ fields: entity.fields })\n\n if (type === 'global') {\n select.properties.globalType = {\n type: 'boolean',\n }\n }\n\n acc[`${entity.slug}_select`] = {\n type: 'object',\n additionalProperties: false,\n ...select,\n }\n\n return acc\n },\n {},\n )\n\n const authOperationDefinitions = [...config.collections]\n .filter(({ auth }) => Boolean(auth))\n .reduce(\n (acc, authCollection) => {\n acc.auth[authCollection.slug] = authCollectionToOperationsJSONSchema(authCollection)\n return acc\n },\n { auth: {} },\n )\n\n const jobsSchemas = config.jobs\n ? generateJobsJSONSchemas(config, config.jobs, interfaceNameDefinitions, collectionIDFieldTypes)\n : {}\n\n let jsonSchema: JSONSchema4 = {\n additionalProperties: false,\n definitions: {\n ...entityDefinitions,\n ...Object.fromEntries(interfaceNameDefinitions),\n ...authOperationDefinitions,\n },\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 auth: generateAuthOperationSchemas(config.collections),\n collections: generateEntitySchemas(config.collections || []),\n collectionsSelect: generateEntitySelectSchemas(config.collections || []),\n db: generateDbEntitySchema(config),\n globals: generateEntitySchemas(config.globals || []),\n globalsSelect: generateEntitySelectSchemas(config.globals || []),\n locale: generateLocaleEntitySchemas(config.localization),\n user: generateAuthEntitySchemas(config.collections),\n },\n required: ['user', 'locale', 'collections', 'globals', 'auth', 'db'],\n title: 'Config',\n }\n if (jobsSchemas.definitions?.size) {\n for (const [key, value] of jobsSchemas.definitions) {\n jsonSchema.definitions[key] = value\n }\n }\n if (jobsSchemas.properties) {\n jsonSchema.properties.jobs = {\n type: 'object',\n additionalProperties: false,\n properties: jobsSchemas.properties,\n required: ['tasks'],\n }\n }\n\n if (config?.typescript?.schema?.length) {\n for (const schema of config.typescript.schema) {\n jsonSchema = schema({ jsonSchema })\n }\n }\n\n return jsonSchema\n}\n"],"names":["pluralize","singular","MissingEditorProp","fieldAffectsData","tabHasName","generateJobsJSONSchemas","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","generateEntitySelectSchemas","generateLocaleEntitySchemas","localization","locales","localesFromConfig","locale","code","enum","generateAuthEntitySchemas","filter","auth","allOf","collection","oneOf","generateDbEntitySchema","config","defaultIDType","db","withNullableJSONSchemaType","fieldType","isRequired","fieldTypes","push","fieldsToJSONSchema","collectionIDFieldTypes","interfaceNameDefinitions","requiredFieldNames","Set","fromEntries","fieldSchemas","add","name","fieldSchema","hasMany","items","jsonSchema","schema","editor","Error","outputSchema","optionEnums","length","maxItems","minItems","docs","hasNextPage","Array","isArray","relationTo","relation","const","hasBlocks","blocks","block","blockFieldSchemas","blockSchema","blockType","interfaceName","set","childSchema","entries","forEach","propName","propSchema","hasRequiredFields","typescriptSchema","Map","from","entityToJSONSchema","incomingEntity","entity","title","typescript","interface","idField","customIdField","find","unshift","timestamps","disableLocalStrategy","fieldsToSelectJSONSchema","blocksSchema","generateAuthFieldTypes","loginWithUsername","allowEmailLogin","email","password","username","requiredFields","requireEmail","requireUsername","authCollectionToOperationsJSONSchema","loginUserFields","forgotOrUnlockUserFields","registerUserFields","forgotPassword","login","registerFirstUser","unlock","generateAuthOperationSchemas","collections","configToJSONSchema","globals","global","entityDefinitions","select","globalType","authOperationDefinitions","authCollection","jobsSchemas","jobs","definitions","collectionsSelect","globalsSelect","user","size","key"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { SelectMode, SelectType } from '../types/index.js';
2
+ export declare const getSelectMode: (select: SelectType) => SelectMode;
3
+ //# sourceMappingURL=getSelectMode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getSelectMode.d.ts","sourceRoot":"","sources":["../../src/utilities/getSelectMode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAE/D,eAAO,MAAM,aAAa,WAAY,UAAU,KAAG,UAalD,CAAA"}
@@ -0,0 +1,14 @@
1
+ export const getSelectMode = (select)=>{
2
+ for(const key in select){
3
+ const selectValue = select[key];
4
+ if (selectValue === false) {
5
+ return 'exclude';
6
+ }
7
+ if (typeof selectValue === 'object') {
8
+ return getSelectMode(selectValue);
9
+ }
10
+ }
11
+ return 'include';
12
+ };
13
+
14
+ //# sourceMappingURL=getSelectMode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utilities/getSelectMode.ts"],"sourcesContent":["import type { SelectMode, SelectType } from '../types/index.js'\n\nexport const getSelectMode = (select: SelectType): SelectMode => {\n for (const key in select) {\n const selectValue = select[key]\n if (selectValue === false) {\n return 'exclude'\n }\n\n if (typeof selectValue === 'object') {\n return getSelectMode(selectValue)\n }\n }\n\n return 'include'\n}\n"],"names":["getSelectMode","select","key","selectValue"],"mappings":"AAEA,OAAO,MAAMA,gBAAgB,CAACC;IAC5B,IAAK,MAAMC,OAAOD,OAAQ;QACxB,MAAME,cAAcF,MAAM,CAACC,IAAI;QAC/B,IAAIC,gBAAgB,OAAO;YACzB,OAAO;QACT;QAEA,IAAI,OAAOA,gBAAgB,UAAU;YACnC,OAAOH,cAAcG;QACvB;IACF;IAEA,OAAO;AACT,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../src/utilities/traverseFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAIlE,MAAM,MAAM,sBAAsB,GAAG,CAAC,IAAI,EAAE;IAC1C;;OAEG;IACH,KAAK,EAAE,KAAK,GAAG,UAAU,CAAA;IACzB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,IAAI,CAAA;IACjB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAA;IAC7C;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAA;CACxC,KAAK,OAAO,GAAG,IAAI,CAAA;AAEpB,KAAK,kBAAkB,GAAG;IACxB,QAAQ,EAAE,sBAAsB,CAAA;IAChC,MAAM,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAA;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAA;IAC7C,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAA;CACxC,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,0CAKxB,kBAAkB,KAAG,IA+CvB,CAAA"}
1
+ {"version":3,"file":"traverseFields.d.ts","sourceRoot":"","sources":["../../src/utilities/traverseFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA2B,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AA8B3F,MAAM,MAAM,sBAAsB,GAAG,CAAC,IAAI,EAAE;IAC1C;;OAEG;IACH,KAAK,EAAE,KAAK,GAAG,UAAU,CAAA;IACzB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,IAAI,CAAA;IACjB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAA;IAC7C;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAA;CACxC,KAAK,OAAO,GAAG,IAAI,CAAA;AAEpB,KAAK,kBAAkB,GAAG;IACxB,QAAQ,EAAE,sBAAsB,CAAA;IAChC,MAAM,EAAE,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAA;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAA;IAC7C,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAA;CACxC,CAAA;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,0CAKxB,kBAAkB,KAAG,IAyEvB,CAAA"}