@payloadcms/graphql 3.0.0-canary.f83d96a → 3.0.0-canary.ff8c8fd

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 (107) hide show
  1. package/bin.js +51 -2
  2. package/dist/bin/generateSchema.d.ts.map +1 -1
  3. package/dist/bin/generateSchema.js +1 -1
  4. package/dist/bin/generateSchema.js.map +1 -1
  5. package/dist/bin/index.js +2 -2
  6. package/dist/bin/index.js.map +1 -1
  7. package/dist/exports/types.d.ts +1 -1
  8. package/dist/exports/types.d.ts.map +1 -1
  9. package/dist/exports/types.js +1 -1
  10. package/dist/exports/types.js.map +1 -1
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +1 -1
  13. package/dist/index.js.map +1 -1
  14. package/dist/packages/graphql-query-complexity/QueryComplexity.js +1 -1
  15. package/dist/packages/graphql-query-complexity/QueryComplexity.js.map +1 -1
  16. package/dist/packages/graphql-type-json/index.d.ts.map +1 -1
  17. package/dist/packages/graphql-type-json/index.js +0 -1
  18. package/dist/packages/graphql-type-json/index.js.map +1 -1
  19. package/dist/resolvers/auth/forgotPassword.d.ts.map +1 -1
  20. package/dist/resolvers/auth/forgotPassword.js +2 -1
  21. package/dist/resolvers/auth/forgotPassword.js.map +1 -1
  22. package/dist/resolvers/auth/login.d.ts.map +1 -1
  23. package/dist/resolvers/auth/login.js +2 -1
  24. package/dist/resolvers/auth/login.js.map +1 -1
  25. package/dist/resolvers/auth/unlock.js +2 -1
  26. package/dist/resolvers/auth/unlock.js.map +1 -1
  27. package/dist/resolvers/collections/count.d.ts +2 -2
  28. package/dist/resolvers/collections/count.d.ts.map +1 -1
  29. package/dist/resolvers/collections/count.js.map +1 -1
  30. package/dist/resolvers/collections/create.d.ts +2 -2
  31. package/dist/resolvers/collections/create.d.ts.map +1 -1
  32. package/dist/resolvers/collections/create.js.map +1 -1
  33. package/dist/resolvers/collections/delete.d.ts +2 -2
  34. package/dist/resolvers/collections/delete.d.ts.map +1 -1
  35. package/dist/resolvers/collections/delete.js.map +1 -1
  36. package/dist/resolvers/collections/docAccess.d.ts +2 -2
  37. package/dist/resolvers/collections/docAccess.d.ts.map +1 -1
  38. package/dist/resolvers/collections/docAccess.js.map +1 -1
  39. package/dist/resolvers/collections/duplicate.d.ts +2 -2
  40. package/dist/resolvers/collections/duplicate.d.ts.map +1 -1
  41. package/dist/resolvers/collections/duplicate.js.map +1 -1
  42. package/dist/resolvers/collections/find.d.ts +2 -2
  43. package/dist/resolvers/collections/find.d.ts.map +1 -1
  44. package/dist/resolvers/collections/find.js +6 -3
  45. package/dist/resolvers/collections/find.js.map +1 -1
  46. package/dist/resolvers/collections/findByID.d.ts +2 -2
  47. package/dist/resolvers/collections/findByID.d.ts.map +1 -1
  48. package/dist/resolvers/collections/findByID.js.map +1 -1
  49. package/dist/resolvers/collections/findVersionByID.d.ts +2 -2
  50. package/dist/resolvers/collections/findVersionByID.d.ts.map +1 -1
  51. package/dist/resolvers/collections/findVersionByID.js.map +1 -1
  52. package/dist/resolvers/collections/findVersions.d.ts +2 -2
  53. package/dist/resolvers/collections/findVersions.d.ts.map +1 -1
  54. package/dist/resolvers/collections/findVersions.js.map +1 -1
  55. package/dist/resolvers/collections/restoreVersion.d.ts +3 -2
  56. package/dist/resolvers/collections/restoreVersion.d.ts.map +1 -1
  57. package/dist/resolvers/collections/restoreVersion.js +1 -0
  58. package/dist/resolvers/collections/restoreVersion.js.map +1 -1
  59. package/dist/resolvers/collections/update.d.ts +2 -2
  60. package/dist/resolvers/collections/update.d.ts.map +1 -1
  61. package/dist/resolvers/collections/update.js.map +1 -1
  62. package/dist/resolvers/globals/docAccess.d.ts +2 -2
  63. package/dist/resolvers/globals/docAccess.d.ts.map +1 -1
  64. package/dist/resolvers/globals/docAccess.js.map +1 -1
  65. package/dist/resolvers/globals/findVersionByID.d.ts +2 -2
  66. package/dist/resolvers/globals/findVersionByID.d.ts.map +1 -1
  67. package/dist/resolvers/globals/findVersionByID.js.map +1 -1
  68. package/dist/resolvers/globals/findVersions.d.ts +2 -2
  69. package/dist/resolvers/globals/findVersions.d.ts.map +1 -1
  70. package/dist/resolvers/globals/findVersions.js.map +1 -1
  71. package/dist/resolvers/globals/restoreVersion.d.ts +3 -2
  72. package/dist/resolvers/globals/restoreVersion.d.ts.map +1 -1
  73. package/dist/resolvers/globals/restoreVersion.js +1 -0
  74. package/dist/resolvers/globals/restoreVersion.js.map +1 -1
  75. package/dist/resolvers/globals/update.d.ts +2 -2
  76. package/dist/resolvers/globals/update.d.ts.map +1 -1
  77. package/dist/resolvers/globals/update.js.map +1 -1
  78. package/dist/resolvers/types.d.ts +2 -2
  79. package/dist/resolvers/types.d.ts.map +1 -1
  80. package/dist/resolvers/types.js.map +1 -1
  81. package/dist/schema/buildMutationInputType.d.ts.map +1 -1
  82. package/dist/schema/buildMutationInputType.js +31 -3
  83. package/dist/schema/buildMutationInputType.js.map +1 -1
  84. package/dist/schema/buildObjectType.d.ts.map +1 -1
  85. package/dist/schema/buildObjectType.js +117 -23
  86. package/dist/schema/buildObjectType.js.map +1 -1
  87. package/dist/schema/buildWhereInputType.d.ts.map +1 -1
  88. package/dist/schema/buildWhereInputType.js +1 -1
  89. package/dist/schema/buildWhereInputType.js.map +1 -1
  90. package/dist/schema/fieldToWhereInputSchemaMap.d.ts.map +1 -1
  91. package/dist/schema/fieldToWhereInputSchemaMap.js +27 -2
  92. package/dist/schema/fieldToWhereInputSchemaMap.js.map +1 -1
  93. package/dist/schema/initCollections.d.ts +1 -2
  94. package/dist/schema/initCollections.d.ts.map +1 -1
  95. package/dist/schema/initCollections.js +22 -14
  96. package/dist/schema/initCollections.js.map +1 -1
  97. package/dist/schema/initGlobals.d.ts.map +1 -1
  98. package/dist/schema/initGlobals.js +7 -1
  99. package/dist/schema/initGlobals.js.map +1 -1
  100. package/dist/schema/withOperators.js +5 -2
  101. package/dist/schema/withOperators.js.map +1 -1
  102. package/dist/utilities/formatName.spec.js +1 -1
  103. package/dist/utilities/formatName.spec.js.map +1 -1
  104. package/dist/utilities/wrapCustomResolver.d.ts +2 -2
  105. package/dist/utilities/wrapCustomResolver.d.ts.map +1 -1
  106. package/dist/utilities/wrapCustomResolver.js.map +1 -1
  107. package/package.json +6 -5
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/schema/buildMutationInputType.ts"],"sourcesContent":["import type { GraphQLInputFieldConfig, GraphQLScalarType, GraphQLType } from 'graphql'\nimport type {\n ArrayField,\n BlockField,\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 TextField,\n TextareaField,\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) 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","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
+ {"version":3,"sources":["../../src/schema/buildMutationInputType.ts"],"sourcesContent":["import type { GraphQLInputFieldConfig, GraphQLScalarType, GraphQLType } from 'graphql'\nimport type {\n ArrayField,\n BlockField,\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 TextField,\n TextareaField,\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) 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 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 +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,EAQV,KAAK,EACL,WAAW,EAUX,eAAe,EAMhB,MAAM,SAAS,CAAA;AAEhB,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,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,UAAe,EACf,MAAM,EACN,MAAM,EACN,aAAa,EACb,aAAa,EACb,UAAU,GACX,EAAE,IAAI,GAAG,iBAAiB,CAgmB1B"}
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,EAUX,eAAe,EAMhB,MAAM,SAAS,CAAA;AAEhB,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,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,UAAe,EACf,MAAM,EACN,MAAM,EACN,aAAa,EACb,aAAa,EACb,UAAU,GACX,EAAE,IAAI,GAAG,iBAAiB,CAutB1B"}
@@ -1,4 +1,4 @@
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
3
  import { MissingEditorProp, createDataloaderCacheKey, toWords } from 'payload';
4
4
  import { tabHasName } from 'payload/shared';
@@ -6,7 +6,6 @@ import { GraphQLJSON } from '../packages/graphql-type-json/index.js';
6
6
  import combineParentName from '../utilities/combineParentName.js';
7
7
  import formatName from '../utilities/formatName.js';
8
8
  import formatOptions from '../utilities/formatOptions.js';
9
- import buildWhereInputType from './buildWhereInputType.js';
10
9
  import isFieldNullable from './isFieldNullable.js';
11
10
  import withNullableType from './withNullableType.js';
12
11
  export function buildObjectType({ name, baseFields = {}, config, fields, forceNullable, graphqlResult, parentName }) {
@@ -439,34 +438,125 @@ export function buildObjectType({ name, baseFields = {}, config, fields, forceNu
439
438
  }),
440
439
  upload: (objectTypeConfig, field)=>{
441
440
  const { relationTo } = field;
442
- const uploadName = combineParentName(parentName, toWords(field.name, true));
441
+ const isRelatedToManyCollections = Array.isArray(relationTo);
442
+ const hasManyValues = field.hasMany;
443
+ const relationshipName = combineParentName(parentName, toWords(field.name, true));
444
+ let type;
445
+ let relationToType = null;
446
+ if (Array.isArray(relationTo)) {
447
+ relationToType = new GraphQLEnumType({
448
+ name: `${relationshipName}_RelationTo`,
449
+ values: relationTo.reduce((relations, relation)=>({
450
+ ...relations,
451
+ [formatName(relation)]: {
452
+ value: relation
453
+ }
454
+ }), {})
455
+ });
456
+ const types = relationTo.map((relation)=>graphqlResult.collections[relation].graphQL.type);
457
+ type = new GraphQLObjectType({
458
+ name: `${relationshipName}_Relationship`,
459
+ fields: {
460
+ relationTo: {
461
+ type: relationToType
462
+ },
463
+ value: {
464
+ type: new GraphQLUnionType({
465
+ name: relationshipName,
466
+ resolveType (data, { req }) {
467
+ return graphqlResult.collections[data.collection].graphQL.type.name;
468
+ },
469
+ types
470
+ })
471
+ }
472
+ }
473
+ });
474
+ } else {
475
+ ({ type } = graphqlResult.collections[relationTo].graphQL);
476
+ }
443
477
  // If the relationshipType is undefined at this point,
444
478
  // it can be assumed that this blockType can have a relationship
445
479
  // to itself. Therefore, we set the relationshipType equal to the blockType
446
480
  // that is currently being created.
447
- const type = withNullableType(field, graphqlResult.collections[relationTo].graphQL.type || newlyCreatedBlockType, forceNullable);
448
- const uploadArgs = {};
481
+ type = type || newlyCreatedBlockType;
482
+ const relationshipArgs = {};
483
+ const relationsUseDrafts = (Array.isArray(relationTo) ? relationTo : [
484
+ relationTo
485
+ ]).some((relation)=>graphqlResult.collections[relation].config.versions?.drafts);
486
+ if (relationsUseDrafts) {
487
+ relationshipArgs.draft = {
488
+ type: GraphQLBoolean
489
+ };
490
+ }
449
491
  if (config.localization) {
450
- uploadArgs.locale = {
492
+ relationshipArgs.locale = {
451
493
  type: graphqlResult.types.localeInputType
452
494
  };
453
- uploadArgs.fallbackLocale = {
495
+ relationshipArgs.fallbackLocale = {
454
496
  type: graphqlResult.types.fallbackLocaleInputType
455
497
  };
456
498
  }
457
- const relatedCollectionSlug = field.relationTo;
458
- const upload = {
459
- type,
460
- args: uploadArgs,
499
+ const relationship = {
500
+ type: withNullableType(field, hasManyValues ? new GraphQLList(new GraphQLNonNull(type)) : type, forceNullable),
501
+ args: relationshipArgs,
461
502
  extensions: {
462
- complexity: 20
503
+ complexity: 10
463
504
  },
464
505
  async resolve (parent, args, context) {
465
506
  const value = parent[field.name];
466
507
  const locale = args.locale || context.req.locale;
467
508
  const fallbackLocale = args.fallbackLocale || context.req.fallbackLocale;
468
- const id = value;
509
+ let relatedCollectionSlug = field.relationTo;
469
510
  const draft = Boolean(args.draft ?? context.req.query?.draft);
511
+ if (hasManyValues) {
512
+ const results = [];
513
+ const resultPromises = [];
514
+ const createPopulationPromise = async (relatedDoc, i)=>{
515
+ let id = relatedDoc;
516
+ let collectionSlug = field.relationTo;
517
+ if (isRelatedToManyCollections) {
518
+ collectionSlug = relatedDoc.relationTo;
519
+ id = relatedDoc.value;
520
+ }
521
+ const result = await context.req.payloadDataLoader.load(createDataloaderCacheKey({
522
+ collectionSlug: collectionSlug,
523
+ currentDepth: 0,
524
+ depth: 0,
525
+ docID: id,
526
+ draft,
527
+ fallbackLocale,
528
+ locale,
529
+ overrideAccess: false,
530
+ showHiddenFields: false,
531
+ transactionID: context.req.transactionID
532
+ }));
533
+ if (result) {
534
+ if (isRelatedToManyCollections) {
535
+ results[i] = {
536
+ relationTo: collectionSlug,
537
+ value: {
538
+ ...result,
539
+ collection: collectionSlug
540
+ }
541
+ };
542
+ } else {
543
+ results[i] = result;
544
+ }
545
+ }
546
+ };
547
+ if (value) {
548
+ value.forEach((relatedDoc, i)=>{
549
+ resultPromises.push(createPopulationPromise(relatedDoc, i));
550
+ });
551
+ }
552
+ await Promise.all(resultPromises);
553
+ return results;
554
+ }
555
+ let id = value;
556
+ if (isRelatedToManyCollections && value) {
557
+ id = value.value;
558
+ relatedCollectionSlug = value.relationTo;
559
+ }
470
560
  if (id) {
471
561
  const relatedDocument = await context.req.payloadDataLoader.load(createDataloaderCacheKey({
472
562
  collectionSlug: relatedCollectionSlug,
@@ -480,22 +570,26 @@ export function buildObjectType({ name, baseFields = {}, config, fields, forceNu
480
570
  showHiddenFields: false,
481
571
  transactionID: context.req.transactionID
482
572
  }));
483
- return relatedDocument || null;
573
+ if (relatedDocument) {
574
+ if (isRelatedToManyCollections) {
575
+ return {
576
+ relationTo: relatedCollectionSlug,
577
+ value: {
578
+ ...relatedDocument,
579
+ collection: relatedCollectionSlug
580
+ }
581
+ };
582
+ }
583
+ return relatedDocument;
584
+ }
585
+ return null;
484
586
  }
485
587
  return null;
486
588
  }
487
589
  };
488
- const whereFields = graphqlResult.collections[relationTo].config.fields;
489
- upload.args.where = {
490
- type: buildWhereInputType({
491
- name: uploadName,
492
- fields: whereFields,
493
- parentName: uploadName
494
- })
495
- };
496
590
  return {
497
591
  ...objectTypeConfig,
498
- [field.name]: upload
592
+ [field.name]: relationship
499
593
  };
500
594
  }
501
595
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/schema/buildObjectType.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-use-before-define */\n/* eslint-disable no-await-in-loop */\n/* eslint-disable no-restricted-syntax */\nimport type { GraphQLFieldConfig, GraphQLType } from 'graphql'\nimport type {\n ArrayField,\n BlockField,\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 RichTextAdapter,\n RichTextField,\n RowField,\n SanitizedConfig,\n SelectField,\n TabsField,\n TextField,\n TextareaField,\n UploadField,\n} from 'payload'\n\nimport {\n GraphQLBoolean,\n GraphQLEnumType,\n GraphQLFloat,\n GraphQLInt,\n GraphQLList,\n GraphQLNonNull,\n GraphQLObjectType,\n GraphQLString,\n GraphQLUnionType,\n} from 'graphql'\nimport { DateTimeResolver, EmailAddressResolver } from 'graphql-scalars'\nimport { MissingEditorProp, createDataloaderCacheKey, toWords } from 'payload'\nimport { tabHasName } from 'payload/shared'\n\nimport type { Context } from '../resolvers/types.js'\n\nimport { GraphQLJSON } from '../packages/graphql-type-json/index.js'\nimport combineParentName from '../utilities/combineParentName.js'\nimport formatName from '../utilities/formatName.js'\nimport formatOptions from '../utilities/formatOptions.js'\nimport buildWhereInputType from './buildWhereInputType.js'\nimport isFieldNullable from './isFieldNullable.js'\nimport withNullableType from './withNullableType.js'\n\ntype LocaleInputType = {\n fallbackLocale: {\n type: GraphQLType\n }\n locale: {\n type: GraphQLType\n }\n where: {\n type: GraphQLType\n }\n}\n\nexport type ObjectTypeConfig = {\n [path: string]: GraphQLFieldConfig<any, any>\n}\n\ntype Args = {\n baseFields?: ObjectTypeConfig\n config: SanitizedConfig\n fields: Field[]\n forceNullable?: boolean\n graphqlResult: GraphQLInfo\n name: string\n parentName: string\n}\n\nexport function buildObjectType({\n name,\n baseFields = {},\n config,\n fields,\n forceNullable,\n graphqlResult,\n parentName,\n}: Args): GraphQLObjectType {\n const fieldToSchemaMap = {\n array: (objectTypeConfig: ObjectTypeConfig, field: ArrayField) => {\n const interfaceName =\n field?.interfaceName || combineParentName(parentName, toWords(field.name, true))\n\n if (!graphqlResult.types.arrayTypes[interfaceName]) {\n const objectType = buildObjectType({\n name: interfaceName,\n config,\n fields: field.fields,\n forceNullable: isFieldNullable(field, forceNullable),\n graphqlResult,\n parentName: interfaceName,\n })\n\n if (Object.keys(objectType.getFields()).length) {\n graphqlResult.types.arrayTypes[interfaceName] = objectType\n }\n }\n\n if (!graphqlResult.types.arrayTypes[interfaceName]) {\n return objectTypeConfig\n }\n\n const arrayType = new GraphQLList(\n new GraphQLNonNull(graphqlResult.types.arrayTypes[interfaceName]),\n )\n\n return {\n ...objectTypeConfig,\n [field.name]: { type: withNullableType(field, arrayType) },\n }\n },\n blocks: (objectTypeConfig: ObjectTypeConfig, field: BlockField) => {\n const blockTypes: GraphQLObjectType<any, any>[] = field.blocks.reduce((acc, block) => {\n if (!graphqlResult.types.blockTypes[block.slug]) {\n const interfaceName =\n block?.interfaceName || block?.graphQL?.singularName || toWords(block.slug, true)\n\n const objectType = buildObjectType({\n name: interfaceName,\n config,\n fields: [\n ...block.fields,\n {\n name: 'blockType',\n type: 'text',\n },\n ],\n forceNullable,\n graphqlResult,\n parentName: interfaceName,\n })\n\n if (Object.keys(objectType.getFields()).length) {\n graphqlResult.types.blockTypes[block.slug] = objectType\n }\n }\n\n if (graphqlResult.types.blockTypes[block.slug]) {\n acc.push(graphqlResult.types.blockTypes[block.slug])\n }\n\n return acc\n }, [])\n\n if (blockTypes.length === 0) {\n return objectTypeConfig\n }\n\n const fullName = combineParentName(parentName, toWords(field.name, true))\n\n const type = new GraphQLList(\n new GraphQLNonNull(\n new GraphQLUnionType({\n name: fullName,\n resolveType: (data) => graphqlResult.types.blockTypes[data.blockType].name,\n types: blockTypes,\n }),\n ),\n )\n\n return {\n ...objectTypeConfig,\n [field.name]: { type: withNullableType(field, type) },\n }\n },\n checkbox: (objectTypeConfig: ObjectTypeConfig, field: CheckboxField) => ({\n ...objectTypeConfig,\n [field.name]: { type: withNullableType(field, GraphQLBoolean, forceNullable) },\n }),\n code: (objectTypeConfig: ObjectTypeConfig, field: CodeField) => ({\n ...objectTypeConfig,\n [field.name]: { type: withNullableType(field, GraphQLString, forceNullable) },\n }),\n collapsible: (objectTypeConfig: ObjectTypeConfig, field: CollapsibleField) =>\n field.fields.reduce((objectTypeConfigWithCollapsibleFields, subField) => {\n const addSubField = fieldToSchemaMap[subField.type]\n if (addSubField) return addSubField(objectTypeConfigWithCollapsibleFields, subField)\n return objectTypeConfigWithCollapsibleFields\n }, objectTypeConfig),\n date: (objectTypeConfig: ObjectTypeConfig, field: DateField) => ({\n ...objectTypeConfig,\n [field.name]: { type: withNullableType(field, DateTimeResolver, forceNullable) },\n }),\n email: (objectTypeConfig: ObjectTypeConfig, field: EmailField) => ({\n ...objectTypeConfig,\n [field.name]: { type: withNullableType(field, EmailAddressResolver, forceNullable) },\n }),\n group: (objectTypeConfig: ObjectTypeConfig, field: GroupField) => {\n const interfaceName =\n field?.interfaceName || combineParentName(parentName, toWords(field.name, true))\n\n if (!graphqlResult.types.groupTypes[interfaceName]) {\n const objectType = buildObjectType({\n name: interfaceName,\n config,\n fields: field.fields,\n forceNullable: isFieldNullable(field, forceNullable),\n graphqlResult,\n parentName: interfaceName,\n })\n\n if (Object.keys(objectType.getFields()).length) {\n graphqlResult.types.groupTypes[interfaceName] = objectType\n }\n }\n\n if (!graphqlResult.types.groupTypes[interfaceName]) {\n return objectTypeConfig\n }\n\n return {\n ...objectTypeConfig,\n [field.name]: { type: graphqlResult.types.groupTypes[interfaceName] },\n }\n },\n json: (objectTypeConfig: ObjectTypeConfig, field: JSONField) => ({\n ...objectTypeConfig,\n [field.name]: { type: withNullableType(field, GraphQLJSON, forceNullable) },\n }),\n number: (objectTypeConfig: ObjectTypeConfig, field: NumberField) => {\n const type = field?.name === 'id' ? GraphQLInt : GraphQLFloat\n return {\n ...objectTypeConfig,\n [field.name]: {\n type: withNullableType(\n field,\n field?.hasMany === true ? new GraphQLList(type) : type,\n forceNullable,\n ),\n },\n }\n },\n point: (objectTypeConfig: ObjectTypeConfig, field: PointField) => ({\n ...objectTypeConfig,\n [field.name]: {\n type: withNullableType(\n field,\n new GraphQLList(new GraphQLNonNull(GraphQLFloat)),\n forceNullable,\n ),\n },\n }),\n radio: (objectTypeConfig: ObjectTypeConfig, field: RadioField) => ({\n ...objectTypeConfig,\n [field.name]: {\n type: withNullableType(\n field,\n new GraphQLEnumType({\n name: combineParentName(parentName, field.name),\n values: formatOptions(field),\n }),\n forceNullable,\n ),\n },\n }),\n relationship: (objectTypeConfig: ObjectTypeConfig, field: RelationshipField) => {\n const { relationTo } = field\n const isRelatedToManyCollections = Array.isArray(relationTo)\n const hasManyValues = field.hasMany\n const relationshipName = combineParentName(parentName, toWords(field.name, true))\n\n let type\n let relationToType = null\n\n if (Array.isArray(relationTo)) {\n relationToType = new GraphQLEnumType({\n name: `${relationshipName}_RelationTo`,\n values: relationTo.reduce(\n (relations, relation) => ({\n ...relations,\n [formatName(relation)]: {\n value: relation,\n },\n }),\n {},\n ),\n })\n\n const types = relationTo.map((relation) => graphqlResult.collections[relation].graphQL.type)\n\n type = new GraphQLObjectType({\n name: `${relationshipName}_Relationship`,\n fields: {\n relationTo: {\n type: relationToType,\n },\n value: {\n type: new GraphQLUnionType({\n name: relationshipName,\n resolveType(data, { req }) {\n return graphqlResult.collections[data.collection].graphQL.type.name\n },\n types,\n }),\n },\n },\n })\n } else {\n ;({ type } = graphqlResult.collections[relationTo].graphQL)\n }\n\n // If the relationshipType is undefined at this point,\n // it can be assumed that this blockType can have a relationship\n // to itself. Therefore, we set the relationshipType equal to the blockType\n // that is currently being created.\n\n type = type || newlyCreatedBlockType\n\n const relationshipArgs: {\n draft?: unknown\n fallbackLocale?: unknown\n limit?: unknown\n locale?: unknown\n page?: unknown\n where?: unknown\n } = {}\n\n const relationsUseDrafts = (Array.isArray(relationTo) ? relationTo : [relationTo]).some(\n (relation) => graphqlResult.collections[relation].config.versions?.drafts,\n )\n\n if (relationsUseDrafts) {\n relationshipArgs.draft = {\n type: GraphQLBoolean,\n }\n }\n\n if (config.localization) {\n relationshipArgs.locale = {\n type: graphqlResult.types.localeInputType,\n }\n\n relationshipArgs.fallbackLocale = {\n type: graphqlResult.types.fallbackLocaleInputType,\n }\n }\n\n const relationship = {\n type: withNullableType(\n field,\n hasManyValues ? new GraphQLList(new GraphQLNonNull(type)) : type,\n forceNullable,\n ),\n args: relationshipArgs,\n extensions: { complexity: 10 },\n async resolve(parent, args, context: Context) {\n const value = parent[field.name]\n const locale = args.locale || context.req.locale\n const fallbackLocale = args.fallbackLocale || context.req.fallbackLocale\n let relatedCollectionSlug = field.relationTo\n const draft = Boolean(args.draft ?? context.req.query?.draft)\n\n if (hasManyValues) {\n const results = []\n const resultPromises = []\n\n const createPopulationPromise = async (relatedDoc, i) => {\n let id = relatedDoc\n let collectionSlug = field.relationTo\n\n if (isRelatedToManyCollections) {\n collectionSlug = relatedDoc.relationTo\n id = relatedDoc.value\n }\n\n const result = await context.req.payloadDataLoader.load(\n createDataloaderCacheKey({\n collectionSlug: collectionSlug as string,\n currentDepth: 0,\n depth: 0,\n docID: id,\n draft,\n fallbackLocale,\n locale,\n overrideAccess: false,\n showHiddenFields: false,\n transactionID: context.req.transactionID,\n }),\n )\n\n if (result) {\n if (isRelatedToManyCollections) {\n results[i] = {\n relationTo: collectionSlug,\n value: {\n ...result,\n collection: collectionSlug,\n },\n }\n } else {\n results[i] = result\n }\n }\n }\n\n if (value) {\n value.forEach((relatedDoc, i) => {\n resultPromises.push(createPopulationPromise(relatedDoc, i))\n })\n }\n\n await Promise.all(resultPromises)\n return results\n }\n\n let id = value\n if (isRelatedToManyCollections && value) {\n id = value.value\n relatedCollectionSlug = value.relationTo\n }\n\n if (id) {\n const relatedDocument = await context.req.payloadDataLoader.load(\n createDataloaderCacheKey({\n collectionSlug: relatedCollectionSlug as string,\n currentDepth: 0,\n depth: 0,\n docID: id,\n draft,\n fallbackLocale,\n locale,\n overrideAccess: false,\n showHiddenFields: false,\n transactionID: context.req.transactionID,\n }),\n )\n\n if (relatedDocument) {\n if (isRelatedToManyCollections) {\n return {\n relationTo: relatedCollectionSlug,\n value: {\n ...relatedDocument,\n collection: relatedCollectionSlug,\n },\n }\n }\n\n return relatedDocument\n }\n\n return null\n }\n\n return null\n },\n }\n\n return {\n ...objectTypeConfig,\n [field.name]: relationship,\n }\n },\n richText: (objectTypeConfig: ObjectTypeConfig, field: RichTextField) => ({\n ...objectTypeConfig,\n [field.name]: {\n type: withNullableType(field, GraphQLJSON, forceNullable),\n args: {\n depth: {\n type: GraphQLInt,\n },\n },\n async resolve(parent, args, context: Context) {\n let depth = config.defaultDepth\n if (typeof args.depth !== 'undefined') depth = args.depth\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\n if (typeof field?.editor === 'function') {\n throw new Error('Attempted to access unsanitized rich text editor.')\n }\n\n const editor: RichTextAdapter = field?.editor\n\n // RichText fields have their own depth argument in GraphQL.\n // This is why the populationPromise (which populates richtext fields like uploads and relationships)\n // is run here again, with the provided depth.\n // In the graphql find.ts resolver, the depth is then hard-coded to 0.\n // Effectively, this means that the populationPromise for GraphQL is only run here, and not in the find.ts resolver / normal population promise.\n if (editor?.graphQLPopulationPromises) {\n const fieldPromises = []\n const populationPromises = []\n const populateDepth =\n field?.maxDepth !== undefined && field?.maxDepth < depth ? field?.maxDepth : depth\n\n editor?.graphQLPopulationPromises({\n context,\n depth: populateDepth,\n draft: args.draft,\n field,\n fieldPromises,\n findMany: false,\n flattenLocales: false,\n overrideAccess: false,\n populationPromises,\n req: context.req,\n showHiddenFields: false,\n siblingDoc: parent,\n })\n await Promise.all(fieldPromises)\n await Promise.all(populationPromises)\n }\n\n return parent[field.name]\n },\n },\n }),\n row: (objectTypeConfig: ObjectTypeConfig, field: RowField) =>\n field.fields.reduce((objectTypeConfigWithRowFields, subField) => {\n const addSubField = fieldToSchemaMap[subField.type]\n if (addSubField) return addSubField(objectTypeConfigWithRowFields, subField)\n return objectTypeConfigWithRowFields\n }, objectTypeConfig),\n select: (objectTypeConfig: ObjectTypeConfig, field: SelectField) => {\n const fullName = combineParentName(parentName, field.name)\n\n let type: GraphQLType = new GraphQLEnumType({\n name: fullName,\n values: formatOptions(field),\n })\n\n type = field.hasMany ? new GraphQLList(new GraphQLNonNull(type)) : type\n type = withNullableType(field, type, forceNullable)\n\n return {\n ...objectTypeConfig,\n [field.name]: { type },\n }\n },\n tabs: (objectTypeConfig: ObjectTypeConfig, field: TabsField) =>\n field.tabs.reduce((tabSchema, tab) => {\n if (tabHasName(tab)) {\n const interfaceName =\n tab?.interfaceName || combineParentName(parentName, toWords(tab.name, true))\n\n if (!graphqlResult.types.groupTypes[interfaceName]) {\n const objectType = buildObjectType({\n name: interfaceName,\n config,\n fields: tab.fields,\n forceNullable,\n graphqlResult,\n parentName: interfaceName,\n })\n\n if (Object.keys(objectType.getFields()).length) {\n graphqlResult.types.groupTypes[interfaceName] = objectType\n }\n }\n\n if (!graphqlResult.types.groupTypes[interfaceName]) {\n return tabSchema\n }\n\n return {\n ...tabSchema,\n [tab.name]: { type: graphqlResult.types.groupTypes[interfaceName] },\n }\n }\n\n return {\n ...tabSchema,\n ...tab.fields.reduce((subFieldSchema, subField) => {\n const addSubField = fieldToSchemaMap[subField.type]\n if (addSubField) return addSubField(subFieldSchema, subField)\n return subFieldSchema\n }, tabSchema),\n }\n }, objectTypeConfig),\n text: (objectTypeConfig: ObjectTypeConfig, field: TextField) => ({\n ...objectTypeConfig,\n [field.name]: {\n type: withNullableType(\n field,\n field.hasMany === true ? new GraphQLList(GraphQLString) : GraphQLString,\n forceNullable,\n ),\n },\n }),\n textarea: (objectTypeConfig: ObjectTypeConfig, field: TextareaField) => ({\n ...objectTypeConfig,\n [field.name]: { type: withNullableType(field, GraphQLString, forceNullable) },\n }),\n upload: (objectTypeConfig: ObjectTypeConfig, field: UploadField) => {\n const { relationTo } = field\n\n const uploadName = combineParentName(parentName, toWords(field.name, true))\n\n // If the relationshipType is undefined at this point,\n // it can be assumed that this blockType can have a relationship\n // to itself. Therefore, we set the relationshipType equal to the blockType\n // that is currently being created.\n\n const type = withNullableType(\n field,\n graphqlResult.collections[relationTo].graphQL.type || newlyCreatedBlockType,\n forceNullable,\n )\n\n const uploadArgs = {} as LocaleInputType\n\n if (config.localization) {\n uploadArgs.locale = {\n type: graphqlResult.types.localeInputType,\n }\n\n uploadArgs.fallbackLocale = {\n type: graphqlResult.types.fallbackLocaleInputType,\n }\n }\n\n const relatedCollectionSlug = field.relationTo\n\n const upload = {\n type,\n args: uploadArgs,\n extensions: { complexity: 20 },\n async resolve(parent, args, context: Context) {\n const value = parent[field.name]\n const locale = args.locale || context.req.locale\n const fallbackLocale = args.fallbackLocale || context.req.fallbackLocale\n const id = value\n const draft = Boolean(args.draft ?? context.req.query?.draft)\n\n if (id) {\n const relatedDocument = await context.req.payloadDataLoader.load(\n createDataloaderCacheKey({\n collectionSlug: relatedCollectionSlug,\n currentDepth: 0,\n depth: 0,\n docID: id,\n draft,\n fallbackLocale,\n locale,\n overrideAccess: false,\n showHiddenFields: false,\n transactionID: context.req.transactionID,\n }),\n )\n\n return relatedDocument || null\n }\n\n return null\n },\n }\n\n const whereFields = graphqlResult.collections[relationTo].config.fields\n\n upload.args.where = {\n type: buildWhereInputType({\n name: uploadName,\n fields: whereFields,\n parentName: uploadName,\n }),\n }\n\n return {\n ...objectTypeConfig,\n [field.name]: upload,\n }\n },\n }\n\n const objectSchema = {\n name,\n fields: () =>\n fields.reduce((objectTypeConfig, field) => {\n const fieldSchema = fieldToSchemaMap[field.type]\n\n if (typeof fieldSchema !== 'function') {\n return objectTypeConfig\n }\n\n return {\n ...objectTypeConfig,\n ...fieldSchema(objectTypeConfig, field),\n }\n }, baseFields),\n }\n\n const newlyCreatedBlockType = new GraphQLObjectType(objectSchema)\n\n return newlyCreatedBlockType\n}\n"],"names":["GraphQLBoolean","GraphQLEnumType","GraphQLFloat","GraphQLInt","GraphQLList","GraphQLNonNull","GraphQLObjectType","GraphQLString","GraphQLUnionType","DateTimeResolver","EmailAddressResolver","MissingEditorProp","createDataloaderCacheKey","toWords","tabHasName","GraphQLJSON","combineParentName","formatName","formatOptions","buildWhereInputType","isFieldNullable","withNullableType","buildObjectType","name","baseFields","config","fields","forceNullable","graphqlResult","parentName","fieldToSchemaMap","array","objectTypeConfig","field","interfaceName","types","arrayTypes","objectType","Object","keys","getFields","length","arrayType","type","blocks","blockTypes","reduce","acc","block","slug","graphQL","singularName","push","fullName","resolveType","data","blockType","checkbox","code","collapsible","objectTypeConfigWithCollapsibleFields","subField","addSubField","date","email","group","groupTypes","json","number","hasMany","point","radio","values","relationship","relationTo","isRelatedToManyCollections","Array","isArray","hasManyValues","relationshipName","relationToType","relations","relation","value","map","collections","req","collection","newlyCreatedBlockType","relationshipArgs","relationsUseDrafts","some","versions","drafts","draft","localization","locale","localeInputType","fallbackLocale","fallbackLocaleInputType","args","extensions","complexity","resolve","parent","context","relatedCollectionSlug","Boolean","query","results","resultPromises","createPopulationPromise","relatedDoc","i","id","collectionSlug","result","payloadDataLoader","load","currentDepth","depth","docID","overrideAccess","showHiddenFields","transactionID","forEach","Promise","all","relatedDocument","richText","defaultDepth","editor","Error","graphQLPopulationPromises","fieldPromises","populationPromises","populateDepth","maxDepth","undefined","findMany","flattenLocales","siblingDoc","row","objectTypeConfigWithRowFields","select","tabs","tabSchema","tab","subFieldSchema","text","textarea","upload","uploadName","uploadArgs","whereFields","where","objectSchema","fieldSchema"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/schema/buildObjectType.ts"],"sourcesContent":["import type { GraphQLFieldConfig, GraphQLType } from 'graphql'\nimport type {\n ArrayField,\n BlockField,\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 RichTextAdapter,\n RichTextField,\n RowField,\n SanitizedConfig,\n SelectField,\n TabsField,\n TextField,\n TextareaField,\n UploadField,\n} from 'payload'\n\nimport {\n GraphQLBoolean,\n GraphQLEnumType,\n GraphQLFloat,\n GraphQLInt,\n GraphQLList,\n GraphQLNonNull,\n GraphQLObjectType,\n GraphQLString,\n GraphQLUnionType,\n} from 'graphql'\nimport { DateTimeResolver, EmailAddressResolver } from 'graphql-scalars'\nimport { MissingEditorProp, createDataloaderCacheKey, toWords } from 'payload'\nimport { tabHasName } from 'payload/shared'\n\nimport type { Context } from '../resolvers/types.js'\n\nimport { GraphQLJSON } from '../packages/graphql-type-json/index.js'\nimport combineParentName from '../utilities/combineParentName.js'\nimport formatName from '../utilities/formatName.js'\nimport formatOptions from '../utilities/formatOptions.js'\nimport buildWhereInputType from './buildWhereInputType.js'\nimport isFieldNullable from './isFieldNullable.js'\nimport withNullableType from './withNullableType.js'\n\ntype LocaleInputType = {\n fallbackLocale: {\n type: GraphQLType\n }\n locale: {\n type: GraphQLType\n }\n where: {\n type: GraphQLType\n }\n}\n\nexport type ObjectTypeConfig = {\n [path: string]: GraphQLFieldConfig<any, any>\n}\n\ntype Args = {\n baseFields?: ObjectTypeConfig\n config: SanitizedConfig\n fields: Field[]\n forceNullable?: boolean\n graphqlResult: GraphQLInfo\n name: string\n parentName: string\n}\n\nexport function buildObjectType({\n name,\n baseFields = {},\n config,\n fields,\n forceNullable,\n graphqlResult,\n parentName,\n}: Args): GraphQLObjectType {\n const fieldToSchemaMap = {\n array: (objectTypeConfig: ObjectTypeConfig, field: ArrayField) => {\n const interfaceName =\n field?.interfaceName || combineParentName(parentName, toWords(field.name, true))\n\n if (!graphqlResult.types.arrayTypes[interfaceName]) {\n const objectType = buildObjectType({\n name: interfaceName,\n config,\n fields: field.fields,\n forceNullable: isFieldNullable(field, forceNullable),\n graphqlResult,\n parentName: interfaceName,\n })\n\n if (Object.keys(objectType.getFields()).length) {\n graphqlResult.types.arrayTypes[interfaceName] = objectType\n }\n }\n\n if (!graphqlResult.types.arrayTypes[interfaceName]) {\n return objectTypeConfig\n }\n\n const arrayType = new GraphQLList(\n new GraphQLNonNull(graphqlResult.types.arrayTypes[interfaceName]),\n )\n\n return {\n ...objectTypeConfig,\n [field.name]: { type: withNullableType(field, arrayType) },\n }\n },\n blocks: (objectTypeConfig: ObjectTypeConfig, field: BlockField) => {\n const blockTypes: GraphQLObjectType<any, any>[] = field.blocks.reduce((acc, block) => {\n if (!graphqlResult.types.blockTypes[block.slug]) {\n const interfaceName =\n block?.interfaceName || block?.graphQL?.singularName || toWords(block.slug, true)\n\n const objectType = buildObjectType({\n name: interfaceName,\n config,\n fields: [\n ...block.fields,\n {\n name: 'blockType',\n type: 'text',\n },\n ],\n forceNullable,\n graphqlResult,\n parentName: interfaceName,\n })\n\n if (Object.keys(objectType.getFields()).length) {\n graphqlResult.types.blockTypes[block.slug] = objectType\n }\n }\n\n if (graphqlResult.types.blockTypes[block.slug]) {\n acc.push(graphqlResult.types.blockTypes[block.slug])\n }\n\n return acc\n }, [])\n\n if (blockTypes.length === 0) {\n return objectTypeConfig\n }\n\n const fullName = combineParentName(parentName, toWords(field.name, true))\n\n const type = new GraphQLList(\n new GraphQLNonNull(\n new GraphQLUnionType({\n name: fullName,\n resolveType: (data) => graphqlResult.types.blockTypes[data.blockType].name,\n types: blockTypes,\n }),\n ),\n )\n\n return {\n ...objectTypeConfig,\n [field.name]: { type: withNullableType(field, type) },\n }\n },\n checkbox: (objectTypeConfig: ObjectTypeConfig, field: CheckboxField) => ({\n ...objectTypeConfig,\n [field.name]: { type: withNullableType(field, GraphQLBoolean, forceNullable) },\n }),\n code: (objectTypeConfig: ObjectTypeConfig, field: CodeField) => ({\n ...objectTypeConfig,\n [field.name]: { type: withNullableType(field, GraphQLString, forceNullable) },\n }),\n collapsible: (objectTypeConfig: ObjectTypeConfig, field: CollapsibleField) =>\n field.fields.reduce((objectTypeConfigWithCollapsibleFields, subField) => {\n const addSubField = fieldToSchemaMap[subField.type]\n if (addSubField) return addSubField(objectTypeConfigWithCollapsibleFields, subField)\n return objectTypeConfigWithCollapsibleFields\n }, objectTypeConfig),\n date: (objectTypeConfig: ObjectTypeConfig, field: DateField) => ({\n ...objectTypeConfig,\n [field.name]: { type: withNullableType(field, DateTimeResolver, forceNullable) },\n }),\n email: (objectTypeConfig: ObjectTypeConfig, field: EmailField) => ({\n ...objectTypeConfig,\n [field.name]: { type: withNullableType(field, EmailAddressResolver, forceNullable) },\n }),\n group: (objectTypeConfig: ObjectTypeConfig, field: GroupField) => {\n const interfaceName =\n field?.interfaceName || combineParentName(parentName, toWords(field.name, true))\n\n if (!graphqlResult.types.groupTypes[interfaceName]) {\n const objectType = buildObjectType({\n name: interfaceName,\n config,\n fields: field.fields,\n forceNullable: isFieldNullable(field, forceNullable),\n graphqlResult,\n parentName: interfaceName,\n })\n\n if (Object.keys(objectType.getFields()).length) {\n graphqlResult.types.groupTypes[interfaceName] = objectType\n }\n }\n\n if (!graphqlResult.types.groupTypes[interfaceName]) {\n return objectTypeConfig\n }\n\n return {\n ...objectTypeConfig,\n [field.name]: { type: graphqlResult.types.groupTypes[interfaceName] },\n }\n },\n json: (objectTypeConfig: ObjectTypeConfig, field: JSONField) => ({\n ...objectTypeConfig,\n [field.name]: { type: withNullableType(field, GraphQLJSON, forceNullable) },\n }),\n number: (objectTypeConfig: ObjectTypeConfig, field: NumberField) => {\n const type = field?.name === 'id' ? GraphQLInt : GraphQLFloat\n return {\n ...objectTypeConfig,\n [field.name]: {\n type: withNullableType(\n field,\n field?.hasMany === true ? new GraphQLList(type) : type,\n forceNullable,\n ),\n },\n }\n },\n point: (objectTypeConfig: ObjectTypeConfig, field: PointField) => ({\n ...objectTypeConfig,\n [field.name]: {\n type: withNullableType(\n field,\n new GraphQLList(new GraphQLNonNull(GraphQLFloat)),\n forceNullable,\n ),\n },\n }),\n radio: (objectTypeConfig: ObjectTypeConfig, field: RadioField) => ({\n ...objectTypeConfig,\n [field.name]: {\n type: withNullableType(\n field,\n new GraphQLEnumType({\n name: combineParentName(parentName, field.name),\n values: formatOptions(field),\n }),\n forceNullable,\n ),\n },\n }),\n relationship: (objectTypeConfig: ObjectTypeConfig, field: RelationshipField) => {\n const { relationTo } = field\n const isRelatedToManyCollections = Array.isArray(relationTo)\n const hasManyValues = field.hasMany\n const relationshipName = combineParentName(parentName, toWords(field.name, true))\n\n let type\n let relationToType = null\n\n if (Array.isArray(relationTo)) {\n relationToType = new GraphQLEnumType({\n name: `${relationshipName}_RelationTo`,\n values: relationTo.reduce(\n (relations, relation) => ({\n ...relations,\n [formatName(relation)]: {\n value: relation,\n },\n }),\n {},\n ),\n })\n\n const types = relationTo.map((relation) => graphqlResult.collections[relation].graphQL.type)\n\n type = new GraphQLObjectType({\n name: `${relationshipName}_Relationship`,\n fields: {\n relationTo: {\n type: relationToType,\n },\n value: {\n type: new GraphQLUnionType({\n name: relationshipName,\n resolveType(data, { req }) {\n return graphqlResult.collections[data.collection].graphQL.type.name\n },\n types,\n }),\n },\n },\n })\n } else {\n ;({ type } = graphqlResult.collections[relationTo].graphQL)\n }\n\n // If the relationshipType is undefined at this point,\n // it can be assumed that this blockType can have a relationship\n // to itself. Therefore, we set the relationshipType equal to the blockType\n // that is currently being created.\n\n type = type || newlyCreatedBlockType\n\n const relationshipArgs: {\n draft?: unknown\n fallbackLocale?: unknown\n limit?: unknown\n locale?: unknown\n page?: unknown\n where?: unknown\n } = {}\n\n const relationsUseDrafts = (Array.isArray(relationTo) ? relationTo : [relationTo]).some(\n (relation) => graphqlResult.collections[relation].config.versions?.drafts,\n )\n\n if (relationsUseDrafts) {\n relationshipArgs.draft = {\n type: GraphQLBoolean,\n }\n }\n\n if (config.localization) {\n relationshipArgs.locale = {\n type: graphqlResult.types.localeInputType,\n }\n\n relationshipArgs.fallbackLocale = {\n type: graphqlResult.types.fallbackLocaleInputType,\n }\n }\n\n const relationship = {\n type: withNullableType(\n field,\n hasManyValues ? new GraphQLList(new GraphQLNonNull(type)) : type,\n forceNullable,\n ),\n args: relationshipArgs,\n extensions: { complexity: 10 },\n async resolve(parent, args, context: Context) {\n const value = parent[field.name]\n const locale = args.locale || context.req.locale\n const fallbackLocale = args.fallbackLocale || context.req.fallbackLocale\n let relatedCollectionSlug = field.relationTo\n const draft = Boolean(args.draft ?? context.req.query?.draft)\n\n if (hasManyValues) {\n const results = []\n const resultPromises = []\n\n const createPopulationPromise = async (relatedDoc, i) => {\n let id = relatedDoc\n let collectionSlug = field.relationTo\n\n if (isRelatedToManyCollections) {\n collectionSlug = relatedDoc.relationTo\n id = relatedDoc.value\n }\n\n const result = await context.req.payloadDataLoader.load(\n createDataloaderCacheKey({\n collectionSlug: collectionSlug as string,\n currentDepth: 0,\n depth: 0,\n docID: id,\n draft,\n fallbackLocale,\n locale,\n overrideAccess: false,\n showHiddenFields: false,\n transactionID: context.req.transactionID,\n }),\n )\n\n if (result) {\n if (isRelatedToManyCollections) {\n results[i] = {\n relationTo: collectionSlug,\n value: {\n ...result,\n collection: collectionSlug,\n },\n }\n } else {\n results[i] = result\n }\n }\n }\n\n if (value) {\n value.forEach((relatedDoc, i) => {\n resultPromises.push(createPopulationPromise(relatedDoc, i))\n })\n }\n\n await Promise.all(resultPromises)\n return results\n }\n\n let id = value\n if (isRelatedToManyCollections && value) {\n id = value.value\n relatedCollectionSlug = value.relationTo\n }\n\n if (id) {\n const relatedDocument = await context.req.payloadDataLoader.load(\n createDataloaderCacheKey({\n collectionSlug: relatedCollectionSlug as string,\n currentDepth: 0,\n depth: 0,\n docID: id,\n draft,\n fallbackLocale,\n locale,\n overrideAccess: false,\n showHiddenFields: false,\n transactionID: context.req.transactionID,\n }),\n )\n\n if (relatedDocument) {\n if (isRelatedToManyCollections) {\n return {\n relationTo: relatedCollectionSlug,\n value: {\n ...relatedDocument,\n collection: relatedCollectionSlug,\n },\n }\n }\n\n return relatedDocument\n }\n\n return null\n }\n\n return null\n },\n }\n\n return {\n ...objectTypeConfig,\n [field.name]: relationship,\n }\n },\n richText: (objectTypeConfig: ObjectTypeConfig, field: RichTextField) => ({\n ...objectTypeConfig,\n [field.name]: {\n type: withNullableType(field, GraphQLJSON, forceNullable),\n args: {\n depth: {\n type: GraphQLInt,\n },\n },\n async resolve(parent, args, context: Context) {\n let depth = config.defaultDepth\n if (typeof args.depth !== 'undefined') depth = args.depth\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\n if (typeof field?.editor === 'function') {\n throw new Error('Attempted to access unsanitized rich text editor.')\n }\n\n const editor: RichTextAdapter = field?.editor\n\n // RichText fields have their own depth argument in GraphQL.\n // This is why the populationPromise (which populates richtext fields like uploads and relationships)\n // is run here again, with the provided depth.\n // In the graphql find.ts resolver, the depth is then hard-coded to 0.\n // Effectively, this means that the populationPromise for GraphQL is only run here, and not in the find.ts resolver / normal population promise.\n if (editor?.graphQLPopulationPromises) {\n const fieldPromises = []\n const populationPromises = []\n const populateDepth =\n field?.maxDepth !== undefined && field?.maxDepth < depth ? field?.maxDepth : depth\n\n editor?.graphQLPopulationPromises({\n context,\n depth: populateDepth,\n draft: args.draft,\n field,\n fieldPromises,\n findMany: false,\n flattenLocales: false,\n overrideAccess: false,\n populationPromises,\n req: context.req,\n showHiddenFields: false,\n siblingDoc: parent,\n })\n await Promise.all(fieldPromises)\n await Promise.all(populationPromises)\n }\n\n return parent[field.name]\n },\n },\n }),\n row: (objectTypeConfig: ObjectTypeConfig, field: RowField) =>\n field.fields.reduce((objectTypeConfigWithRowFields, subField) => {\n const addSubField = fieldToSchemaMap[subField.type]\n if (addSubField) return addSubField(objectTypeConfigWithRowFields, subField)\n return objectTypeConfigWithRowFields\n }, objectTypeConfig),\n select: (objectTypeConfig: ObjectTypeConfig, field: SelectField) => {\n const fullName = combineParentName(parentName, field.name)\n\n let type: GraphQLType = new GraphQLEnumType({\n name: fullName,\n values: formatOptions(field),\n })\n\n type = field.hasMany ? new GraphQLList(new GraphQLNonNull(type)) : type\n type = withNullableType(field, type, forceNullable)\n\n return {\n ...objectTypeConfig,\n [field.name]: { type },\n }\n },\n tabs: (objectTypeConfig: ObjectTypeConfig, field: TabsField) =>\n field.tabs.reduce((tabSchema, tab) => {\n if (tabHasName(tab)) {\n const interfaceName =\n tab?.interfaceName || combineParentName(parentName, toWords(tab.name, true))\n\n if (!graphqlResult.types.groupTypes[interfaceName]) {\n const objectType = buildObjectType({\n name: interfaceName,\n config,\n fields: tab.fields,\n forceNullable,\n graphqlResult,\n parentName: interfaceName,\n })\n\n if (Object.keys(objectType.getFields()).length) {\n graphqlResult.types.groupTypes[interfaceName] = objectType\n }\n }\n\n if (!graphqlResult.types.groupTypes[interfaceName]) {\n return tabSchema\n }\n\n return {\n ...tabSchema,\n [tab.name]: { type: graphqlResult.types.groupTypes[interfaceName] },\n }\n }\n\n return {\n ...tabSchema,\n ...tab.fields.reduce((subFieldSchema, subField) => {\n const addSubField = fieldToSchemaMap[subField.type]\n if (addSubField) return addSubField(subFieldSchema, subField)\n return subFieldSchema\n }, tabSchema),\n }\n }, objectTypeConfig),\n text: (objectTypeConfig: ObjectTypeConfig, field: TextField) => ({\n ...objectTypeConfig,\n [field.name]: {\n type: withNullableType(\n field,\n field.hasMany === true ? new GraphQLList(GraphQLString) : GraphQLString,\n forceNullable,\n ),\n },\n }),\n textarea: (objectTypeConfig: ObjectTypeConfig, field: TextareaField) => ({\n ...objectTypeConfig,\n [field.name]: { type: withNullableType(field, GraphQLString, forceNullable) },\n }),\n upload: (objectTypeConfig: ObjectTypeConfig, field: UploadField) => {\n const { relationTo } = field\n const isRelatedToManyCollections = Array.isArray(relationTo)\n const hasManyValues = field.hasMany\n const relationshipName = combineParentName(parentName, toWords(field.name, true))\n\n let type\n let relationToType = null\n\n if (Array.isArray(relationTo)) {\n relationToType = new GraphQLEnumType({\n name: `${relationshipName}_RelationTo`,\n values: relationTo.reduce(\n (relations, relation) => ({\n ...relations,\n [formatName(relation)]: {\n value: relation,\n },\n }),\n {},\n ),\n })\n\n const types = relationTo.map((relation) => graphqlResult.collections[relation].graphQL.type)\n\n type = new GraphQLObjectType({\n name: `${relationshipName}_Relationship`,\n fields: {\n relationTo: {\n type: relationToType,\n },\n value: {\n type: new GraphQLUnionType({\n name: relationshipName,\n resolveType(data, { req }) {\n return graphqlResult.collections[data.collection].graphQL.type.name\n },\n types,\n }),\n },\n },\n })\n } else {\n ;({ type } = graphqlResult.collections[relationTo].graphQL)\n }\n\n // If the relationshipType is undefined at this point,\n // it can be assumed that this blockType can have a relationship\n // to itself. Therefore, we set the relationshipType equal to the blockType\n // that is currently being created.\n\n type = type || newlyCreatedBlockType\n\n const relationshipArgs: {\n draft?: unknown\n fallbackLocale?: unknown\n limit?: unknown\n locale?: unknown\n page?: unknown\n where?: unknown\n } = {}\n\n const relationsUseDrafts = (Array.isArray(relationTo) ? relationTo : [relationTo]).some(\n (relation) => graphqlResult.collections[relation].config.versions?.drafts,\n )\n\n if (relationsUseDrafts) {\n relationshipArgs.draft = {\n type: GraphQLBoolean,\n }\n }\n\n if (config.localization) {\n relationshipArgs.locale = {\n type: graphqlResult.types.localeInputType,\n }\n\n relationshipArgs.fallbackLocale = {\n type: graphqlResult.types.fallbackLocaleInputType,\n }\n }\n\n const relationship = {\n type: withNullableType(\n field,\n hasManyValues ? new GraphQLList(new GraphQLNonNull(type)) : type,\n forceNullable,\n ),\n args: relationshipArgs,\n extensions: { complexity: 10 },\n async resolve(parent, args, context: Context) {\n const value = parent[field.name]\n const locale = args.locale || context.req.locale\n const fallbackLocale = args.fallbackLocale || context.req.fallbackLocale\n let relatedCollectionSlug = field.relationTo\n const draft = Boolean(args.draft ?? context.req.query?.draft)\n\n if (hasManyValues) {\n const results = []\n const resultPromises = []\n\n const createPopulationPromise = async (relatedDoc, i) => {\n let id = relatedDoc\n let collectionSlug = field.relationTo\n\n if (isRelatedToManyCollections) {\n collectionSlug = relatedDoc.relationTo\n id = relatedDoc.value\n }\n\n const result = await context.req.payloadDataLoader.load(\n createDataloaderCacheKey({\n collectionSlug: collectionSlug as string,\n currentDepth: 0,\n depth: 0,\n docID: id,\n draft,\n fallbackLocale,\n locale,\n overrideAccess: false,\n showHiddenFields: false,\n transactionID: context.req.transactionID,\n }),\n )\n\n if (result) {\n if (isRelatedToManyCollections) {\n results[i] = {\n relationTo: collectionSlug,\n value: {\n ...result,\n collection: collectionSlug,\n },\n }\n } else {\n results[i] = result\n }\n }\n }\n\n if (value) {\n value.forEach((relatedDoc, i) => {\n resultPromises.push(createPopulationPromise(relatedDoc, i))\n })\n }\n\n await Promise.all(resultPromises)\n return results\n }\n\n let id = value\n if (isRelatedToManyCollections && value) {\n id = value.value\n relatedCollectionSlug = value.relationTo\n }\n\n if (id) {\n const relatedDocument = await context.req.payloadDataLoader.load(\n createDataloaderCacheKey({\n collectionSlug: relatedCollectionSlug as string,\n currentDepth: 0,\n depth: 0,\n docID: id,\n draft,\n fallbackLocale,\n locale,\n overrideAccess: false,\n showHiddenFields: false,\n transactionID: context.req.transactionID,\n }),\n )\n\n if (relatedDocument) {\n if (isRelatedToManyCollections) {\n return {\n relationTo: relatedCollectionSlug,\n value: {\n ...relatedDocument,\n collection: relatedCollectionSlug,\n },\n }\n }\n\n return relatedDocument\n }\n\n return null\n }\n\n return null\n },\n }\n\n return {\n ...objectTypeConfig,\n [field.name]: relationship,\n }\n },\n }\n\n const objectSchema = {\n name,\n fields: () =>\n fields.reduce((objectTypeConfig, field) => {\n const fieldSchema = fieldToSchemaMap[field.type]\n\n if (typeof fieldSchema !== 'function') {\n return objectTypeConfig\n }\n\n return {\n ...objectTypeConfig,\n ...fieldSchema(objectTypeConfig, field),\n }\n }, baseFields),\n }\n\n const newlyCreatedBlockType = new GraphQLObjectType(objectSchema)\n\n return newlyCreatedBlockType\n}\n"],"names":["GraphQLBoolean","GraphQLEnumType","GraphQLFloat","GraphQLInt","GraphQLList","GraphQLNonNull","GraphQLObjectType","GraphQLString","GraphQLUnionType","DateTimeResolver","EmailAddressResolver","MissingEditorProp","createDataloaderCacheKey","toWords","tabHasName","GraphQLJSON","combineParentName","formatName","formatOptions","isFieldNullable","withNullableType","buildObjectType","name","baseFields","config","fields","forceNullable","graphqlResult","parentName","fieldToSchemaMap","array","objectTypeConfig","field","interfaceName","types","arrayTypes","objectType","Object","keys","getFields","length","arrayType","type","blocks","blockTypes","reduce","acc","block","slug","graphQL","singularName","push","fullName","resolveType","data","blockType","checkbox","code","collapsible","objectTypeConfigWithCollapsibleFields","subField","addSubField","date","email","group","groupTypes","json","number","hasMany","point","radio","values","relationship","relationTo","isRelatedToManyCollections","Array","isArray","hasManyValues","relationshipName","relationToType","relations","relation","value","map","collections","req","collection","newlyCreatedBlockType","relationshipArgs","relationsUseDrafts","some","versions","drafts","draft","localization","locale","localeInputType","fallbackLocale","fallbackLocaleInputType","args","extensions","complexity","resolve","parent","context","relatedCollectionSlug","Boolean","query","results","resultPromises","createPopulationPromise","relatedDoc","i","id","collectionSlug","result","payloadDataLoader","load","currentDepth","depth","docID","overrideAccess","showHiddenFields","transactionID","forEach","Promise","all","relatedDocument","richText","defaultDepth","editor","Error","graphQLPopulationPromises","fieldPromises","populationPromises","populateDepth","maxDepth","undefined","findMany","flattenLocales","siblingDoc","row","objectTypeConfigWithRowFields","select","tabs","tabSchema","tab","subFieldSchema","text","textarea","upload","objectSchema","fieldSchema"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"buildWhereInputType.d.ts","sourceRoot":"","sources":["../../src/schema/buildWhereInputType.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAsB,MAAM,SAAS,CAAA;AAExD,OAAO,EAAE,sBAAsB,EAAe,MAAM,SAAS,CAAA;AAQ7D,KAAK,IAAI,GAAG;IACV,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,QAAA,MAAM,mBAAmB,iCAAkC,IAAI,KAAG,sBAgFjE,CAAA;AAED,eAAe,mBAAmB,CAAA"}
1
+ {"version":3,"file":"buildWhereInputType.d.ts","sourceRoot":"","sources":["../../src/schema/buildWhereInputType.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAsB,MAAM,SAAS,CAAA;AAExD,OAAO,EAAE,sBAAsB,EAAe,MAAM,SAAS,CAAA;AAQ7D,KAAK,IAAI,GAAG;IACV,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,QAAA,MAAM,mBAAmB,iCAAkC,IAAI,KAAG,sBAgFjE,CAAA;AAED,eAAe,mBAAmB,CAAA"}
@@ -1,4 +1,4 @@
1
- /* eslint-disable @typescript-eslint/no-use-before-define */ import { GraphQLInputObjectType, GraphQLList } from 'graphql';
1
+ import { GraphQLInputObjectType, GraphQLList } from 'graphql';
2
2
  import { flattenTopLevelFields } from 'payload';
3
3
  import { fieldAffectsData, fieldHasSubFields, fieldIsPresentationalOnly } from 'payload/shared';
4
4
  import formatName from '../utilities/formatName.js';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/schema/buildWhereInputType.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-use-before-define */\nimport type { Field, FieldAffectingData } from 'payload'\n\nimport { GraphQLInputObjectType, GraphQLList } from 'graphql'\nimport { flattenTopLevelFields } from 'payload'\nimport { fieldAffectsData, fieldHasSubFields, fieldIsPresentationalOnly } from 'payload/shared'\n\nimport formatName from '../utilities/formatName.js'\nimport fieldToSchemaMap from './fieldToWhereInputSchemaMap.js'\nimport { withOperators } from './withOperators.js'\n\ntype Args = {\n fields: Field[]\n name: string\n parentName: string\n}\n\n/** This does as the function name suggests. It builds a where GraphQL input type\n * for all the fields which are passed to the function.\n * Each field has different operators which may be valid for a where input type.\n * For example, a text field may have a \"contains\" operator, but a number field\n * may not.\n *\n * buildWhereInputType is similar to buildObjectType and operates\n * on a field basis with a few distinct differences.\n *\n * 1. Everything needs to be a GraphQLInputObjectType or scalar / enum\n * 2. Relationships, groups, repeaters and flex content are not\n * directly searchable. Instead, we need to build a chained pathname\n * using dot notation so MongoDB can properly search nested paths.\n */\nconst buildWhereInputType = ({ name, fields, parentName }: Args): GraphQLInputObjectType => {\n // This is the function that builds nested paths for all\n // field types with nested paths.\n\n const idField = flattenTopLevelFields(fields).find(\n (field) => fieldAffectsData(field) && field.name === 'id',\n )\n\n const fieldTypes = fields.reduce((schema, field) => {\n if (!fieldIsPresentationalOnly(field) && !field.hidden) {\n const getFieldSchema = fieldToSchemaMap({\n parentName,\n })[field.type]\n\n if (getFieldSchema) {\n const fieldSchema = getFieldSchema(field)\n\n if (fieldHasSubFields(field) || field.type === 'tabs') {\n return {\n ...schema,\n ...fieldSchema.reduce(\n (subFields, subField) => ({\n ...subFields,\n [formatName(subField.key)]: subField.type,\n }),\n {},\n ),\n }\n }\n\n return {\n ...schema,\n [formatName(field.name)]: fieldSchema,\n }\n }\n }\n\n return schema\n }, {})\n\n if (!idField) {\n fieldTypes.id = {\n type: withOperators({ name: 'id', type: 'text' } as FieldAffectingData, parentName),\n }\n }\n\n const fieldName = formatName(name)\n\n const recursiveFields = {\n AND: {\n type: new GraphQLList(\n new GraphQLInputObjectType({\n name: `${fieldName}_where_and`,\n fields: () => ({\n ...fieldTypes,\n ...recursiveFields,\n }),\n }),\n ),\n },\n OR: {\n type: new GraphQLList(\n new GraphQLInputObjectType({\n name: `${fieldName}_where_or`,\n fields: () => ({\n ...fieldTypes,\n ...recursiveFields,\n }),\n }),\n ),\n },\n }\n\n return new GraphQLInputObjectType({\n name: `${fieldName}_where`,\n fields: {\n ...fieldTypes,\n ...recursiveFields,\n },\n })\n}\n\nexport default buildWhereInputType\n"],"names":["GraphQLInputObjectType","GraphQLList","flattenTopLevelFields","fieldAffectsData","fieldHasSubFields","fieldIsPresentationalOnly","formatName","fieldToSchemaMap","withOperators","buildWhereInputType","name","fields","parentName","idField","find","field","fieldTypes","reduce","schema","hidden","getFieldSchema","type","fieldSchema","subFields","subField","key","id","fieldName","recursiveFields","AND","OR"],"mappings":"AAAA,0DAA0D,GAG1D,SAASA,sBAAsB,EAAEC,WAAW,QAAQ,UAAS;AAC7D,SAASC,qBAAqB,QAAQ,UAAS;AAC/C,SAASC,gBAAgB,EAAEC,iBAAiB,EAAEC,yBAAyB,QAAQ,iBAAgB;AAE/F,OAAOC,gBAAgB,6BAA4B;AACnD,OAAOC,sBAAsB,kCAAiC;AAC9D,SAASC,aAAa,QAAQ,qBAAoB;AAQlD;;;;;;;;;;;;;CAaC,GACD,MAAMC,sBAAsB,CAAC,EAAEC,IAAI,EAAEC,MAAM,EAAEC,UAAU,EAAQ;IAC7D,wDAAwD;IACxD,iCAAiC;IAEjC,MAAMC,UAAUX,sBAAsBS,QAAQG,IAAI,CAChD,CAACC,QAAUZ,iBAAiBY,UAAUA,MAAML,IAAI,KAAK;IAGvD,MAAMM,aAAaL,OAAOM,MAAM,CAAC,CAACC,QAAQH;QACxC,IAAI,CAACV,0BAA0BU,UAAU,CAACA,MAAMI,MAAM,EAAE;YACtD,MAAMC,iBAAiBb,iBAAiB;gBACtCK;YACF,EAAE,CAACG,MAAMM,IAAI,CAAC;YAEd,IAAID,gBAAgB;gBAClB,MAAME,cAAcF,eAAeL;gBAEnC,IAAIX,kBAAkBW,UAAUA,MAAMM,IAAI,KAAK,QAAQ;oBACrD,OAAO;wBACL,GAAGH,MAAM;wBACT,GAAGI,YAAYL,MAAM,CACnB,CAACM,WAAWC,WAAc,CAAA;gCACxB,GAAGD,SAAS;gCACZ,CAACjB,WAAWkB,SAASC,GAAG,EAAE,EAAED,SAASH,IAAI;4BAC3C,CAAA,GACA,CAAC,EACF;oBACH;gBACF;gBAEA,OAAO;oBACL,GAAGH,MAAM;oBACT,CAACZ,WAAWS,MAAML,IAAI,EAAE,EAAEY;gBAC5B;YACF;QACF;QAEA,OAAOJ;IACT,GAAG,CAAC;IAEJ,IAAI,CAACL,SAAS;QACZG,WAAWU,EAAE,GAAG;YACdL,MAAMb,cAAc;gBAAEE,MAAM;gBAAMW,MAAM;YAAO,GAAyBT;QAC1E;IACF;IAEA,MAAMe,YAAYrB,WAAWI;IAE7B,MAAMkB,kBAAkB;QACtBC,KAAK;YACHR,MAAM,IAAIpB,YACR,IAAID,uBAAuB;gBACzBU,MAAM,CAAC,EAAEiB,UAAU,UAAU,CAAC;gBAC9BhB,QAAQ,IAAO,CAAA;wBACb,GAAGK,UAAU;wBACb,GAAGY,eAAe;oBACpB,CAAA;YACF;QAEJ;QACAE,IAAI;YACFT,MAAM,IAAIpB,YACR,IAAID,uBAAuB;gBACzBU,MAAM,CAAC,EAAEiB,UAAU,SAAS,CAAC;gBAC7BhB,QAAQ,IAAO,CAAA;wBACb,GAAGK,UAAU;wBACb,GAAGY,eAAe;oBACpB,CAAA;YACF;QAEJ;IACF;IAEA,OAAO,IAAI5B,uBAAuB;QAChCU,MAAM,CAAC,EAAEiB,UAAU,MAAM,CAAC;QAC1BhB,QAAQ;YACN,GAAGK,UAAU;YACb,GAAGY,eAAe;QACpB;IACF;AACF;AAEA,eAAenB,oBAAmB"}
1
+ {"version":3,"sources":["../../src/schema/buildWhereInputType.ts"],"sourcesContent":["import type { Field, FieldAffectingData } from 'payload'\n\nimport { GraphQLInputObjectType, GraphQLList } from 'graphql'\nimport { flattenTopLevelFields } from 'payload'\nimport { fieldAffectsData, fieldHasSubFields, fieldIsPresentationalOnly } from 'payload/shared'\n\nimport formatName from '../utilities/formatName.js'\nimport fieldToSchemaMap from './fieldToWhereInputSchemaMap.js'\nimport { withOperators } from './withOperators.js'\n\ntype Args = {\n fields: Field[]\n name: string\n parentName: string\n}\n\n/** This does as the function name suggests. It builds a where GraphQL input type\n * for all the fields which are passed to the function.\n * Each field has different operators which may be valid for a where input type.\n * For example, a text field may have a \"contains\" operator, but a number field\n * may not.\n *\n * buildWhereInputType is similar to buildObjectType and operates\n * on a field basis with a few distinct differences.\n *\n * 1. Everything needs to be a GraphQLInputObjectType or scalar / enum\n * 2. Relationships, groups, repeaters and flex content are not\n * directly searchable. Instead, we need to build a chained pathname\n * using dot notation so MongoDB can properly search nested paths.\n */\nconst buildWhereInputType = ({ name, fields, parentName }: Args): GraphQLInputObjectType => {\n // This is the function that builds nested paths for all\n // field types with nested paths.\n\n const idField = flattenTopLevelFields(fields).find(\n (field) => fieldAffectsData(field) && field.name === 'id',\n )\n\n const fieldTypes = fields.reduce((schema, field) => {\n if (!fieldIsPresentationalOnly(field) && !field.hidden) {\n const getFieldSchema = fieldToSchemaMap({\n parentName,\n })[field.type]\n\n if (getFieldSchema) {\n const fieldSchema = getFieldSchema(field)\n\n if (fieldHasSubFields(field) || field.type === 'tabs') {\n return {\n ...schema,\n ...fieldSchema.reduce(\n (subFields, subField) => ({\n ...subFields,\n [formatName(subField.key)]: subField.type,\n }),\n {},\n ),\n }\n }\n\n return {\n ...schema,\n [formatName(field.name)]: fieldSchema,\n }\n }\n }\n\n return schema\n }, {})\n\n if (!idField) {\n fieldTypes.id = {\n type: withOperators({ name: 'id', type: 'text' } as FieldAffectingData, parentName),\n }\n }\n\n const fieldName = formatName(name)\n\n const recursiveFields = {\n AND: {\n type: new GraphQLList(\n new GraphQLInputObjectType({\n name: `${fieldName}_where_and`,\n fields: () => ({\n ...fieldTypes,\n ...recursiveFields,\n }),\n }),\n ),\n },\n OR: {\n type: new GraphQLList(\n new GraphQLInputObjectType({\n name: `${fieldName}_where_or`,\n fields: () => ({\n ...fieldTypes,\n ...recursiveFields,\n }),\n }),\n ),\n },\n }\n\n return new GraphQLInputObjectType({\n name: `${fieldName}_where`,\n fields: {\n ...fieldTypes,\n ...recursiveFields,\n },\n })\n}\n\nexport default buildWhereInputType\n"],"names":["GraphQLInputObjectType","GraphQLList","flattenTopLevelFields","fieldAffectsData","fieldHasSubFields","fieldIsPresentationalOnly","formatName","fieldToSchemaMap","withOperators","buildWhereInputType","name","fields","parentName","idField","find","field","fieldTypes","reduce","schema","hidden","getFieldSchema","type","fieldSchema","subFields","subField","key","id","fieldName","recursiveFields","AND","OR"],"mappings":"AAEA,SAASA,sBAAsB,EAAEC,WAAW,QAAQ,UAAS;AAC7D,SAASC,qBAAqB,QAAQ,UAAS;AAC/C,SAASC,gBAAgB,EAAEC,iBAAiB,EAAEC,yBAAyB,QAAQ,iBAAgB;AAE/F,OAAOC,gBAAgB,6BAA4B;AACnD,OAAOC,sBAAsB,kCAAiC;AAC9D,SAASC,aAAa,QAAQ,qBAAoB;AAQlD;;;;;;;;;;;;;CAaC,GACD,MAAMC,sBAAsB,CAAC,EAAEC,IAAI,EAAEC,MAAM,EAAEC,UAAU,EAAQ;IAC7D,wDAAwD;IACxD,iCAAiC;IAEjC,MAAMC,UAAUX,sBAAsBS,QAAQG,IAAI,CAChD,CAACC,QAAUZ,iBAAiBY,UAAUA,MAAML,IAAI,KAAK;IAGvD,MAAMM,aAAaL,OAAOM,MAAM,CAAC,CAACC,QAAQH;QACxC,IAAI,CAACV,0BAA0BU,UAAU,CAACA,MAAMI,MAAM,EAAE;YACtD,MAAMC,iBAAiBb,iBAAiB;gBACtCK;YACF,EAAE,CAACG,MAAMM,IAAI,CAAC;YAEd,IAAID,gBAAgB;gBAClB,MAAME,cAAcF,eAAeL;gBAEnC,IAAIX,kBAAkBW,UAAUA,MAAMM,IAAI,KAAK,QAAQ;oBACrD,OAAO;wBACL,GAAGH,MAAM;wBACT,GAAGI,YAAYL,MAAM,CACnB,CAACM,WAAWC,WAAc,CAAA;gCACxB,GAAGD,SAAS;gCACZ,CAACjB,WAAWkB,SAASC,GAAG,EAAE,EAAED,SAASH,IAAI;4BAC3C,CAAA,GACA,CAAC,EACF;oBACH;gBACF;gBAEA,OAAO;oBACL,GAAGH,MAAM;oBACT,CAACZ,WAAWS,MAAML,IAAI,EAAE,EAAEY;gBAC5B;YACF;QACF;QAEA,OAAOJ;IACT,GAAG,CAAC;IAEJ,IAAI,CAACL,SAAS;QACZG,WAAWU,EAAE,GAAG;YACdL,MAAMb,cAAc;gBAAEE,MAAM;gBAAMW,MAAM;YAAO,GAAyBT;QAC1E;IACF;IAEA,MAAMe,YAAYrB,WAAWI;IAE7B,MAAMkB,kBAAkB;QACtBC,KAAK;YACHR,MAAM,IAAIpB,YACR,IAAID,uBAAuB;gBACzBU,MAAM,CAAC,EAAEiB,UAAU,UAAU,CAAC;gBAC9BhB,QAAQ,IAAO,CAAA;wBACb,GAAGK,UAAU;wBACb,GAAGY,eAAe;oBACpB,CAAA;YACF;QAEJ;QACAE,IAAI;YACFT,MAAM,IAAIpB,YACR,IAAID,uBAAuB;gBACzBU,MAAM,CAAC,EAAEiB,UAAU,SAAS,CAAC;gBAC7BhB,QAAQ,IAAO,CAAA;wBACb,GAAGK,UAAU;wBACb,GAAGY,eAAe;oBACpB,CAAA;YACF;QAEJ;IACF;IAEA,OAAO,IAAI5B,uBAAuB;QAChCU,MAAM,CAAC,EAAEiB,UAAU,MAAM,CAAC;QAC1BhB,QAAQ;YACN,GAAGK,UAAU;YACb,GAAGY,eAAe;QACpB;IACF;AACF;AAEA,eAAenB,oBAAmB"}
@@ -1 +1 @@
1
- {"version":3,"file":"fieldToWhereInputSchemaMap.d.ts","sourceRoot":"","sources":["../../src/schema/fieldToWhereInputSchemaMap.ts"],"names":[],"mappings":"AA8BA,KAAK,IAAI,GAAG;IACV,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,QAAA,MAAM,gBAAgB,oCAAqC,IAAI,KAAG,GAoGhE,CAAA;AAEF,eAAe,gBAAgB,CAAA"}
1
+ {"version":3,"file":"fieldToWhereInputSchemaMap.d.ts","sourceRoot":"","sources":["../../src/schema/fieldToWhereInputSchemaMap.ts"],"names":[],"mappings":"AA8BA,KAAK,IAAI,GAAG;IACV,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,QAAA,MAAM,gBAAgB,oCAAqC,IAAI,KAAG,GA+HhE,CAAA;AAEF,eAAe,gBAAgB,CAAA"}
@@ -94,9 +94,34 @@ const fieldToSchemaMap = ({ nestedFieldName, parentName })=>({
94
94
  textarea: (field)=>({
95
95
  type: withOperators(field, parentName)
96
96
  }),
97
- upload: (field)=>({
97
+ upload: (field)=>{
98
+ if (Array.isArray(field.relationTo)) {
99
+ return {
100
+ type: new GraphQLInputObjectType({
101
+ name: `${combineParentName(parentName, field.name)}_Relation`,
102
+ fields: {
103
+ relationTo: {
104
+ type: new GraphQLEnumType({
105
+ name: `${combineParentName(parentName, field.name)}_Relation_RelationTo`,
106
+ values: field.relationTo.reduce((values, relation)=>({
107
+ ...values,
108
+ [formatName(relation)]: {
109
+ value: relation
110
+ }
111
+ }), {})
112
+ })
113
+ },
114
+ value: {
115
+ type: GraphQLJSON
116
+ }
117
+ }
118
+ })
119
+ };
120
+ }
121
+ return {
98
122
  type: withOperators(field, parentName)
99
- })
123
+ };
124
+ }
100
125
  });
101
126
  export default fieldToSchemaMap;
102
127