@payloadcms/graphql 3.0.0-canary.5986cd6 → 3.0.0-canary.5a7fb7d

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 (239) hide show
  1. package/bin.js +51 -2
  2. package/dist/bin/generateSchema.d.ts +1 -1
  3. package/dist/bin/generateSchema.d.ts.map +1 -1
  4. package/dist/bin/generateSchema.js +1 -1
  5. package/dist/bin/generateSchema.js.map +1 -1
  6. package/dist/bin/index.js +2 -2
  7. package/dist/bin/index.js.map +1 -1
  8. package/dist/exports/types.d.ts +4 -0
  9. package/dist/exports/types.d.ts.map +1 -0
  10. package/dist/exports/types.js +5 -0
  11. package/dist/exports/types.js.map +1 -0
  12. package/dist/exports/utilities.d.ts +1 -0
  13. package/dist/exports/utilities.d.ts.map +1 -1
  14. package/dist/exports/utilities.js +1 -0
  15. package/dist/exports/utilities.js.map +1 -1
  16. package/dist/index.d.ts +1 -1
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +9 -9
  19. package/dist/index.js.map +1 -1
  20. package/dist/packages/graphql-query-complexity/QueryComplexity.d.ts +2 -2
  21. package/dist/packages/graphql-query-complexity/QueryComplexity.d.ts.map +1 -1
  22. package/dist/packages/graphql-query-complexity/QueryComplexity.js +4 -4
  23. package/dist/packages/graphql-query-complexity/QueryComplexity.js.map +1 -1
  24. package/dist/packages/graphql-query-complexity/createComplexityRule.d.ts +1 -1
  25. package/dist/packages/graphql-query-complexity/createComplexityRule.d.ts.map +1 -1
  26. package/dist/packages/graphql-query-complexity/createComplexityRule.js +1 -1
  27. package/dist/packages/graphql-query-complexity/createComplexityRule.js.map +1 -1
  28. package/dist/packages/graphql-query-complexity/estimators/fieldExtensions/index.js.map +1 -1
  29. package/dist/packages/graphql-query-complexity/estimators/simple/index.js.map +1 -1
  30. package/dist/packages/graphql-query-complexity/index.js.map +1 -1
  31. package/dist/packages/graphql-type-json/index.d.ts.map +1 -1
  32. package/dist/packages/graphql-type-json/index.js +0 -1
  33. package/dist/packages/graphql-type-json/index.js.map +1 -1
  34. package/dist/resolvers/auth/access.d.ts +2 -3
  35. package/dist/resolvers/auth/access.d.ts.map +1 -1
  36. package/dist/resolvers/auth/access.js +3 -5
  37. package/dist/resolvers/auth/access.js.map +1 -1
  38. package/dist/resolvers/auth/forgotPassword.d.ts +2 -3
  39. package/dist/resolvers/auth/forgotPassword.d.ts.map +1 -1
  40. package/dist/resolvers/auth/forgotPassword.js +4 -5
  41. package/dist/resolvers/auth/forgotPassword.js.map +1 -1
  42. package/dist/resolvers/auth/init.d.ts +1 -2
  43. package/dist/resolvers/auth/init.d.ts.map +1 -1
  44. package/dist/resolvers/auth/init.js +2 -4
  45. package/dist/resolvers/auth/init.js.map +1 -1
  46. package/dist/resolvers/auth/login.d.ts +2 -3
  47. package/dist/resolvers/auth/login.d.ts.map +1 -1
  48. package/dist/resolvers/auth/login.js +6 -8
  49. package/dist/resolvers/auth/login.js.map +1 -1
  50. package/dist/resolvers/auth/logout.d.ts +2 -3
  51. package/dist/resolvers/auth/logout.d.ts.map +1 -1
  52. package/dist/resolvers/auth/logout.js +5 -7
  53. package/dist/resolvers/auth/logout.js.map +1 -1
  54. package/dist/resolvers/auth/me.d.ts +2 -3
  55. package/dist/resolvers/auth/me.d.ts.map +1 -1
  56. package/dist/resolvers/auth/me.js +4 -4
  57. package/dist/resolvers/auth/me.js.map +1 -1
  58. package/dist/resolvers/auth/refresh.d.ts +2 -3
  59. package/dist/resolvers/auth/refresh.d.ts.map +1 -1
  60. package/dist/resolvers/auth/refresh.js +6 -15
  61. package/dist/resolvers/auth/refresh.js.map +1 -1
  62. package/dist/resolvers/auth/resetPassword.d.ts +2 -3
  63. package/dist/resolvers/auth/resetPassword.d.ts.map +1 -1
  64. package/dist/resolvers/auth/resetPassword.js +10 -9
  65. package/dist/resolvers/auth/resetPassword.js.map +1 -1
  66. package/dist/resolvers/auth/unlock.d.ts +2 -3
  67. package/dist/resolvers/auth/unlock.d.ts.map +1 -1
  68. package/dist/resolvers/auth/unlock.js +4 -5
  69. package/dist/resolvers/auth/unlock.js.map +1 -1
  70. package/dist/resolvers/auth/verifyEmail.d.ts +2 -3
  71. package/dist/resolvers/auth/verifyEmail.d.ts.map +1 -1
  72. package/dist/resolvers/auth/verifyEmail.js +8 -6
  73. package/dist/resolvers/auth/verifyEmail.js.map +1 -1
  74. package/dist/resolvers/collections/count.d.ts +2 -3
  75. package/dist/resolvers/collections/count.d.ts.map +1 -1
  76. package/dist/resolvers/collections/count.js +1 -2
  77. package/dist/resolvers/collections/count.js.map +1 -1
  78. package/dist/resolvers/collections/create.d.ts +6 -9
  79. package/dist/resolvers/collections/create.d.ts.map +1 -1
  80. package/dist/resolvers/collections/create.js +2 -3
  81. package/dist/resolvers/collections/create.js.map +1 -1
  82. package/dist/resolvers/collections/delete.d.ts +5 -7
  83. package/dist/resolvers/collections/delete.d.ts.map +1 -1
  84. package/dist/resolvers/collections/delete.js +7 -4
  85. package/dist/resolvers/collections/delete.js.map +1 -1
  86. package/dist/resolvers/collections/docAccess.d.ts +2 -3
  87. package/dist/resolvers/collections/docAccess.d.ts.map +1 -1
  88. package/dist/resolvers/collections/docAccess.js +1 -2
  89. package/dist/resolvers/collections/docAccess.js.map +1 -1
  90. package/dist/resolvers/collections/duplicate.d.ts +5 -7
  91. package/dist/resolvers/collections/duplicate.d.ts.map +1 -1
  92. package/dist/resolvers/collections/duplicate.js +2 -3
  93. package/dist/resolvers/collections/duplicate.js.map +1 -1
  94. package/dist/resolvers/collections/find.d.ts +2 -4
  95. package/dist/resolvers/collections/find.d.ts.map +1 -1
  96. package/dist/resolvers/collections/find.js +13 -7
  97. package/dist/resolvers/collections/find.js.map +1 -1
  98. package/dist/resolvers/collections/findByID.d.ts +5 -7
  99. package/dist/resolvers/collections/findByID.d.ts.map +1 -1
  100. package/dist/resolvers/collections/findByID.js +7 -4
  101. package/dist/resolvers/collections/findByID.js.map +1 -1
  102. package/dist/resolvers/collections/findVersionByID.d.ts +2 -4
  103. package/dist/resolvers/collections/findVersionByID.d.ts.map +1 -1
  104. package/dist/resolvers/collections/findVersionByID.js +1 -2
  105. package/dist/resolvers/collections/findVersionByID.js.map +1 -1
  106. package/dist/resolvers/collections/findVersions.d.ts +2 -4
  107. package/dist/resolvers/collections/findVersions.d.ts.map +1 -1
  108. package/dist/resolvers/collections/findVersions.js +7 -4
  109. package/dist/resolvers/collections/findVersions.js.map +1 -1
  110. package/dist/resolvers/collections/restoreVersion.d.ts +4 -4
  111. package/dist/resolvers/collections/restoreVersion.d.ts.map +1 -1
  112. package/dist/resolvers/collections/restoreVersion.js +3 -3
  113. package/dist/resolvers/collections/restoreVersion.js.map +1 -1
  114. package/dist/resolvers/collections/update.d.ts +6 -8
  115. package/dist/resolvers/collections/update.d.ts.map +1 -1
  116. package/dist/resolvers/collections/update.js +7 -4
  117. package/dist/resolvers/collections/update.js.map +1 -1
  118. package/dist/resolvers/globals/docAccess.d.ts +2 -3
  119. package/dist/resolvers/globals/docAccess.d.ts.map +1 -1
  120. package/dist/resolvers/globals/docAccess.js +1 -2
  121. package/dist/resolvers/globals/docAccess.js.map +1 -1
  122. package/dist/resolvers/globals/findOne.d.ts +2 -2
  123. package/dist/resolvers/globals/findOne.d.ts.map +1 -1
  124. package/dist/resolvers/globals/findOne.js +8 -5
  125. package/dist/resolvers/globals/findOne.js.map +1 -1
  126. package/dist/resolvers/globals/findVersionByID.d.ts +3 -3
  127. package/dist/resolvers/globals/findVersionByID.d.ts.map +1 -1
  128. package/dist/resolvers/globals/findVersionByID.js +8 -5
  129. package/dist/resolvers/globals/findVersionByID.js.map +1 -1
  130. package/dist/resolvers/globals/findVersions.d.ts +3 -3
  131. package/dist/resolvers/globals/findVersions.d.ts.map +1 -1
  132. package/dist/resolvers/globals/findVersions.js +2 -3
  133. package/dist/resolvers/globals/findVersions.js.map +1 -1
  134. package/dist/resolvers/globals/index.d.ts +5 -5
  135. package/dist/resolvers/globals/index.d.ts.map +1 -1
  136. package/dist/resolvers/globals/index.js +5 -5
  137. package/dist/resolvers/globals/index.js.map +1 -1
  138. package/dist/resolvers/globals/restoreVersion.d.ts +4 -3
  139. package/dist/resolvers/globals/restoreVersion.d.ts.map +1 -1
  140. package/dist/resolvers/globals/restoreVersion.js +3 -3
  141. package/dist/resolvers/globals/restoreVersion.js.map +1 -1
  142. package/dist/resolvers/globals/update.d.ts +6 -7
  143. package/dist/resolvers/globals/update.d.ts.map +1 -1
  144. package/dist/resolvers/globals/update.js +8 -5
  145. package/dist/resolvers/globals/update.js.map +1 -1
  146. package/dist/resolvers/types.d.ts +2 -2
  147. package/dist/resolvers/types.d.ts.map +1 -1
  148. package/dist/resolvers/types.js.map +1 -1
  149. package/dist/schema/buildFallbackLocaleInputType.d.ts +2 -3
  150. package/dist/schema/buildFallbackLocaleInputType.d.ts.map +1 -1
  151. package/dist/schema/buildFallbackLocaleInputType.js +2 -3
  152. package/dist/schema/buildFallbackLocaleInputType.js.map +1 -1
  153. package/dist/schema/buildLocaleInputType.d.ts +2 -3
  154. package/dist/schema/buildLocaleInputType.d.ts.map +1 -1
  155. package/dist/schema/buildLocaleInputType.js +2 -3
  156. package/dist/schema/buildLocaleInputType.js.map +1 -1
  157. package/dist/schema/buildMutationInputType.d.ts +1 -2
  158. package/dist/schema/buildMutationInputType.d.ts.map +1 -1
  159. package/dist/schema/buildMutationInputType.js +60 -17
  160. package/dist/schema/buildMutationInputType.js.map +1 -1
  161. package/dist/schema/buildObjectType.d.ts +3 -4
  162. package/dist/schema/buildObjectType.d.ts.map +1 -1
  163. package/dist/schema/buildObjectType.js +270 -92
  164. package/dist/schema/buildObjectType.js.map +1 -1
  165. package/dist/schema/buildPaginatedListType.d.ts +1 -2
  166. package/dist/schema/buildPaginatedListType.d.ts.map +1 -1
  167. package/dist/schema/buildPaginatedListType.js +1 -2
  168. package/dist/schema/buildPaginatedListType.js.map +1 -1
  169. package/dist/schema/buildPoliciesType.d.ts +2 -2
  170. package/dist/schema/buildPoliciesType.d.ts.map +1 -1
  171. package/dist/schema/buildPoliciesType.js +6 -4
  172. package/dist/schema/buildPoliciesType.js.map +1 -1
  173. package/dist/schema/buildWhereInputType.d.ts +3 -3
  174. package/dist/schema/buildWhereInputType.d.ts.map +1 -1
  175. package/dist/schema/buildWhereInputType.js +6 -7
  176. package/dist/schema/buildWhereInputType.js.map +1 -1
  177. package/dist/schema/fieldToWhereInputSchemaMap.d.ts +2 -2
  178. package/dist/schema/fieldToWhereInputSchemaMap.d.ts.map +1 -1
  179. package/dist/schema/fieldToWhereInputSchemaMap.js +31 -7
  180. package/dist/schema/fieldToWhereInputSchemaMap.js.map +1 -1
  181. package/dist/schema/initCollections.d.ts +3 -4
  182. package/dist/schema/initCollections.d.ts.map +1 -1
  183. package/dist/schema/initCollections.js +52 -43
  184. package/dist/schema/initCollections.js.map +1 -1
  185. package/dist/schema/initGlobals.d.ts +3 -4
  186. package/dist/schema/initGlobals.d.ts.map +1 -1
  187. package/dist/schema/initGlobals.js +27 -21
  188. package/dist/schema/initGlobals.js.map +1 -1
  189. package/dist/schema/isFieldNullable.d.ts +2 -3
  190. package/dist/schema/isFieldNullable.d.ts.map +1 -1
  191. package/dist/schema/isFieldNullable.js +2 -3
  192. package/dist/schema/isFieldNullable.js.map +1 -1
  193. package/dist/schema/operators.d.ts +1 -2
  194. package/dist/schema/operators.d.ts.map +1 -1
  195. package/dist/schema/operators.js +1 -2
  196. package/dist/schema/operators.js.map +1 -1
  197. package/dist/schema/recursivelyBuildNestedPaths.d.ts +3 -3
  198. package/dist/schema/recursivelyBuildNestedPaths.d.ts.map +1 -1
  199. package/dist/schema/recursivelyBuildNestedPaths.js +3 -4
  200. package/dist/schema/recursivelyBuildNestedPaths.js.map +1 -1
  201. package/dist/schema/withNullableType.d.ts +2 -3
  202. package/dist/schema/withNullableType.d.ts.map +1 -1
  203. package/dist/schema/withNullableType.js +1 -2
  204. package/dist/schema/withNullableType.js.map +1 -1
  205. package/dist/schema/withOperators.d.ts +1 -1
  206. package/dist/schema/withOperators.d.ts.map +1 -1
  207. package/dist/schema/withOperators.js +12 -7
  208. package/dist/schema/withOperators.js.map +1 -1
  209. package/dist/utilities/combineParentName.d.ts +1 -2
  210. package/dist/utilities/combineParentName.d.ts.map +1 -1
  211. package/dist/utilities/combineParentName.js +2 -3
  212. package/dist/utilities/combineParentName.js.map +1 -1
  213. package/dist/utilities/formatName.d.ts +1 -2
  214. package/dist/utilities/formatName.d.ts.map +1 -1
  215. package/dist/utilities/formatName.js +1 -2
  216. package/dist/utilities/formatName.js.map +1 -1
  217. package/dist/utilities/formatName.spec.js +1 -1
  218. package/dist/utilities/formatName.spec.js.map +1 -1
  219. package/dist/utilities/formatOptions.d.ts +2 -3
  220. package/dist/utilities/formatOptions.d.ts.map +1 -1
  221. package/dist/utilities/formatOptions.js +2 -3
  222. package/dist/utilities/formatOptions.js.map +1 -1
  223. package/dist/utilities/groupOrTabHasRequiredSubfield.d.ts +1 -1
  224. package/dist/utilities/groupOrTabHasRequiredSubfield.d.ts.map +1 -1
  225. package/dist/utilities/groupOrTabHasRequiredSubfield.js +1 -1
  226. package/dist/utilities/groupOrTabHasRequiredSubfield.js.map +1 -1
  227. package/dist/utilities/wrapCustomResolver.d.ts +2 -2
  228. package/dist/utilities/wrapCustomResolver.d.ts.map +1 -1
  229. package/dist/utilities/wrapCustomResolver.js +1 -1
  230. package/dist/utilities/wrapCustomResolver.js.map +1 -1
  231. package/package.json +22 -14
  232. package/dist/utilities/getCheckIfLocaleObject.d.ts +0 -5
  233. package/dist/utilities/getCheckIfLocaleObject.d.ts.map +0 -1
  234. package/dist/utilities/getCheckIfLocaleObject.js +0 -3
  235. package/dist/utilities/getCheckIfLocaleObject.js.map +0 -1
  236. package/dist/utilities/uppercase.d.ts +0 -3
  237. package/dist/utilities/uppercase.d.ts.map +0 -1
  238. package/dist/utilities/uppercase.js +0 -11
  239. package/dist/utilities/uppercase.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/schema/buildMutationInputType.ts"],"sourcesContent":["import type { GraphQLInputFieldConfig, GraphQLScalarType, GraphQLType } from 'graphql'\nimport type { GraphQLInfo } from 'payload/config'\nimport type {\n ArrayField,\n BlockField,\n CheckboxField,\n CodeField,\n CollapsibleField,\n DateField,\n EmailField,\n Field,\n GroupField,\n JSONField,\n NumberField,\n PointField,\n RadioField,\n RelationshipField,\n RichTextField,\n RowField,\n SanitizedCollectionConfig,\n SanitizedConfig,\n SelectField,\n TabsField,\n TextField,\n TextareaField,\n UploadField,\n} from 'payload/types'\n\nimport {\n GraphQLBoolean,\n GraphQLEnumType,\n GraphQLFloat,\n GraphQLInputObjectType,\n GraphQLInt,\n GraphQLList,\n GraphQLNonNull,\n GraphQLString,\n} from 'graphql'\nimport { fieldAffectsData, optionIsObject, tabHasName } from 'payload/types'\nimport { toWords } from 'payload/utilities'\nimport { flattenTopLevelFields } from 'payload/utilities'\n\nimport { GraphQLJSON } from '../packages/graphql-type-json/index.js'\nimport combineParentName from '../utilities/combineParentName.js'\nimport formatName from '../utilities/formatName.js'\nimport { groupOrTabHasRequiredSubfield } from '../utilities/groupOrTabHasRequiredSubfield.js'\nimport withNullableType from './withNullableType.js'\n\nconst idFieldTypes = {\n number: GraphQLInt,\n text: GraphQLString,\n}\n\nexport const getCollectionIDType = (\n type: keyof typeof idFieldTypes,\n collection: SanitizedCollectionConfig,\n): GraphQLScalarType => {\n const idField = flattenTopLevelFields(collection.fields).find(\n (field) => fieldAffectsData(field) && field.name === 'id',\n )\n\n if (!idField) {\n return idFieldTypes[type]\n }\n\n return idFieldTypes[idField.type]\n}\n\nexport type InputObjectTypeConfig = {\n [path: string]: GraphQLInputFieldConfig\n}\n\ntype BuildMutationInputTypeArgs = {\n config: SanitizedConfig\n fields: Field[]\n forceNullable?: boolean\n graphqlResult: GraphQLInfo\n name: string\n parentName: string\n}\n\nexport function buildMutationInputType({\n name,\n config,\n fields,\n forceNullable = false,\n graphqlResult,\n parentName,\n}: BuildMutationInputTypeArgs): GraphQLInputObjectType | null {\n const fieldToSchemaMap = {\n array: (inputObjectTypeConfig: InputObjectTypeConfig, field: ArrayField) => {\n const fullName = combineParentName(parentName, toWords(field.name, true))\n let type: GraphQLList<GraphQLType> | GraphQLType = buildMutationInputType({\n name: fullName,\n config,\n fields: field.fields,\n graphqlResult,\n parentName: fullName,\n })\n\n if (!type) return inputObjectTypeConfig\n\n type = new GraphQLList(withNullableType(field, type, forceNullable))\n return {\n ...inputObjectTypeConfig,\n [field.name]: { type },\n }\n },\n blocks: (inputObjectTypeConfig: InputObjectTypeConfig, field: BlockField) => ({\n ...inputObjectTypeConfig,\n [field.name]: { type: GraphQLJSON },\n }),\n checkbox: (inputObjectTypeConfig: InputObjectTypeConfig, field: CheckboxField) => ({\n ...inputObjectTypeConfig,\n [field.name]: { type: GraphQLBoolean },\n }),\n code: (inputObjectTypeConfig: InputObjectTypeConfig, field: CodeField) => ({\n ...inputObjectTypeConfig,\n [field.name]: { type: withNullableType(field, GraphQLString, forceNullable) },\n }),\n collapsible: (inputObjectTypeConfig: InputObjectTypeConfig, field: CollapsibleField) =>\n field.fields.reduce((acc, subField: CollapsibleField) => {\n const addSubField = fieldToSchemaMap[subField.type]\n if (addSubField) return addSubField(acc, subField)\n return acc\n }, inputObjectTypeConfig),\n date: (inputObjectTypeConfig: InputObjectTypeConfig, field: DateField) => ({\n ...inputObjectTypeConfig,\n [field.name]: { type: withNullableType(field, GraphQLString, forceNullable) },\n }),\n email: (inputObjectTypeConfig: InputObjectTypeConfig, field: EmailField) => ({\n ...inputObjectTypeConfig,\n [field.name]: { type: withNullableType(field, GraphQLString, forceNullable) },\n }),\n group: (inputObjectTypeConfig: InputObjectTypeConfig, field: GroupField) => {\n const requiresAtLeastOneField = groupOrTabHasRequiredSubfield(field)\n const fullName = combineParentName(parentName, toWords(field.name, true))\n let type: GraphQLType = buildMutationInputType({\n name: fullName,\n config,\n fields: field.fields,\n graphqlResult,\n parentName: fullName,\n })\n\n if (!type) return inputObjectTypeConfig\n\n if (requiresAtLeastOneField) type = new GraphQLNonNull(type)\n return {\n ...inputObjectTypeConfig,\n [field.name]: { type },\n }\n },\n json: (inputObjectTypeConfig: InputObjectTypeConfig, field: JSONField) => ({\n ...inputObjectTypeConfig,\n [field.name]: { type: withNullableType(field, GraphQLJSON, forceNullable) },\n }),\n number: (inputObjectTypeConfig: InputObjectTypeConfig, field: NumberField) => {\n const type = field.name === 'id' ? GraphQLInt : GraphQLFloat\n return {\n ...inputObjectTypeConfig,\n [field.name]: {\n type: withNullableType(\n field,\n field.hasMany === true ? new GraphQLList(type) : type,\n forceNullable,\n ),\n },\n }\n },\n point: (inputObjectTypeConfig: InputObjectTypeConfig, field: PointField) => ({\n ...inputObjectTypeConfig,\n [field.name]: { type: withNullableType(field, new GraphQLList(GraphQLFloat), forceNullable) },\n }),\n radio: (inputObjectTypeConfig: InputObjectTypeConfig, field: RadioField) => ({\n ...inputObjectTypeConfig,\n [field.name]: { type: withNullableType(field, GraphQLString, forceNullable) },\n }),\n relationship: (inputObjectTypeConfig: InputObjectTypeConfig, field: RelationshipField) => {\n const { relationTo } = field\n type PayloadGraphQLRelationshipType =\n | GraphQLInputObjectType\n | GraphQLList<GraphQLScalarType>\n | GraphQLScalarType\n let type: PayloadGraphQLRelationshipType\n\n if (Array.isArray(relationTo)) {\n const fullName = `${combineParentName(\n parentName,\n toWords(field.name, true),\n )}RelationshipInput`\n type = new GraphQLInputObjectType({\n name: fullName,\n fields: {\n relationTo: {\n type: new GraphQLEnumType({\n name: `${fullName}RelationTo`,\n values: relationTo.reduce(\n (values, option) => ({\n ...values,\n [formatName(option)]: {\n value: option,\n },\n }),\n {},\n ),\n }),\n },\n value: { type: GraphQLJSON },\n },\n })\n } else {\n type = getCollectionIDType(\n config.db.defaultIDType,\n graphqlResult.collections[relationTo].config,\n )\n }\n\n return {\n ...inputObjectTypeConfig,\n [field.name]: { type: field.hasMany ? new GraphQLList(type) : type },\n }\n },\n richText: (inputObjectTypeConfig: InputObjectTypeConfig, field: RichTextField) => ({\n ...inputObjectTypeConfig,\n [field.name]: { type: withNullableType(field, GraphQLJSON, forceNullable) },\n }),\n row: (inputObjectTypeConfig: InputObjectTypeConfig, field: RowField) =>\n field.fields.reduce((acc, subField: Field) => {\n const addSubField = fieldToSchemaMap[subField.type]\n if (addSubField) return addSubField(acc, subField)\n return acc\n }, inputObjectTypeConfig),\n select: (inputObjectTypeConfig: InputObjectTypeConfig, field: SelectField) => {\n const formattedName = `${combineParentName(parentName, field.name)}_MutationInput`\n let type: GraphQLType = new GraphQLEnumType({\n name: formattedName,\n values: field.options.reduce((values, option) => {\n if (optionIsObject(option)) {\n return {\n ...values,\n [formatName(option.value)]: {\n value: option.value,\n },\n }\n }\n\n return {\n ...values,\n [formatName(option)]: {\n value: option,\n },\n }\n }, {}),\n })\n\n type = field.hasMany ? new GraphQLList(type) : type\n type = withNullableType(field, type, forceNullable)\n\n return {\n ...inputObjectTypeConfig,\n [field.name]: { type },\n }\n },\n tabs: (inputObjectTypeConfig: InputObjectTypeConfig, field: TabsField) => {\n return field.tabs.reduce((acc, tab) => {\n if (tabHasName(tab)) {\n const fullName = combineParentName(parentName, toWords(tab.name, true))\n const requiresAtLeastOneField = groupOrTabHasRequiredSubfield(field)\n let type: GraphQLType = buildMutationInputType({\n name: fullName,\n config,\n fields: tab.fields,\n graphqlResult,\n parentName: fullName,\n })\n\n if (!type) return acc\n\n if (requiresAtLeastOneField) type = new GraphQLNonNull(type)\n return {\n ...acc,\n [tab.name]: { type },\n }\n }\n\n return {\n ...acc,\n ...tab.fields.reduce((subFieldSchema, subField) => {\n const addSubField = fieldToSchemaMap[subField.type]\n if (addSubField) return addSubField(subFieldSchema, subField)\n return subFieldSchema\n }, acc),\n }\n }, inputObjectTypeConfig)\n },\n text: (inputObjectTypeConfig: InputObjectTypeConfig, field: TextField) => ({\n ...inputObjectTypeConfig,\n [field.name]: {\n type: withNullableType(\n field,\n field.hasMany === true ? new GraphQLList(GraphQLString) : GraphQLString,\n forceNullable,\n ),\n },\n }),\n textarea: (inputObjectTypeConfig: InputObjectTypeConfig, field: TextareaField) => ({\n ...inputObjectTypeConfig,\n [field.name]: { type: withNullableType(field, GraphQLString, forceNullable) },\n }),\n upload: (inputObjectTypeConfig: InputObjectTypeConfig, field: UploadField) => ({\n ...inputObjectTypeConfig,\n [field.name]: { type: withNullableType(field, GraphQLString, forceNullable) },\n }),\n }\n\n const fieldName = formatName(name)\n\n const fieldSchemas = fields.reduce((inputObjectTypeConfig, field) => {\n const fieldSchema = fieldToSchemaMap[field.type]\n\n if (typeof fieldSchema !== 'function') {\n return inputObjectTypeConfig\n }\n\n const schema = fieldSchema(inputObjectTypeConfig, field)\n if (Object.keys(schema).length === 0) {\n return inputObjectTypeConfig\n }\n\n return {\n ...inputObjectTypeConfig,\n ...fieldSchema(inputObjectTypeConfig, field),\n }\n }, {})\n\n if (Object.keys(fieldSchemas).length === 0) {\n return null\n }\n\n return new GraphQLInputObjectType({\n name: `mutation${fieldName}Input`,\n fields: fieldSchemas,\n })\n}\n"],"names":["GraphQLBoolean","GraphQLEnumType","GraphQLFloat","GraphQLInputObjectType","GraphQLInt","GraphQLList","GraphQLNonNull","GraphQLString","fieldAffectsData","optionIsObject","tabHasName","toWords","flattenTopLevelFields","GraphQLJSON","combineParentName","formatName","groupOrTabHasRequiredSubfield","withNullableType","idFieldTypes","number","text","getCollectionIDType","type","collection","idField","fields","find","field","name","buildMutationInputType","config","forceNullable","graphqlResult","parentName","fieldToSchemaMap","array","inputObjectTypeConfig","fullName","blocks","checkbox","code","collapsible","reduce","acc","subField","addSubField","date","email","group","requiresAtLeastOneField","json","hasMany","point","radio","relationship","relationTo","Array","isArray","values","option","value","db","defaultIDType","collections","richText","row","select","formattedName","options","tabs","tab","subFieldSchema","textarea","upload","fieldName","fieldSchemas","fieldSchema","schema","Object","keys","length"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
1
+ {"version":3,"sources":["../../src/schema/buildMutationInputType.ts"],"sourcesContent":["import type { GraphQLInputFieldConfig, GraphQLScalarType, GraphQLType } from 'graphql'\nimport type {\n ArrayField,\n BlocksField,\n CheckboxField,\n CodeField,\n CollapsibleField,\n DateField,\n EmailField,\n Field,\n GraphQLInfo,\n GroupField,\n JSONField,\n NumberField,\n PointField,\n RadioField,\n RelationshipField,\n RichTextField,\n RowField,\n SanitizedCollectionConfig,\n SanitizedConfig,\n SelectField,\n TabsField,\n TextareaField,\n TextField,\n UploadField,\n} from 'payload'\n\nimport {\n GraphQLBoolean,\n GraphQLEnumType,\n GraphQLFloat,\n GraphQLInputObjectType,\n GraphQLInt,\n GraphQLList,\n GraphQLNonNull,\n GraphQLString,\n} from 'graphql'\nimport { flattenTopLevelFields, toWords } from 'payload'\nimport { fieldAffectsData, optionIsObject, tabHasName } from 'payload/shared'\n\nimport { GraphQLJSON } from '../packages/graphql-type-json/index.js'\nimport { combineParentName } from '../utilities/combineParentName.js'\nimport { formatName } from '../utilities/formatName.js'\nimport { groupOrTabHasRequiredSubfield } from '../utilities/groupOrTabHasRequiredSubfield.js'\nimport { withNullableType } from './withNullableType.js'\n\nconst idFieldTypes = {\n number: GraphQLInt,\n text: GraphQLString,\n}\n\nexport const getCollectionIDType = (\n type: keyof typeof idFieldTypes,\n collection: SanitizedCollectionConfig,\n): GraphQLScalarType => {\n const idField = flattenTopLevelFields(collection.fields).find(\n (field) => fieldAffectsData(field) && field.name === 'id',\n )\n\n if (!idField) {\n return idFieldTypes[type]\n }\n\n return idFieldTypes[idField.type]\n}\n\nexport type InputObjectTypeConfig = {\n [path: string]: GraphQLInputFieldConfig\n}\n\ntype BuildMutationInputTypeArgs = {\n config: SanitizedConfig\n fields: Field[]\n forceNullable?: boolean\n graphqlResult: GraphQLInfo\n name: string\n parentName: string\n}\n\nexport function buildMutationInputType({\n name,\n config,\n fields,\n forceNullable = false,\n graphqlResult,\n parentName,\n}: BuildMutationInputTypeArgs): GraphQLInputObjectType | null {\n const fieldToSchemaMap = {\n array: (inputObjectTypeConfig: InputObjectTypeConfig, field: ArrayField) => {\n const fullName = combineParentName(parentName, toWords(field.name, true))\n let type: GraphQLList<GraphQLType> | GraphQLType = buildMutationInputType({\n name: fullName,\n config,\n fields: field.fields,\n graphqlResult,\n parentName: fullName,\n })\n\n if (!type) {\n return inputObjectTypeConfig\n }\n\n type = new GraphQLList(withNullableType(field, type, forceNullable))\n return {\n ...inputObjectTypeConfig,\n [field.name]: { type },\n }\n },\n blocks: (inputObjectTypeConfig: InputObjectTypeConfig, field: BlocksField) => ({\n ...inputObjectTypeConfig,\n [field.name]: { type: GraphQLJSON },\n }),\n checkbox: (inputObjectTypeConfig: InputObjectTypeConfig, field: CheckboxField) => ({\n ...inputObjectTypeConfig,\n [field.name]: { type: GraphQLBoolean },\n }),\n code: (inputObjectTypeConfig: InputObjectTypeConfig, field: CodeField) => ({\n ...inputObjectTypeConfig,\n [field.name]: { type: withNullableType(field, GraphQLString, forceNullable) },\n }),\n collapsible: (inputObjectTypeConfig: InputObjectTypeConfig, field: CollapsibleField) =>\n field.fields.reduce((acc, subField: CollapsibleField) => {\n const addSubField = fieldToSchemaMap[subField.type]\n if (addSubField) {\n return addSubField(acc, subField)\n }\n return acc\n }, inputObjectTypeConfig),\n date: (inputObjectTypeConfig: InputObjectTypeConfig, field: DateField) => ({\n ...inputObjectTypeConfig,\n [field.name]: { type: withNullableType(field, GraphQLString, forceNullable) },\n }),\n email: (inputObjectTypeConfig: InputObjectTypeConfig, field: EmailField) => ({\n ...inputObjectTypeConfig,\n [field.name]: { type: withNullableType(field, GraphQLString, forceNullable) },\n }),\n group: (inputObjectTypeConfig: InputObjectTypeConfig, field: GroupField) => {\n const requiresAtLeastOneField = groupOrTabHasRequiredSubfield(field)\n const fullName = combineParentName(parentName, toWords(field.name, true))\n let type: GraphQLType = buildMutationInputType({\n name: fullName,\n config,\n fields: field.fields,\n graphqlResult,\n parentName: fullName,\n })\n\n if (!type) {\n return inputObjectTypeConfig\n }\n\n if (requiresAtLeastOneField) {\n type = new GraphQLNonNull(type)\n }\n return {\n ...inputObjectTypeConfig,\n [field.name]: { type },\n }\n },\n json: (inputObjectTypeConfig: InputObjectTypeConfig, field: JSONField) => ({\n ...inputObjectTypeConfig,\n [field.name]: { type: withNullableType(field, GraphQLJSON, forceNullable) },\n }),\n number: (inputObjectTypeConfig: InputObjectTypeConfig, field: NumberField) => {\n const type = field.name === 'id' ? GraphQLInt : GraphQLFloat\n return {\n ...inputObjectTypeConfig,\n [field.name]: {\n type: withNullableType(\n field,\n field.hasMany === true ? new GraphQLList(type) : type,\n forceNullable,\n ),\n },\n }\n },\n point: (inputObjectTypeConfig: InputObjectTypeConfig, field: PointField) => ({\n ...inputObjectTypeConfig,\n [field.name]: { type: withNullableType(field, new GraphQLList(GraphQLFloat), forceNullable) },\n }),\n radio: (inputObjectTypeConfig: InputObjectTypeConfig, field: RadioField) => ({\n ...inputObjectTypeConfig,\n [field.name]: { type: withNullableType(field, GraphQLString, forceNullable) },\n }),\n relationship: (inputObjectTypeConfig: InputObjectTypeConfig, field: RelationshipField) => {\n const { relationTo } = field\n type PayloadGraphQLRelationshipType =\n | GraphQLInputObjectType\n | GraphQLList<GraphQLScalarType>\n | GraphQLScalarType\n let type: PayloadGraphQLRelationshipType\n\n if (Array.isArray(relationTo)) {\n const fullName = `${combineParentName(\n parentName,\n toWords(field.name, true),\n )}RelationshipInput`\n type = new GraphQLInputObjectType({\n name: fullName,\n fields: {\n relationTo: {\n type: new GraphQLEnumType({\n name: `${fullName}RelationTo`,\n values: relationTo.reduce(\n (values, option) => ({\n ...values,\n [formatName(option)]: {\n value: option,\n },\n }),\n {},\n ),\n }),\n },\n value: { type: GraphQLJSON },\n },\n })\n } else {\n type = getCollectionIDType(\n config.db.defaultIDType,\n graphqlResult.collections[relationTo].config,\n )\n }\n\n return {\n ...inputObjectTypeConfig,\n [field.name]: { type: field.hasMany ? new GraphQLList(type) : type },\n }\n },\n richText: (inputObjectTypeConfig: InputObjectTypeConfig, field: RichTextField) => ({\n ...inputObjectTypeConfig,\n [field.name]: { type: withNullableType(field, GraphQLJSON, forceNullable) },\n }),\n row: (inputObjectTypeConfig: InputObjectTypeConfig, field: RowField) =>\n field.fields.reduce((acc, subField: Field) => {\n const addSubField = fieldToSchemaMap[subField.type]\n if (addSubField) {\n return addSubField(acc, subField)\n }\n return acc\n }, inputObjectTypeConfig),\n select: (inputObjectTypeConfig: InputObjectTypeConfig, field: SelectField) => {\n const formattedName = `${combineParentName(parentName, field.name)}_MutationInput`\n let type: GraphQLType = new GraphQLEnumType({\n name: formattedName,\n values: field.options.reduce((values, option) => {\n if (optionIsObject(option)) {\n return {\n ...values,\n [formatName(option.value)]: {\n value: option.value,\n },\n }\n }\n\n return {\n ...values,\n [formatName(option)]: {\n value: option,\n },\n }\n }, {}),\n })\n\n type = field.hasMany ? new GraphQLList(type) : type\n type = withNullableType(field, type, forceNullable)\n\n return {\n ...inputObjectTypeConfig,\n [field.name]: { type },\n }\n },\n tabs: (inputObjectTypeConfig: InputObjectTypeConfig, field: TabsField) => {\n return field.tabs.reduce((acc, tab) => {\n if (tabHasName(tab)) {\n const fullName = combineParentName(parentName, toWords(tab.name, true))\n const requiresAtLeastOneField = groupOrTabHasRequiredSubfield(field)\n let type: GraphQLType = buildMutationInputType({\n name: fullName,\n config,\n fields: tab.fields,\n graphqlResult,\n parentName: fullName,\n })\n\n if (!type) {\n return acc\n }\n\n if (requiresAtLeastOneField) {\n type = new GraphQLNonNull(type)\n }\n return {\n ...acc,\n [tab.name]: { type },\n }\n }\n\n return {\n ...acc,\n ...tab.fields.reduce((subFieldSchema, subField) => {\n const addSubField = fieldToSchemaMap[subField.type]\n if (addSubField) {\n return addSubField(subFieldSchema, subField)\n }\n return subFieldSchema\n }, acc),\n }\n }, inputObjectTypeConfig)\n },\n text: (inputObjectTypeConfig: InputObjectTypeConfig, field: TextField) => ({\n ...inputObjectTypeConfig,\n [field.name]: {\n type: withNullableType(\n field,\n field.hasMany === true ? new GraphQLList(GraphQLString) : GraphQLString,\n forceNullable,\n ),\n },\n }),\n textarea: (inputObjectTypeConfig: InputObjectTypeConfig, field: TextareaField) => ({\n ...inputObjectTypeConfig,\n [field.name]: { type: withNullableType(field, GraphQLString, forceNullable) },\n }),\n upload: (inputObjectTypeConfig: InputObjectTypeConfig, field: UploadField) => {\n const { relationTo } = field\n type PayloadGraphQLRelationshipType =\n | GraphQLInputObjectType\n | GraphQLList<GraphQLScalarType>\n | GraphQLScalarType\n let type: PayloadGraphQLRelationshipType\n\n if (Array.isArray(relationTo)) {\n const fullName = `${combineParentName(\n parentName,\n toWords(field.name, true),\n )}RelationshipInput`\n type = new GraphQLInputObjectType({\n name: fullName,\n fields: {\n relationTo: {\n type: new GraphQLEnumType({\n name: `${fullName}RelationTo`,\n values: relationTo.reduce(\n (values, option) => ({\n ...values,\n [formatName(option)]: {\n value: option,\n },\n }),\n {},\n ),\n }),\n },\n value: { type: GraphQLJSON },\n },\n })\n } else {\n type = getCollectionIDType(\n config.db.defaultIDType,\n graphqlResult.collections[relationTo].config,\n )\n }\n\n return {\n ...inputObjectTypeConfig,\n [field.name]: { type: field.hasMany ? new GraphQLList(type) : type },\n }\n },\n }\n\n const fieldName = formatName(name)\n\n const fieldSchemas = fields.reduce((inputObjectTypeConfig, field) => {\n const fieldSchema = fieldToSchemaMap[field.type]\n\n if (typeof fieldSchema !== 'function') {\n return inputObjectTypeConfig\n }\n\n const schema = fieldSchema(inputObjectTypeConfig, field)\n if (Object.keys(schema).length === 0) {\n return inputObjectTypeConfig\n }\n\n return {\n ...inputObjectTypeConfig,\n ...fieldSchema(inputObjectTypeConfig, field),\n }\n }, {})\n\n if (Object.keys(fieldSchemas).length === 0) {\n return null\n }\n\n return new GraphQLInputObjectType({\n name: `mutation${fieldName}Input`,\n fields: fieldSchemas,\n })\n}\n"],"names":["GraphQLBoolean","GraphQLEnumType","GraphQLFloat","GraphQLInputObjectType","GraphQLInt","GraphQLList","GraphQLNonNull","GraphQLString","flattenTopLevelFields","toWords","fieldAffectsData","optionIsObject","tabHasName","GraphQLJSON","combineParentName","formatName","groupOrTabHasRequiredSubfield","withNullableType","idFieldTypes","number","text","getCollectionIDType","type","collection","idField","fields","find","field","name","buildMutationInputType","config","forceNullable","graphqlResult","parentName","fieldToSchemaMap","array","inputObjectTypeConfig","fullName","blocks","checkbox","code","collapsible","reduce","acc","subField","addSubField","date","email","group","requiresAtLeastOneField","json","hasMany","point","radio","relationship","relationTo","Array","isArray","values","option","value","db","defaultIDType","collections","richText","row","select","formattedName","options","tabs","tab","subFieldSchema","textarea","upload","fieldName","fieldSchemas","fieldSchema","schema","Object","keys","length"],"mappings":"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"}
@@ -1,6 +1,5 @@
1
1
  import type { GraphQLFieldConfig } from 'graphql';
2
- import type { GraphQLInfo } from 'payload/config';
3
- import type { Field, SanitizedConfig } from 'payload/types';
2
+ import type { Field, GraphQLInfo, SanitizedConfig } from 'payload';
4
3
  import { GraphQLObjectType } from 'graphql';
5
4
  export type ObjectTypeConfig = {
6
5
  [path: string]: GraphQLFieldConfig<any, any>;
@@ -14,6 +13,6 @@ type Args = {
14
13
  name: string;
15
14
  parentName: string;
16
15
  };
17
- declare function buildObjectType({ name, baseFields, config, fields, forceNullable, graphqlResult, parentName, }: Args): GraphQLObjectType;
18
- export default buildObjectType;
16
+ export declare function buildObjectType({ name, baseFields, config, fields, forceNullable, graphqlResult, parentName, }: Args): GraphQLObjectType;
17
+ export {};
19
18
  //# sourceMappingURL=buildObjectType.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"buildObjectType.d.ts","sourceRoot":"","sources":["../../src/schema/buildObjectType.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAe,MAAM,SAAS,CAAA;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,KAAK,EAQV,KAAK,EAUL,eAAe,EAMhB,MAAM,eAAe,CAAA;AAEtB,OAAO,EAOL,iBAAiB,EAGlB,MAAM,SAAS,CAAA;AA2BhB,MAAM,MAAM,gBAAgB,GAAG;IAC7B,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;CAC7C,CAAA;AAED,KAAK,IAAI,GAAG;IACV,UAAU,CAAC,EAAE,gBAAgB,CAAA;IAC7B,MAAM,EAAE,eAAe,CAAA;IACvB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,aAAa,EAAE,WAAW,CAAA;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,iBAAS,eAAe,CAAC,EACvB,IAAI,EACJ,UAAe,EACf,MAAM,EACN,MAAM,EACN,aAAa,EACb,aAAa,EACb,UAAU,GACX,EAAE,IAAI,GAAG,iBAAiB,CA4lB1B;AAED,eAAe,eAAe,CAAA"}
1
+ {"version":3,"file":"buildObjectType.d.ts","sourceRoot":"","sources":["../../src/schema/buildObjectType.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAe,MAAM,SAAS,CAAA;AAC9D,OAAO,KAAK,EAQV,KAAK,EACL,WAAW,EAWX,eAAe,EAMhB,MAAM,SAAS,CAAA;AAEhB,OAAO,EAOL,iBAAiB,EAGlB,MAAM,SAAS,CAAA;AAchB,MAAM,MAAM,gBAAgB,GAAG;IAC7B,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;CAC7C,CAAA;AAED,KAAK,IAAI,GAAG;IACV,UAAU,CAAC,EAAE,gBAAgB,CAAA;IAC7B,MAAM,EAAE,eAAe,CAAA;IACvB,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,aAAa,EAAE,WAAW,CAAA;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,UAAe,EACf,MAAM,EACN,MAAM,EACN,aAAa,EACb,aAAa,EACb,UAAU,GACX,EAAE,IAAI,GAAG,iBAAiB,CAwzB1B"}
@@ -1,15 +1,14 @@
1
- /* eslint-disable @typescript-eslint/no-use-before-define */ /* eslint-disable no-await-in-loop */ /* eslint-disable no-restricted-syntax */ import { GraphQLBoolean, GraphQLEnumType, GraphQLFloat, GraphQLInt, GraphQLList, GraphQLNonNull, GraphQLObjectType, GraphQLString, GraphQLUnionType } from 'graphql';
1
+ import { GraphQLBoolean, GraphQLEnumType, GraphQLFloat, GraphQLInt, GraphQLList, GraphQLNonNull, GraphQLObjectType, GraphQLString, GraphQLUnionType } from 'graphql';
2
2
  import { DateTimeResolver, EmailAddressResolver } from 'graphql-scalars';
3
- import { tabHasName } from 'payload/types';
4
- import { createDataloaderCacheKey, toWords } from 'payload/utilities';
3
+ import { combineQueries, createDataloaderCacheKey, MissingEditorProp, toWords } from 'payload';
4
+ import { tabHasName } from 'payload/shared';
5
5
  import { GraphQLJSON } from '../packages/graphql-type-json/index.js';
6
- import combineParentName from '../utilities/combineParentName.js';
7
- import formatName from '../utilities/formatName.js';
8
- import formatOptions from '../utilities/formatOptions.js';
9
- import buildWhereInputType from './buildWhereInputType.js';
10
- import isFieldNullable from './isFieldNullable.js';
11
- import withNullableType from './withNullableType.js';
12
- function buildObjectType({ name, baseFields = {}, config, fields, forceNullable, graphqlResult, parentName }) {
6
+ import { combineParentName } from '../utilities/combineParentName.js';
7
+ import { formatName } from '../utilities/formatName.js';
8
+ import { formatOptions } from '../utilities/formatOptions.js';
9
+ import { isFieldNullable } from './isFieldNullable.js';
10
+ import { withNullableType } from './withNullableType.js';
11
+ export function buildObjectType({ name, baseFields = {}, config, fields, forceNullable, graphqlResult, parentName }) {
13
12
  const fieldToSchemaMap = {
14
13
  array: (objectTypeConfig, field)=>{
15
14
  const interfaceName = field?.interfaceName || combineParentName(parentName, toWords(field.name, true));
@@ -94,7 +93,9 @@ function buildObjectType({ name, baseFields = {}, config, fields, forceNullable,
94
93
  }),
95
94
  collapsible: (objectTypeConfig, field)=>field.fields.reduce((objectTypeConfigWithCollapsibleFields, subField)=>{
96
95
  const addSubField = fieldToSchemaMap[subField.type];
97
- if (addSubField) return addSubField(objectTypeConfigWithCollapsibleFields, subField);
96
+ if (addSubField) {
97
+ return addSubField(objectTypeConfigWithCollapsibleFields, subField);
98
+ }
98
99
  return objectTypeConfigWithCollapsibleFields;
99
100
  }, objectTypeConfig),
100
101
  date: (objectTypeConfig, field)=>({
@@ -130,10 +131,71 @@ function buildObjectType({ name, baseFields = {}, config, fields, forceNullable,
130
131
  return {
131
132
  ...objectTypeConfig,
132
133
  [field.name]: {
133
- type: graphqlResult.types.groupTypes[interfaceName]
134
+ type: graphqlResult.types.groupTypes[interfaceName],
135
+ resolve: (parent, args, context)=>{
136
+ return {
137
+ ...parent[field.name],
138
+ _id: parent._id ?? parent.id
139
+ };
140
+ }
134
141
  }
135
142
  };
136
143
  },
144
+ join: (objectTypeConfig, field)=>{
145
+ const joinName = combineParentName(parentName, toWords(field.name, true));
146
+ const joinType = {
147
+ type: new GraphQLObjectType({
148
+ name: joinName,
149
+ fields: {
150
+ docs: {
151
+ type: new GraphQLList(graphqlResult.collections[field.collection].graphQL.type)
152
+ },
153
+ hasNextPage: {
154
+ type: GraphQLBoolean
155
+ }
156
+ }
157
+ }),
158
+ args: {
159
+ limit: {
160
+ type: GraphQLInt
161
+ },
162
+ sort: {
163
+ type: GraphQLString
164
+ },
165
+ where: {
166
+ type: graphqlResult.collections[field.collection].graphQL.whereInputType
167
+ }
168
+ },
169
+ extensions: {
170
+ complexity: 10
171
+ },
172
+ async resolve (parent, args, context) {
173
+ const { collection } = field;
174
+ const { limit, sort, where } = args;
175
+ const { req } = context;
176
+ const fullWhere = combineQueries(where, {
177
+ [field.on]: {
178
+ equals: parent._id ?? parent.id
179
+ }
180
+ });
181
+ const results = await req.payload.find({
182
+ collection,
183
+ depth: 0,
184
+ fallbackLocale: req.fallbackLocale,
185
+ limit,
186
+ locale: req.locale,
187
+ req,
188
+ sort,
189
+ where: fullWhere
190
+ });
191
+ return results;
192
+ }
193
+ };
194
+ return {
195
+ ...objectTypeConfig,
196
+ [field.name]: joinType
197
+ };
198
+ },
137
199
  json: (objectTypeConfig, field)=>({
138
200
  ...objectTypeConfig,
139
201
  [field.name]: {
@@ -171,17 +233,19 @@ function buildObjectType({ name, baseFields = {}, config, fields, forceNullable,
171
233
  const relationshipName = combineParentName(parentName, toWords(field.name, true));
172
234
  let type;
173
235
  let relationToType = null;
236
+ const graphQLCollections = config.collections.filter((collectionConfig)=>collectionConfig.graphQL !== false);
174
237
  if (Array.isArray(relationTo)) {
175
238
  relationToType = new GraphQLEnumType({
176
239
  name: `${relationshipName}_RelationTo`,
177
- values: relationTo.reduce((relations, relation)=>({
240
+ values: relationTo.filter((relation)=>graphQLCollections.some((collection)=>collection.slug === relation)).reduce((relations, relation)=>({
178
241
  ...relations,
179
242
  [formatName(relation)]: {
180
243
  value: relation
181
244
  }
182
245
  }), {})
183
246
  });
184
- const types = relationTo.map((relation)=>graphqlResult.collections[relation].graphQL.type);
247
+ // Only pass collections that are GraphQL enabled
248
+ const types = relationTo.filter((relation)=>graphQLCollections.some((collection)=>collection.slug === relation)).map((relation)=>graphqlResult.collections[relation]?.graphQL.type);
185
249
  type = new GraphQLObjectType({
186
250
  name: `${relationshipName}_Relationship`,
187
251
  fields: {
@@ -191,7 +255,7 @@ function buildObjectType({ name, baseFields = {}, config, fields, forceNullable,
191
255
  value: {
192
256
  type: new GraphQLUnionType({
193
257
  name: relationshipName,
194
- resolveType (data, { req }) {
258
+ resolveType (data) {
195
259
  return graphqlResult.collections[data.collection].graphQL.type.name;
196
260
  },
197
261
  types
@@ -210,7 +274,7 @@ function buildObjectType({ name, baseFields = {}, config, fields, forceNullable,
210
274
  const relationshipArgs = {};
211
275
  const relationsUseDrafts = (Array.isArray(relationTo) ? relationTo : [
212
276
  relationTo
213
- ]).some((relation)=>graphqlResult.collections[relation].config.versions?.drafts);
277
+ ]).filter((relation)=>graphQLCollections.some((collection)=>collection.slug === relation)).some((relation)=>graphqlResult.collections[relation].config.versions?.drafts);
214
278
  if (relationsUseDrafts) {
215
279
  relationshipArgs.draft = {
216
280
  type: GraphQLBoolean
@@ -242,33 +306,35 @@ function buildObjectType({ name, baseFields = {}, config, fields, forceNullable,
242
306
  const createPopulationPromise = async (relatedDoc, i)=>{
243
307
  let id = relatedDoc;
244
308
  let collectionSlug = field.relationTo;
245
- if (isRelatedToManyCollections) {
246
- collectionSlug = relatedDoc.relationTo;
247
- id = relatedDoc.value;
248
- }
249
- const result = await context.req.payloadDataLoader.load(createDataloaderCacheKey({
250
- collectionSlug: collectionSlug,
251
- currentDepth: 0,
252
- depth: 0,
253
- docID: id,
254
- draft,
255
- fallbackLocale,
256
- locale,
257
- overrideAccess: false,
258
- showHiddenFields: false,
259
- transactionID: context.req.transactionID
260
- }));
261
- if (result) {
309
+ if (graphQLCollections.some((collection)=>collection.slug === collectionSlug)) {
262
310
  if (isRelatedToManyCollections) {
263
- results[i] = {
264
- relationTo: collectionSlug,
265
- value: {
266
- ...result,
267
- collection: collectionSlug
268
- }
269
- };
270
- } else {
271
- results[i] = result;
311
+ collectionSlug = relatedDoc.relationTo;
312
+ id = relatedDoc.value;
313
+ }
314
+ const result = await context.req.payloadDataLoader.load(createDataloaderCacheKey({
315
+ collectionSlug: collectionSlug,
316
+ currentDepth: 0,
317
+ depth: 0,
318
+ docID: id,
319
+ draft,
320
+ fallbackLocale,
321
+ locale,
322
+ overrideAccess: false,
323
+ showHiddenFields: false,
324
+ transactionID: context.req.transactionID
325
+ }));
326
+ if (result) {
327
+ if (isRelatedToManyCollections) {
328
+ results[i] = {
329
+ relationTo: collectionSlug,
330
+ value: {
331
+ ...result,
332
+ collection: collectionSlug
333
+ }
334
+ };
335
+ } else {
336
+ results[i] = result;
337
+ }
272
338
  }
273
339
  }
274
340
  };
@@ -286,29 +352,31 @@ function buildObjectType({ name, baseFields = {}, config, fields, forceNullable,
286
352
  relatedCollectionSlug = value.relationTo;
287
353
  }
288
354
  if (id) {
289
- const relatedDocument = await context.req.payloadDataLoader.load(createDataloaderCacheKey({
290
- collectionSlug: relatedCollectionSlug,
291
- currentDepth: 0,
292
- depth: 0,
293
- docID: id,
294
- draft,
295
- fallbackLocale,
296
- locale,
297
- overrideAccess: false,
298
- showHiddenFields: false,
299
- transactionID: context.req.transactionID
300
- }));
301
- if (relatedDocument) {
302
- if (isRelatedToManyCollections) {
303
- return {
304
- relationTo: relatedCollectionSlug,
305
- value: {
306
- ...relatedDocument,
307
- collection: relatedCollectionSlug
308
- }
309
- };
355
+ if (graphQLCollections.some((collection)=>collection.slug === relatedCollectionSlug)) {
356
+ const relatedDocument = await context.req.payloadDataLoader.load(createDataloaderCacheKey({
357
+ collectionSlug: relatedCollectionSlug,
358
+ currentDepth: 0,
359
+ depth: 0,
360
+ docID: id,
361
+ draft,
362
+ fallbackLocale,
363
+ locale,
364
+ overrideAccess: false,
365
+ showHiddenFields: false,
366
+ transactionID: context.req.transactionID
367
+ }));
368
+ if (relatedDocument) {
369
+ if (isRelatedToManyCollections) {
370
+ return {
371
+ relationTo: relatedCollectionSlug,
372
+ value: {
373
+ ...relatedDocument,
374
+ collection: relatedCollectionSlug
375
+ }
376
+ };
377
+ }
378
+ return relatedDocument;
310
379
  }
311
- return relatedDocument;
312
380
  }
313
381
  return null;
314
382
  }
@@ -331,7 +399,13 @@ function buildObjectType({ name, baseFields = {}, config, fields, forceNullable,
331
399
  },
332
400
  async resolve (parent, args, context) {
333
401
  let depth = config.defaultDepth;
334
- if (typeof args.depth !== 'undefined') depth = args.depth;
402
+ if (typeof args.depth !== 'undefined') {
403
+ depth = args.depth;
404
+ }
405
+ if (!field?.editor) {
406
+ 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
407
+ ;
408
+ }
335
409
  if (typeof field?.editor === 'function') {
336
410
  throw new Error('Attempted to access unsanitized rich text editor.');
337
411
  }
@@ -341,11 +415,11 @@ function buildObjectType({ name, baseFields = {}, config, fields, forceNullable,
341
415
  // is run here again, with the provided depth.
342
416
  // In the graphql find.ts resolver, the depth is then hard-coded to 0.
343
417
  // Effectively, this means that the populationPromise for GraphQL is only run here, and not in the find.ts resolver / normal population promise.
344
- if (editor?.populationPromises) {
418
+ if (editor?.graphQLPopulationPromises) {
345
419
  const fieldPromises = [];
346
420
  const populationPromises = [];
347
421
  const populateDepth = field?.maxDepth !== undefined && field?.maxDepth < depth ? field?.maxDepth : depth;
348
- editor?.populationPromises({
422
+ editor?.graphQLPopulationPromises({
349
423
  context,
350
424
  depth: populateDepth,
351
425
  draft: args.draft,
@@ -368,7 +442,9 @@ function buildObjectType({ name, baseFields = {}, config, fields, forceNullable,
368
442
  }),
369
443
  row: (objectTypeConfig, field)=>field.fields.reduce((objectTypeConfigWithRowFields, subField)=>{
370
444
  const addSubField = fieldToSchemaMap[subField.type];
371
- if (addSubField) return addSubField(objectTypeConfigWithRowFields, subField);
445
+ if (addSubField) {
446
+ return addSubField(objectTypeConfigWithRowFields, subField);
447
+ }
372
448
  return objectTypeConfigWithRowFields;
373
449
  }, objectTypeConfig),
374
450
  select: (objectTypeConfig, field)=>{
@@ -408,7 +484,13 @@ function buildObjectType({ name, baseFields = {}, config, fields, forceNullable,
408
484
  return {
409
485
  ...tabSchema,
410
486
  [tab.name]: {
411
- type: graphqlResult.types.groupTypes[interfaceName]
487
+ type: graphqlResult.types.groupTypes[interfaceName],
488
+ resolve (parent, args, context) {
489
+ return {
490
+ ...parent[tab.name],
491
+ _id: parent._id ?? parent.id
492
+ };
493
+ }
412
494
  }
413
495
  };
414
496
  }
@@ -416,7 +498,9 @@ function buildObjectType({ name, baseFields = {}, config, fields, forceNullable,
416
498
  ...tabSchema,
417
499
  ...tab.fields.reduce((subFieldSchema, subField)=>{
418
500
  const addSubField = fieldToSchemaMap[subField.type];
419
- if (addSubField) return addSubField(subFieldSchema, subField);
501
+ if (addSubField) {
502
+ return addSubField(subFieldSchema, subField);
503
+ }
420
504
  return subFieldSchema;
421
505
  }, tabSchema)
422
506
  };
@@ -435,34 +519,125 @@ function buildObjectType({ name, baseFields = {}, config, fields, forceNullable,
435
519
  }),
436
520
  upload: (objectTypeConfig, field)=>{
437
521
  const { relationTo } = field;
438
- const uploadName = combineParentName(parentName, toWords(field.name, true));
522
+ const isRelatedToManyCollections = Array.isArray(relationTo);
523
+ const hasManyValues = field.hasMany;
524
+ const relationshipName = combineParentName(parentName, toWords(field.name, true));
525
+ let type;
526
+ let relationToType = null;
527
+ if (Array.isArray(relationTo)) {
528
+ relationToType = new GraphQLEnumType({
529
+ name: `${relationshipName}_RelationTo`,
530
+ values: relationTo.reduce((relations, relation)=>({
531
+ ...relations,
532
+ [formatName(relation)]: {
533
+ value: relation
534
+ }
535
+ }), {})
536
+ });
537
+ const types = relationTo.map((relation)=>graphqlResult.collections[relation].graphQL.type);
538
+ type = new GraphQLObjectType({
539
+ name: `${relationshipName}_Relationship`,
540
+ fields: {
541
+ relationTo: {
542
+ type: relationToType
543
+ },
544
+ value: {
545
+ type: new GraphQLUnionType({
546
+ name: relationshipName,
547
+ resolveType (data) {
548
+ return graphqlResult.collections[data.collection].graphQL.type.name;
549
+ },
550
+ types
551
+ })
552
+ }
553
+ }
554
+ });
555
+ } else {
556
+ ({ type } = graphqlResult.collections[relationTo].graphQL);
557
+ }
439
558
  // If the relationshipType is undefined at this point,
440
559
  // it can be assumed that this blockType can have a relationship
441
560
  // to itself. Therefore, we set the relationshipType equal to the blockType
442
561
  // that is currently being created.
443
- const type = withNullableType(field, graphqlResult.collections[relationTo].graphQL.type || newlyCreatedBlockType, forceNullable);
444
- const uploadArgs = {};
562
+ type = type || newlyCreatedBlockType;
563
+ const relationshipArgs = {};
564
+ const relationsUseDrafts = (Array.isArray(relationTo) ? relationTo : [
565
+ relationTo
566
+ ]).some((relation)=>graphqlResult.collections[relation].config.versions?.drafts);
567
+ if (relationsUseDrafts) {
568
+ relationshipArgs.draft = {
569
+ type: GraphQLBoolean
570
+ };
571
+ }
445
572
  if (config.localization) {
446
- uploadArgs.locale = {
573
+ relationshipArgs.locale = {
447
574
  type: graphqlResult.types.localeInputType
448
575
  };
449
- uploadArgs.fallbackLocale = {
576
+ relationshipArgs.fallbackLocale = {
450
577
  type: graphqlResult.types.fallbackLocaleInputType
451
578
  };
452
579
  }
453
- const relatedCollectionSlug = field.relationTo;
454
- const upload = {
455
- type,
456
- args: uploadArgs,
580
+ const relationship = {
581
+ type: withNullableType(field, hasManyValues ? new GraphQLList(new GraphQLNonNull(type)) : type, forceNullable),
582
+ args: relationshipArgs,
457
583
  extensions: {
458
- complexity: 20
584
+ complexity: 10
459
585
  },
460
586
  async resolve (parent, args, context) {
461
587
  const value = parent[field.name];
462
588
  const locale = args.locale || context.req.locale;
463
589
  const fallbackLocale = args.fallbackLocale || context.req.fallbackLocale;
464
- const id = value;
590
+ let relatedCollectionSlug = field.relationTo;
465
591
  const draft = Boolean(args.draft ?? context.req.query?.draft);
592
+ if (hasManyValues) {
593
+ const results = [];
594
+ const resultPromises = [];
595
+ const createPopulationPromise = async (relatedDoc, i)=>{
596
+ let id = relatedDoc;
597
+ let collectionSlug = field.relationTo;
598
+ if (isRelatedToManyCollections) {
599
+ collectionSlug = relatedDoc.relationTo;
600
+ id = relatedDoc.value;
601
+ }
602
+ const result = await context.req.payloadDataLoader.load(createDataloaderCacheKey({
603
+ collectionSlug,
604
+ currentDepth: 0,
605
+ depth: 0,
606
+ docID: id,
607
+ draft,
608
+ fallbackLocale,
609
+ locale,
610
+ overrideAccess: false,
611
+ showHiddenFields: false,
612
+ transactionID: context.req.transactionID
613
+ }));
614
+ if (result) {
615
+ if (isRelatedToManyCollections) {
616
+ results[i] = {
617
+ relationTo: collectionSlug,
618
+ value: {
619
+ ...result,
620
+ collection: collectionSlug
621
+ }
622
+ };
623
+ } else {
624
+ results[i] = result;
625
+ }
626
+ }
627
+ };
628
+ if (value) {
629
+ value.forEach((relatedDoc, i)=>{
630
+ resultPromises.push(createPopulationPromise(relatedDoc, i));
631
+ });
632
+ }
633
+ await Promise.all(resultPromises);
634
+ return results;
635
+ }
636
+ let id = value;
637
+ if (isRelatedToManyCollections && value) {
638
+ id = value.value;
639
+ relatedCollectionSlug = value.relationTo;
640
+ }
466
641
  if (id) {
467
642
  const relatedDocument = await context.req.payloadDataLoader.load(createDataloaderCacheKey({
468
643
  collectionSlug: relatedCollectionSlug,
@@ -476,22 +651,26 @@ function buildObjectType({ name, baseFields = {}, config, fields, forceNullable,
476
651
  showHiddenFields: false,
477
652
  transactionID: context.req.transactionID
478
653
  }));
479
- return relatedDocument || null;
654
+ if (relatedDocument) {
655
+ if (isRelatedToManyCollections) {
656
+ return {
657
+ relationTo: relatedCollectionSlug,
658
+ value: {
659
+ ...relatedDocument,
660
+ collection: relatedCollectionSlug
661
+ }
662
+ };
663
+ }
664
+ return relatedDocument;
665
+ }
666
+ return null;
480
667
  }
481
668
  return null;
482
669
  }
483
670
  };
484
- const whereFields = graphqlResult.collections[relationTo].config.fields;
485
- upload.args.where = {
486
- type: buildWhereInputType({
487
- name: uploadName,
488
- fields: whereFields,
489
- parentName: uploadName
490
- })
491
- };
492
671
  return {
493
672
  ...objectTypeConfig,
494
- [field.name]: upload
673
+ [field.name]: relationship
495
674
  };
496
675
  }
497
676
  };
@@ -511,6 +690,5 @@ function buildObjectType({ name, baseFields = {}, config, fields, forceNullable,
511
690
  const newlyCreatedBlockType = new GraphQLObjectType(objectSchema);
512
691
  return newlyCreatedBlockType;
513
692
  }
514
- export default buildObjectType;
515
693
 
516
694
  //# sourceMappingURL=buildObjectType.js.map