@payloadcms/graphql 4.0.0-internal.d28e9fb → 4.0.0-internal.d3909a9

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 (77) hide show
  1. package/LICENSE.md +1 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +3 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/packages/graphql-query-complexity/QueryComplexity.d.ts.map +1 -1
  6. package/dist/resolvers/collections/find.d.ts.map +1 -1
  7. package/dist/resolvers/collections/find.js +1 -1
  8. package/dist/resolvers/collections/find.js.map +1 -1
  9. package/dist/resolvers/collections/findByID.d.ts.map +1 -1
  10. package/dist/resolvers/collections/findByID.js +1 -1
  11. package/dist/resolvers/collections/findByID.js.map +1 -1
  12. package/dist/resolvers/collections/findVersionByID.d.ts.map +1 -1
  13. package/dist/resolvers/collections/findVersionByID.js +1 -1
  14. package/dist/resolvers/collections/findVersionByID.js.map +1 -1
  15. package/dist/resolvers/collections/findVersions.d.ts.map +1 -1
  16. package/dist/resolvers/collections/findVersions.js +1 -1
  17. package/dist/resolvers/collections/findVersions.js.map +1 -1
  18. package/dist/resolvers/collections/renameFile.d.ts +8 -0
  19. package/dist/resolvers/collections/renameFile.d.ts.map +1 -0
  20. package/dist/resolvers/collections/renameFile.js +10 -0
  21. package/dist/resolvers/collections/renameFile.js.map +1 -0
  22. package/dist/resolvers/collections/validate.d.ts +16 -0
  23. package/dist/resolvers/collections/validate.d.ts.map +1 -0
  24. package/dist/resolvers/collections/validate.js +33 -0
  25. package/dist/resolvers/collections/validate.js.map +1 -0
  26. package/dist/resolvers/globals/findOne.d.ts.map +1 -1
  27. package/dist/resolvers/globals/findOne.js +1 -1
  28. package/dist/resolvers/globals/findOne.js.map +1 -1
  29. package/dist/resolvers/globals/findVersionByID.d.ts.map +1 -1
  30. package/dist/resolvers/globals/findVersionByID.js +1 -1
  31. package/dist/resolvers/globals/findVersionByID.js.map +1 -1
  32. package/dist/resolvers/globals/findVersions.d.ts.map +1 -1
  33. package/dist/resolvers/globals/findVersions.js +1 -1
  34. package/dist/resolvers/globals/findVersions.js.map +1 -1
  35. package/dist/resolvers/globals/validate.d.ts +15 -0
  36. package/dist/resolvers/globals/validate.d.ts.map +1 -0
  37. package/dist/resolvers/globals/validate.js +21 -0
  38. package/dist/resolvers/globals/validate.js.map +1 -0
  39. package/dist/schema/buildMutationInputType.d.ts.map +1 -1
  40. package/dist/schema/buildMutationInputType.js +16 -2
  41. package/dist/schema/buildMutationInputType.js.map +1 -1
  42. package/dist/schema/buildPoliciesType.d.ts +1 -1
  43. package/dist/schema/buildPoliciesType.d.ts.map +1 -1
  44. package/dist/schema/buildPoliciesType.js +6 -3
  45. package/dist/schema/buildPoliciesType.js.map +1 -1
  46. package/dist/schema/buildValidationResultType.d.ts +3 -0
  47. package/dist/schema/buildValidationResultType.d.ts.map +1 -0
  48. package/dist/schema/buildValidationResultType.js +30 -0
  49. package/dist/schema/buildValidationResultType.js.map +1 -0
  50. package/dist/schema/buildWhereInputType.js.map +1 -1
  51. package/dist/schema/fieldToSchemaMap.d.ts +4 -1
  52. package/dist/schema/fieldToSchemaMap.d.ts.map +1 -1
  53. package/dist/schema/fieldToSchemaMap.js +16 -4
  54. package/dist/schema/fieldToSchemaMap.js.map +1 -1
  55. package/dist/schema/initCollections.d.ts.map +1 -1
  56. package/dist/schema/initCollections.js +59 -6
  57. package/dist/schema/initCollections.js.map +1 -1
  58. package/dist/schema/initGlobals.d.ts.map +1 -1
  59. package/dist/schema/initGlobals.js +29 -0
  60. package/dist/schema/initGlobals.js.map +1 -1
  61. package/dist/schema/operators.d.ts.map +1 -1
  62. package/dist/schema/withNullableType.d.ts.map +1 -1
  63. package/dist/schema/withNullableType.js +5 -1
  64. package/dist/schema/withNullableType.js.map +1 -1
  65. package/dist/schema/withOperators.d.ts +6 -0
  66. package/dist/schema/withOperators.d.ts.map +1 -1
  67. package/dist/schema/withOperators.js +15 -0
  68. package/dist/schema/withOperators.js.map +1 -1
  69. package/dist/utilities/select.d.ts +4 -3
  70. package/dist/utilities/select.d.ts.map +1 -1
  71. package/dist/utilities/select.js +83 -45
  72. package/dist/utilities/select.js.map +1 -1
  73. package/package.json +20 -23
  74. package/dist/utilities/formatName.spec.js +0 -57
  75. package/dist/utilities/formatName.spec.js.map +0 -1
  76. package/dist/utilities/formatUtcOffset.spec.js +0 -142
  77. package/dist/utilities/formatUtcOffset.spec.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/schema/buildMutationInputType.ts"],"sourcesContent":["import type { GraphQLInputFieldConfig, GraphQLScalarType, GraphQLType } from 'graphql'\nimport type {\n ArrayField,\n BlocksField,\n CheckboxField,\n CodeField,\n CollapsibleField,\n DateField,\n EmailField,\n Field,\n GraphQLInfo,\n GroupField,\n JSONField,\n NumberField,\n PointField,\n RadioField,\n RelationshipField,\n RichTextField,\n RowField,\n SanitizedCollectionConfig,\n SanitizedConfig,\n SelectField,\n TabsField,\n TextareaField,\n TextField,\n UploadField,\n} from 'payload'\n\nimport {\n GraphQLBoolean,\n GraphQLEnumType,\n GraphQLFloat,\n GraphQLInputObjectType,\n GraphQLInt,\n GraphQLList,\n GraphQLNonNull,\n GraphQLString,\n} from 'graphql'\nimport { flattenTopLevelFields, toWords } from 'payload'\nimport { fieldAffectsData, optionIsObject, tabHasName } from 'payload/shared'\n\nimport { GraphQLJSON } from '../packages/graphql-type-json/index.js'\nimport { combineParentName } from '../utilities/combineParentName.js'\nimport { formatName } from '../utilities/formatName.js'\nimport { groupOrTabHasRequiredSubfield } from '../utilities/groupOrTabHasRequiredSubfield.js'\nimport { withNullableType } from './withNullableType.js'\n\nconst idFieldTypes = {\n number: GraphQLInt,\n text: GraphQLString,\n}\n\nexport const getCollectionIDType = (\n type: keyof typeof idFieldTypes,\n collection: SanitizedCollectionConfig,\n): GraphQLScalarType => {\n const idField = flattenTopLevelFields(collection.fields).find(\n (field) => fieldAffectsData(field) && field.name === 'id',\n )\n\n if (!idField) {\n return idFieldTypes[type]\n }\n\n return idFieldTypes[idField.type]\n}\n\nexport type InputObjectTypeConfig = {\n [path: string]: GraphQLInputFieldConfig\n}\n\ntype BuildMutationInputTypeArgs = {\n config: SanitizedConfig\n fields: Field[]\n forceNullable?: boolean\n graphqlResult: GraphQLInfo\n name: string\n parentIsLocalized: boolean\n parentName: string\n}\n\nexport function buildMutationInputType({\n name,\n config,\n fields,\n forceNullable = false,\n graphqlResult,\n parentIsLocalized,\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 parentIsLocalized: parentIsLocalized || field.localized,\n parentName: fullName,\n })\n\n if (!type) {\n return inputObjectTypeConfig\n }\n\n type = new GraphQLList(withNullableType({ type, field, forceNullable, parentIsLocalized }))\n return {\n ...inputObjectTypeConfig,\n [formatName(field.name)]: { type },\n }\n },\n blocks: (inputObjectTypeConfig: InputObjectTypeConfig, field: BlocksField) => ({\n ...inputObjectTypeConfig,\n [formatName(field.name)]: { type: GraphQLJSON },\n }),\n checkbox: (inputObjectTypeConfig: InputObjectTypeConfig, field: CheckboxField) => ({\n ...inputObjectTypeConfig,\n [formatName(field.name)]: { type: GraphQLBoolean },\n }),\n code: (inputObjectTypeConfig: InputObjectTypeConfig, field: CodeField) => ({\n ...inputObjectTypeConfig,\n [formatName(field.name)]: {\n type: withNullableType({ type: GraphQLString, field, forceNullable, parentIsLocalized }),\n },\n }),\n collapsible: (inputObjectTypeConfig: InputObjectTypeConfig, field: CollapsibleField) =>\n field.fields.reduce((acc, subField: CollapsibleField) => {\n const addSubField = fieldToSchemaMap[subField.type]\n if (addSubField) {\n return addSubField(acc, subField)\n }\n return acc\n }, inputObjectTypeConfig),\n date: (inputObjectTypeConfig: InputObjectTypeConfig, field: DateField) => ({\n ...inputObjectTypeConfig,\n [formatName(field.name)]: {\n type: withNullableType({ type: GraphQLString, field, forceNullable, parentIsLocalized }),\n },\n }),\n email: (inputObjectTypeConfig: InputObjectTypeConfig, field: EmailField) => ({\n ...inputObjectTypeConfig,\n [formatName(field.name)]: {\n type: withNullableType({ type: GraphQLString, field, forceNullable, parentIsLocalized }),\n },\n }),\n group: (inputObjectTypeConfig: InputObjectTypeConfig, field: GroupField) => {\n if (fieldAffectsData(field)) {\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 parentIsLocalized: parentIsLocalized || field.localized,\n parentName: fullName,\n })\n\n if (!type) {\n return inputObjectTypeConfig\n }\n\n if (requiresAtLeastOneField) {\n type = new GraphQLNonNull(type)\n }\n return {\n ...inputObjectTypeConfig,\n [formatName(field.name)]: { type },\n }\n } else {\n return field.fields.reduce((acc, subField: CollapsibleField) => {\n const addSubField = fieldToSchemaMap[subField.type]\n if (addSubField) {\n return addSubField(acc, subField)\n }\n return acc\n }, inputObjectTypeConfig)\n }\n },\n json: (inputObjectTypeConfig: InputObjectTypeConfig, field: JSONField) => ({\n ...inputObjectTypeConfig,\n [formatName(field.name)]: {\n type: withNullableType({ type: GraphQLJSON, field, forceNullable, parentIsLocalized }),\n },\n }),\n number: (inputObjectTypeConfig: InputObjectTypeConfig, field: NumberField) => {\n const type = field.name === 'id' ? GraphQLInt : GraphQLFloat\n return {\n ...inputObjectTypeConfig,\n [formatName(field.name)]: {\n type: withNullableType({\n type: field.hasMany === true ? new GraphQLList(type) : type,\n field,\n forceNullable,\n parentIsLocalized,\n }),\n },\n }\n },\n point: (inputObjectTypeConfig: InputObjectTypeConfig, field: PointField) => ({\n ...inputObjectTypeConfig,\n [formatName(field.name)]: {\n type: withNullableType({\n type: new GraphQLList(GraphQLFloat),\n field,\n forceNullable,\n parentIsLocalized,\n }),\n },\n }),\n radio: (inputObjectTypeConfig: InputObjectTypeConfig, field: RadioField) => ({\n ...inputObjectTypeConfig,\n [formatName(field.name)]: {\n type: withNullableType({ type: GraphQLString, field, forceNullable, parentIsLocalized }),\n },\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 [formatName(field.name)]: { type: field.hasMany ? new GraphQLList(type) : type },\n }\n },\n richText: (inputObjectTypeConfig: InputObjectTypeConfig, field: RichTextField) => ({\n ...inputObjectTypeConfig,\n [formatName(field.name)]: {\n type: withNullableType({ type: GraphQLJSON, field, forceNullable, parentIsLocalized }),\n },\n }),\n row: (inputObjectTypeConfig: InputObjectTypeConfig, field: RowField) =>\n field.fields.reduce((acc, subField: Field) => {\n const addSubField = fieldToSchemaMap[subField.type]\n if (addSubField) {\n return addSubField(acc, subField)\n }\n return acc\n }, inputObjectTypeConfig),\n select: (inputObjectTypeConfig: InputObjectTypeConfig, field: SelectField) => {\n const formattedName = `${combineParentName(parentName, field.name)}_MutationInput`\n let type: GraphQLType = new GraphQLEnumType({\n name: formattedName,\n values: field.options.reduce((values, option) => {\n if (optionIsObject(option)) {\n return {\n ...values,\n [formatName(option.value)]: {\n value: option.value,\n },\n }\n }\n\n return {\n ...values,\n [formatName(option)]: {\n value: option,\n },\n }\n }, {}),\n })\n\n type = field.hasMany ? new GraphQLList(type) : type\n type = withNullableType({ type, field, forceNullable, parentIsLocalized })\n\n return {\n ...inputObjectTypeConfig,\n [formatName(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 parentIsLocalized: parentIsLocalized || tab.localized,\n parentName: fullName,\n })\n\n if (!type) {\n return acc\n }\n\n if (requiresAtLeastOneField) {\n type = new GraphQLNonNull(type)\n }\n return {\n ...acc,\n [tab.name]: { type },\n }\n }\n\n return {\n ...acc,\n ...tab.fields.reduce((subFieldSchema, subField) => {\n const addSubField = fieldToSchemaMap[subField.type]\n if (addSubField) {\n return addSubField(subFieldSchema, subField)\n }\n return subFieldSchema\n }, acc),\n }\n }, inputObjectTypeConfig)\n },\n text: (inputObjectTypeConfig: InputObjectTypeConfig, field: TextField) => ({\n ...inputObjectTypeConfig,\n [formatName(field.name)]: {\n type: withNullableType({\n type: field.hasMany === true ? new GraphQLList(GraphQLString) : GraphQLString,\n field,\n forceNullable,\n parentIsLocalized,\n }),\n },\n }),\n textarea: (inputObjectTypeConfig: InputObjectTypeConfig, field: TextareaField) => ({\n ...inputObjectTypeConfig,\n [formatName(field.name)]: {\n type: withNullableType({ type: GraphQLString, field, forceNullable, parentIsLocalized }),\n },\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 [formatName(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","parentIsLocalized","parentName","fieldToSchemaMap","array","inputObjectTypeConfig","fullName","localized","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 BlocksField,\n CheckboxField,\n CodeField,\n CollapsibleField,\n DateField,\n EmailField,\n Field,\n GraphQLInfo,\n GroupField,\n JSONField,\n NumberField,\n PointField,\n RadioField,\n RelationshipField,\n RichTextField,\n RowField,\n SanitizedCollectionConfig,\n SanitizedConfig,\n SelectField,\n SlugField,\n TabsField,\n TextareaField,\n TextField,\n UploadField,\n} from 'payload'\n\nimport {\n GraphQLBoolean,\n GraphQLEnumType,\n GraphQLFloat,\n GraphQLInputObjectType,\n GraphQLInt,\n GraphQLList,\n GraphQLNonNull,\n GraphQLString,\n} from 'graphql'\nimport { flattenTopLevelFields, toWords } from 'payload'\nimport { fieldAffectsData, optionIsObject, tabHasName } from 'payload/shared'\n\nimport { GraphQLJSON } from '../packages/graphql-type-json/index.js'\nimport { combineParentName } from '../utilities/combineParentName.js'\nimport { formatName } from '../utilities/formatName.js'\nimport { groupOrTabHasRequiredSubfield } from '../utilities/groupOrTabHasRequiredSubfield.js'\nimport { withNullableType } from './withNullableType.js'\n\nconst idFieldTypes = {\n number: GraphQLInt,\n text: GraphQLString,\n}\n\nexport const getCollectionIDType = (\n type: keyof typeof idFieldTypes,\n collection: SanitizedCollectionConfig,\n): GraphQLScalarType => {\n const idField = flattenTopLevelFields(collection.fields).find(\n (field) => fieldAffectsData(field) && field.name === 'id',\n )\n\n if (!idField) {\n return idFieldTypes[type]\n }\n\n return idFieldTypes[idField.type]\n}\n\nexport type InputObjectTypeConfig = {\n [path: string]: GraphQLInputFieldConfig\n}\n\ntype BuildMutationInputTypeArgs = {\n config: SanitizedConfig\n fields: Field[]\n forceNullable?: boolean\n graphqlResult: GraphQLInfo\n name: string\n parentIsLocalized: boolean\n parentName: string\n}\n\nexport function buildMutationInputType({\n name,\n config,\n fields,\n forceNullable = false,\n graphqlResult,\n parentIsLocalized,\n parentName,\n}: BuildMutationInputTypeArgs): GraphQLInputObjectType | null {\n const fieldToSchemaMap = {\n slug: (inputObjectTypeConfig: InputObjectTypeConfig, field: SlugField) => ({\n ...inputObjectTypeConfig,\n [formatName(field.name)]: {\n type: withNullableType({ type: GraphQLString, field, forceNullable, parentIsLocalized }),\n },\n }),\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 forceNullable,\n graphqlResult,\n parentIsLocalized: parentIsLocalized || field.localized,\n parentName: fullName,\n })\n\n if (!type) {\n return inputObjectTypeConfig\n }\n\n type = new GraphQLList(withNullableType({ type, field, forceNullable, parentIsLocalized }))\n return {\n ...inputObjectTypeConfig,\n [formatName(field.name)]: { type },\n }\n },\n blocks: (inputObjectTypeConfig: InputObjectTypeConfig, field: BlocksField) => ({\n ...inputObjectTypeConfig,\n [formatName(field.name)]: { type: GraphQLJSON },\n }),\n checkbox: (inputObjectTypeConfig: InputObjectTypeConfig, field: CheckboxField) => ({\n ...inputObjectTypeConfig,\n [formatName(field.name)]: { type: GraphQLBoolean },\n }),\n code: (inputObjectTypeConfig: InputObjectTypeConfig, field: CodeField) => ({\n ...inputObjectTypeConfig,\n [formatName(field.name)]: {\n type: withNullableType({ type: GraphQLString, field, forceNullable, parentIsLocalized }),\n },\n }),\n collapsible: (inputObjectTypeConfig: InputObjectTypeConfig, field: CollapsibleField) =>\n field.fields.reduce((acc, subField: CollapsibleField) => {\n const addSubField = fieldToSchemaMap[subField.type]\n if (addSubField) {\n return addSubField(acc, subField)\n }\n return acc\n }, inputObjectTypeConfig),\n date: (inputObjectTypeConfig: InputObjectTypeConfig, field: DateField) => ({\n ...inputObjectTypeConfig,\n [formatName(field.name)]: {\n type: withNullableType({ type: GraphQLString, field, forceNullable, parentIsLocalized }),\n },\n }),\n email: (inputObjectTypeConfig: InputObjectTypeConfig, field: EmailField) => ({\n ...inputObjectTypeConfig,\n [formatName(field.name)]: {\n type: withNullableType({ type: GraphQLString, field, forceNullable, parentIsLocalized }),\n },\n }),\n group: (inputObjectTypeConfig: InputObjectTypeConfig, field: GroupField) => {\n if (fieldAffectsData(field)) {\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 forceNullable,\n graphqlResult,\n parentIsLocalized: parentIsLocalized || field.localized,\n parentName: fullName,\n })\n\n if (!type) {\n return inputObjectTypeConfig\n }\n\n if (requiresAtLeastOneField && !forceNullable) {\n type = new GraphQLNonNull(type)\n }\n return {\n ...inputObjectTypeConfig,\n [formatName(field.name)]: { type },\n }\n } else {\n return field.fields.reduce((acc, subField: CollapsibleField) => {\n const addSubField = fieldToSchemaMap[subField.type]\n if (addSubField) {\n return addSubField(acc, subField)\n }\n return acc\n }, inputObjectTypeConfig)\n }\n },\n json: (inputObjectTypeConfig: InputObjectTypeConfig, field: JSONField) => ({\n ...inputObjectTypeConfig,\n [formatName(field.name)]: {\n type: withNullableType({ type: GraphQLJSON, field, forceNullable, parentIsLocalized }),\n },\n }),\n number: (inputObjectTypeConfig: InputObjectTypeConfig, field: NumberField) => {\n const type = field.name === 'id' ? GraphQLInt : GraphQLFloat\n return {\n ...inputObjectTypeConfig,\n [formatName(field.name)]: {\n type: withNullableType({\n type: field.hasMany === true ? new GraphQLList(type) : type,\n field,\n forceNullable,\n parentIsLocalized,\n }),\n },\n }\n },\n point: (inputObjectTypeConfig: InputObjectTypeConfig, field: PointField) => ({\n ...inputObjectTypeConfig,\n [formatName(field.name)]: {\n type: withNullableType({\n type: new GraphQLList(GraphQLFloat),\n field,\n forceNullable,\n parentIsLocalized,\n }),\n },\n }),\n radio: (inputObjectTypeConfig: InputObjectTypeConfig, field: RadioField) => ({\n ...inputObjectTypeConfig,\n [formatName(field.name)]: {\n type: withNullableType({ type: GraphQLString, field, forceNullable, parentIsLocalized }),\n },\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 [formatName(field.name)]: { type: field.hasMany ? new GraphQLList(type) : type },\n }\n },\n richText: (inputObjectTypeConfig: InputObjectTypeConfig, field: RichTextField) => ({\n ...inputObjectTypeConfig,\n [formatName(field.name)]: {\n type: withNullableType({ type: GraphQLJSON, field, forceNullable, parentIsLocalized }),\n },\n }),\n row: (inputObjectTypeConfig: InputObjectTypeConfig, field: RowField) =>\n field.fields.reduce((acc, subField: Field) => {\n const addSubField = fieldToSchemaMap[subField.type]\n if (addSubField) {\n return addSubField(acc, subField)\n }\n return acc\n }, inputObjectTypeConfig),\n select: (inputObjectTypeConfig: InputObjectTypeConfig, field: SelectField) => {\n const formattedName = `${combineParentName(parentName, field.name)}_MutationInput`\n let type: GraphQLType = new GraphQLEnumType({\n name: formattedName,\n values: field.options.reduce((values, option) => {\n if (optionIsObject(option)) {\n return {\n ...values,\n [formatName(option.value)]: {\n value: option.value,\n },\n }\n }\n\n return {\n ...values,\n [formatName(option)]: {\n value: option,\n },\n }\n }, {}),\n })\n\n type = field.hasMany ? new GraphQLList(type) : type\n type = withNullableType({ type, field, forceNullable, parentIsLocalized })\n\n return {\n ...inputObjectTypeConfig,\n [formatName(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 forceNullable,\n graphqlResult,\n parentIsLocalized: parentIsLocalized || tab.localized,\n parentName: fullName,\n })\n\n if (!type) {\n return acc\n }\n\n if (requiresAtLeastOneField && !forceNullable) {\n type = new GraphQLNonNull(type)\n }\n return {\n ...acc,\n [tab.name]: { type },\n }\n }\n\n return {\n ...acc,\n ...tab.fields.reduce((subFieldSchema, subField) => {\n const addSubField = fieldToSchemaMap[subField.type]\n if (addSubField) {\n return addSubField(subFieldSchema, subField)\n }\n return subFieldSchema\n }, acc),\n }\n }, inputObjectTypeConfig)\n },\n text: (inputObjectTypeConfig: InputObjectTypeConfig, field: TextField) => ({\n ...inputObjectTypeConfig,\n [formatName(field.name)]: {\n type: withNullableType({\n type: field.hasMany === true ? new GraphQLList(GraphQLString) : GraphQLString,\n field,\n forceNullable,\n parentIsLocalized,\n }),\n },\n }),\n textarea: (inputObjectTypeConfig: InputObjectTypeConfig, field: TextareaField) => ({\n ...inputObjectTypeConfig,\n [formatName(field.name)]: {\n type: withNullableType({ type: GraphQLString, field, forceNullable, parentIsLocalized }),\n },\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 [formatName(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","parentIsLocalized","parentName","fieldToSchemaMap","slug","inputObjectTypeConfig","array","fullName","localized","blocks","checkbox","code","collapsible","reduce","acc","subField","addSubField","date","email","group","requiresAtLeastOneField","json","hasMany","point","radio","relationship","relationTo","Array","isArray","values","option","value","db","defaultIDType","collections","richText","row","select","formattedName","options","tabs","tab","subFieldSchema","textarea","upload","fieldName","fieldSchemas","fieldSchema","schema","Object","keys","length"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { CollectionConfig, Field, GlobalConfig, SanitizedConfig } from 'payload';
2
2
  import { GraphQLObjectType } from 'graphql';
3
- type OperationType = 'create' | 'delete' | 'read' | 'readVersions' | 'unlock' | 'update';
3
+ type OperationType = 'create' | 'delete' | 'read' | 'readVersions' | 'unlock' | 'update' | 'validate';
4
4
  type AccessScopes = 'docAccess' | undefined;
5
5
  type BuildEntityPolicy = {
6
6
  entityFields: Field[];
@@ -1 +1 @@
1
- {"version":3,"file":"buildPoliciesType.d.ts","sourceRoot":"","sources":["../../src/schema/buildPoliciesType.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,KAAK,EACL,YAAY,EAEZ,eAAe,EAEhB,MAAM,SAAS,CAAA;AAEhB,OAAO,EAAkC,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAM3E,KAAK,aAAa,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,cAAc,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAExF,KAAK,YAAY,GAAG,WAAW,GAAG,SAAS,CAAA;AA0F3C,KAAK,iBAAiB,GAAG;IACvB,YAAY,EAAE,KAAK,EAAE,CAAA;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,aAAa,EAAE,CAAA;IAC3B,KAAK,EAAE,YAAY,CAAA;CACpB,CAAA;AACD,eAAO,MAAM,iBAAiB,SAAU,iBAAiB;;;;CA4BxD,CAAA;AAED,KAAK,eAAe,GAAG;IACrB,KAAK,CAAC,EAAE,YAAY,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,GAAG,CACA;IACE,MAAM,EAAE,gBAAgB,CAAA;IACxB,IAAI,EAAE,YAAY,CAAA;CACnB,GACD;IACE,MAAM,EAAE,YAAY,CAAA;IACpB,IAAI,EAAE,QAAQ,CAAA;CACf,CACJ,CAAA;AACD,wBAAgB,eAAe,CAAC,IAAI,EAAE,eAAe,GAAG,iBAAiB,CAyDxE;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,iBAAiB,CAyC5E"}
1
+ {"version":3,"file":"buildPoliciesType.d.ts","sourceRoot":"","sources":["../../src/schema/buildPoliciesType.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,KAAK,EACL,YAAY,EAEZ,eAAe,EAEhB,MAAM,SAAS,CAAA;AAEhB,OAAO,EAAkC,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAM3E,KAAK,aAAa,GACd,QAAQ,GACR,QAAQ,GACR,MAAM,GACN,cAAc,GACd,QAAQ,GACR,QAAQ,GACR,UAAU,CAAA;AAEd,KAAK,YAAY,GAAG,WAAW,GAAG,SAAS,CAAA;AA6F3C,KAAK,iBAAiB,GAAG;IACvB,YAAY,EAAE,KAAK,EAAE,CAAA;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,aAAa,EAAE,CAAA;IAC3B,KAAK,EAAE,YAAY,CAAA;CACpB,CAAA;AACD,eAAO,MAAM,iBAAiB,SAAU,iBAAiB;;QAMnD,IAAI;;CAsBT,CAAA;AAED,KAAK,eAAe,GAAG;IACrB,KAAK,CAAC,EAAE,YAAY,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,GAAG,CACA;IACE,MAAM,EAAE,gBAAgB,CAAA;IACxB,IAAI,EAAE,YAAY,CAAA;CACnB,GACD;IACE,MAAM,EAAE,YAAY,CAAA;IACpB,IAAI,EAAE,QAAQ,CAAA;CACf,CACJ,CAAA;AACD,wBAAgB,eAAe,CAAC,IAAI,EAAE,eAAe,GAAG,iBAAiB,CAyDxE;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,iBAAiB,CAyC5E"}
@@ -11,7 +11,8 @@ const buildFields = (label, fieldsToBuild)=>fieldsToBuild.reduce((builtFields, f
11
11
  'create',
12
12
  'read',
13
13
  'update',
14
- 'delete'
14
+ 'delete',
15
+ 'validate'
15
16
  ].reduce((operations, operation)=>{
16
17
  const capitalizedOperation = operation.charAt(0).toUpperCase() + operation.slice(1);
17
18
  return {
@@ -119,7 +120,8 @@ export function buildPolicyType(args) {
119
120
  'create',
120
121
  'read',
121
122
  'update',
122
- 'delete'
123
+ 'delete',
124
+ 'validate'
123
125
  ];
124
126
  if (entity.auth && typeof entity.auth === 'object' && typeof entity.auth.maxLoginAttempts !== 'undefined' && entity.auth.maxLoginAttempts !== 0) {
125
127
  operations.push('unlock');
@@ -141,7 +143,8 @@ export function buildPolicyType(args) {
141
143
  // else create global type
142
144
  operations = [
143
145
  'read',
144
- 'update'
146
+ 'update',
147
+ 'validate'
145
148
  ];
146
149
  if (entity.versions) {
147
150
  operations.push('readVersions');
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/schema/buildPoliciesType.ts"],"sourcesContent":["import type {\n CollectionConfig,\n Field,\n GlobalConfig,\n SanitizedCollectionConfig,\n SanitizedConfig,\n SanitizedGlobalConfig,\n} from 'payload'\n\nimport { GraphQLBoolean, GraphQLNonNull, GraphQLObjectType } from 'graphql'\nimport { toWords } from 'payload'\n\nimport { GraphQLJSONObject } from '../packages/graphql-type-json/index.js'\nimport { formatName } from '../utilities/formatName.js'\n\ntype OperationType = 'create' | 'delete' | 'read' | 'readVersions' | 'unlock' | 'update'\n\ntype AccessScopes = 'docAccess' | undefined\n\ntype ObjectTypeFields = {\n [key in 'fields' | OperationType]?: { type: GraphQLObjectType }\n}\n\nconst buildFields = (label, fieldsToBuild) =>\n fieldsToBuild.reduce((builtFields, field) => {\n const includeField = !field.hidden && field.type !== 'ui'\n if (includeField) {\n if (field.name) {\n const fieldName = formatName(field.name)\n\n const objectTypeFields: ObjectTypeFields = ['create', 'read', 'update', 'delete'].reduce(\n (operations, operation) => {\n const capitalizedOperation = operation.charAt(0).toUpperCase() + operation.slice(1)\n\n return {\n ...operations,\n [operation]: {\n type: new GraphQLObjectType({\n name: `${label}_${fieldName}_${capitalizedOperation}`,\n fields: {\n permission: {\n type: new GraphQLNonNull(GraphQLBoolean),\n },\n },\n }),\n },\n }\n },\n {},\n )\n\n if (field.fields) {\n objectTypeFields.fields = {\n type: new GraphQLObjectType({\n name: `${label}_${fieldName}_Fields`,\n fields: buildFields(`${label}_${fieldName}`, field.fields),\n }),\n }\n }\n\n return {\n ...builtFields,\n [formatName(field.name)]: {\n type: new GraphQLObjectType({\n name: `${label}_${fieldName}`,\n fields: objectTypeFields,\n }),\n },\n }\n }\n\n if (!field.name && field.fields && field.fields.length) {\n const subFields = buildFields(label, field.fields)\n\n return {\n ...builtFields,\n ...subFields,\n }\n }\n\n if (field.type === 'tabs') {\n return field.tabs.reduce(\n (fieldsWithTabFields, tab) => {\n if ('name' in tab) {\n if (tab.fields.length) {\n const tabName = formatName(tab.name)\n fieldsWithTabFields[tabName] = {\n type: new GraphQLObjectType({\n name: `${label}_${tabName}`,\n fields: buildFields(`${label}_${tabName}`, tab.fields),\n }),\n }\n }\n return fieldsWithTabFields\n }\n return {\n ...fieldsWithTabFields,\n ...buildFields(label, tab.fields),\n }\n },\n { ...builtFields },\n )\n }\n }\n return builtFields\n }, {})\n\ntype BuildEntityPolicy = {\n entityFields: Field[]\n name: string\n operations: OperationType[]\n scope: AccessScopes\n}\nexport const buildEntityPolicy = (args: BuildEntityPolicy) => {\n const { name, entityFields, operations, scope } = args\n\n const fieldsTypeName = toWords(`${name}-${scope || ''}-Fields`, true)\n const fields = {\n fields: {\n type: new GraphQLObjectType({\n name: fieldsTypeName,\n fields: buildFields(fieldsTypeName, entityFields),\n }),\n },\n }\n\n operations.forEach((operation) => {\n const operationTypeName = toWords(`${name}-${operation}-${scope || 'Access'}`, true)\n\n fields[operation] = {\n type: new GraphQLObjectType({\n name: operationTypeName,\n fields: {\n permission: { type: new GraphQLNonNull(GraphQLBoolean) },\n where: { type: GraphQLJSONObject },\n },\n }),\n }\n })\n\n return fields\n}\n\ntype BuildPolicyType = {\n scope?: AccessScopes\n typeSuffix?: string\n} & (\n | {\n entity: CollectionConfig\n type: 'collection'\n }\n | {\n entity: GlobalConfig\n type: 'global'\n }\n)\nexport function buildPolicyType(args: BuildPolicyType): GraphQLObjectType {\n const { type, entity, scope, typeSuffix } = args\n const { slug, fields, graphQL, versions } = entity\n\n let operations = []\n\n if (graphQL === false) {\n return null\n }\n\n if (type === 'collection') {\n operations = ['create', 'read', 'update', 'delete']\n\n if (\n entity.auth &&\n typeof entity.auth === 'object' &&\n typeof entity.auth.maxLoginAttempts !== 'undefined' &&\n entity.auth.maxLoginAttempts !== 0\n ) {\n operations.push('unlock')\n }\n\n if (versions) {\n operations.push('readVersions')\n }\n\n const collectionTypeName = formatName(`${slug}${typeSuffix || ''}`)\n\n return new GraphQLObjectType({\n name: collectionTypeName,\n fields: buildEntityPolicy({\n name: slug,\n entityFields: fields,\n operations,\n scope,\n }),\n })\n }\n\n // else create global type\n operations = ['read', 'update']\n\n if (entity.versions) {\n operations.push('readVersions')\n }\n\n const globalTypeName = formatName(`${global?.graphQL?.name || slug}${typeSuffix || ''}`)\n\n return new GraphQLObjectType({\n name: globalTypeName,\n fields: buildEntityPolicy({\n name: entity.graphQL ? entity?.graphQL?.name || slug : slug,\n entityFields: entity.fields,\n operations,\n scope,\n }),\n })\n}\n\nexport function buildPoliciesType(config: SanitizedConfig): GraphQLObjectType {\n const fields = {\n canAccessAdmin: {\n type: new GraphQLNonNull(GraphQLBoolean),\n },\n }\n\n Object.values(config.collections).forEach((collection: SanitizedCollectionConfig) => {\n if (collection.graphQL === false) {\n return\n }\n const collectionPolicyType = buildPolicyType({\n type: 'collection',\n entity: collection,\n typeSuffix: 'Access',\n })\n\n fields[formatName(collection.slug)] = {\n type: collectionPolicyType,\n }\n })\n\n Object.values(config.globals).forEach((global: SanitizedGlobalConfig) => {\n if (global.graphQL === false) {\n return\n }\n const globalPolicyType = buildPolicyType({\n type: 'global',\n entity: global,\n typeSuffix: 'Access',\n })\n\n fields[formatName(global.slug)] = {\n type: globalPolicyType,\n }\n })\n\n return new GraphQLObjectType({\n name: 'Access',\n fields,\n })\n}\n"],"names":["GraphQLBoolean","GraphQLNonNull","GraphQLObjectType","toWords","GraphQLJSONObject","formatName","buildFields","label","fieldsToBuild","reduce","builtFields","field","includeField","hidden","type","name","fieldName","objectTypeFields","operations","operation","capitalizedOperation","charAt","toUpperCase","slice","fields","permission","length","subFields","tabs","fieldsWithTabFields","tab","tabName","buildEntityPolicy","args","entityFields","scope","fieldsTypeName","forEach","operationTypeName","where","buildPolicyType","entity","typeSuffix","slug","graphQL","versions","auth","maxLoginAttempts","push","collectionTypeName","globalTypeName","global","buildPoliciesType","config","canAccessAdmin","Object","values","collections","collection","collectionPolicyType","globals","globalPolicyType"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/schema/buildPoliciesType.ts"],"sourcesContent":["import type {\n CollectionConfig,\n Field,\n GlobalConfig,\n SanitizedCollectionConfig,\n SanitizedConfig,\n SanitizedGlobalConfig,\n} from 'payload'\n\nimport { GraphQLBoolean, GraphQLNonNull, GraphQLObjectType } from 'graphql'\nimport { toWords } from 'payload'\n\nimport { GraphQLJSONObject } from '../packages/graphql-type-json/index.js'\nimport { formatName } from '../utilities/formatName.js'\n\ntype OperationType =\n | 'create'\n | 'delete'\n | 'read'\n | 'readVersions'\n | 'unlock'\n | 'update'\n | 'validate'\n\ntype AccessScopes = 'docAccess' | undefined\n\ntype ObjectTypeFields = {\n [key in 'fields' | OperationType]?: { type: GraphQLObjectType }\n}\n\nconst buildFields = (label, fieldsToBuild) =>\n fieldsToBuild.reduce((builtFields, field) => {\n const includeField = !field.hidden && field.type !== 'ui'\n if (includeField) {\n if (field.name) {\n const fieldName = formatName(field.name)\n\n const objectTypeFields: ObjectTypeFields = [\n 'create',\n 'read',\n 'update',\n 'delete',\n 'validate',\n ].reduce((operations, operation) => {\n const capitalizedOperation = operation.charAt(0).toUpperCase() + operation.slice(1)\n\n return {\n ...operations,\n [operation]: {\n type: new GraphQLObjectType({\n name: `${label}_${fieldName}_${capitalizedOperation}`,\n fields: {\n permission: {\n type: new GraphQLNonNull(GraphQLBoolean),\n },\n },\n }),\n },\n }\n }, {})\n\n if (field.fields) {\n objectTypeFields.fields = {\n type: new GraphQLObjectType({\n name: `${label}_${fieldName}_Fields`,\n fields: buildFields(`${label}_${fieldName}`, field.fields),\n }),\n }\n }\n\n return {\n ...builtFields,\n [formatName(field.name)]: {\n type: new GraphQLObjectType({\n name: `${label}_${fieldName}`,\n fields: objectTypeFields,\n }),\n },\n }\n }\n\n if (!field.name && field.fields && field.fields.length) {\n const subFields = buildFields(label, field.fields)\n\n return {\n ...builtFields,\n ...subFields,\n }\n }\n\n if (field.type === 'tabs') {\n return field.tabs.reduce(\n (fieldsWithTabFields, tab) => {\n if ('name' in tab) {\n if (tab.fields.length) {\n const tabName = formatName(tab.name)\n fieldsWithTabFields[tabName] = {\n type: new GraphQLObjectType({\n name: `${label}_${tabName}`,\n fields: buildFields(`${label}_${tabName}`, tab.fields),\n }),\n }\n }\n return fieldsWithTabFields\n }\n return {\n ...fieldsWithTabFields,\n ...buildFields(label, tab.fields),\n }\n },\n { ...builtFields },\n )\n }\n }\n return builtFields\n }, {})\n\ntype BuildEntityPolicy = {\n entityFields: Field[]\n name: string\n operations: OperationType[]\n scope: AccessScopes\n}\nexport const buildEntityPolicy = (args: BuildEntityPolicy) => {\n const { name, entityFields, operations, scope } = args\n\n const fieldsTypeName = toWords(`${name}-${scope || ''}-Fields`, true)\n const fields = {\n fields: {\n type: new GraphQLObjectType({\n name: fieldsTypeName,\n fields: buildFields(fieldsTypeName, entityFields),\n }),\n },\n }\n\n operations.forEach((operation) => {\n const operationTypeName = toWords(`${name}-${operation}-${scope || 'Access'}`, true)\n\n fields[operation] = {\n type: new GraphQLObjectType({\n name: operationTypeName,\n fields: {\n permission: { type: new GraphQLNonNull(GraphQLBoolean) },\n where: { type: GraphQLJSONObject },\n },\n }),\n }\n })\n\n return fields\n}\n\ntype BuildPolicyType = {\n scope?: AccessScopes\n typeSuffix?: string\n} & (\n | {\n entity: CollectionConfig\n type: 'collection'\n }\n | {\n entity: GlobalConfig\n type: 'global'\n }\n)\nexport function buildPolicyType(args: BuildPolicyType): GraphQLObjectType {\n const { type, entity, scope, typeSuffix } = args\n const { slug, fields, graphQL, versions } = entity\n\n let operations = []\n\n if (graphQL === false) {\n return null\n }\n\n if (type === 'collection') {\n operations = ['create', 'read', 'update', 'delete', 'validate']\n\n if (\n entity.auth &&\n typeof entity.auth === 'object' &&\n typeof entity.auth.maxLoginAttempts !== 'undefined' &&\n entity.auth.maxLoginAttempts !== 0\n ) {\n operations.push('unlock')\n }\n\n if (versions) {\n operations.push('readVersions')\n }\n\n const collectionTypeName = formatName(`${slug}${typeSuffix || ''}`)\n\n return new GraphQLObjectType({\n name: collectionTypeName,\n fields: buildEntityPolicy({\n name: slug,\n entityFields: fields,\n operations,\n scope,\n }),\n })\n }\n\n // else create global type\n operations = ['read', 'update', 'validate']\n\n if (entity.versions) {\n operations.push('readVersions')\n }\n\n const globalTypeName = formatName(`${global?.graphQL?.name || slug}${typeSuffix || ''}`)\n\n return new GraphQLObjectType({\n name: globalTypeName,\n fields: buildEntityPolicy({\n name: entity.graphQL ? entity?.graphQL?.name || slug : slug,\n entityFields: entity.fields,\n operations,\n scope,\n }),\n })\n}\n\nexport function buildPoliciesType(config: SanitizedConfig): GraphQLObjectType {\n const fields = {\n canAccessAdmin: {\n type: new GraphQLNonNull(GraphQLBoolean),\n },\n }\n\n Object.values(config.collections).forEach((collection: SanitizedCollectionConfig) => {\n if (collection.graphQL === false) {\n return\n }\n const collectionPolicyType = buildPolicyType({\n type: 'collection',\n entity: collection,\n typeSuffix: 'Access',\n })\n\n fields[formatName(collection.slug)] = {\n type: collectionPolicyType,\n }\n })\n\n Object.values(config.globals).forEach((global: SanitizedGlobalConfig) => {\n if (global.graphQL === false) {\n return\n }\n const globalPolicyType = buildPolicyType({\n type: 'global',\n entity: global,\n typeSuffix: 'Access',\n })\n\n fields[formatName(global.slug)] = {\n type: globalPolicyType,\n }\n })\n\n return new GraphQLObjectType({\n name: 'Access',\n fields,\n })\n}\n"],"names":["GraphQLBoolean","GraphQLNonNull","GraphQLObjectType","toWords","GraphQLJSONObject","formatName","buildFields","label","fieldsToBuild","reduce","builtFields","field","includeField","hidden","type","name","fieldName","objectTypeFields","operations","operation","capitalizedOperation","charAt","toUpperCase","slice","fields","permission","length","subFields","tabs","fieldsWithTabFields","tab","tabName","buildEntityPolicy","args","entityFields","scope","fieldsTypeName","forEach","operationTypeName","where","buildPolicyType","entity","typeSuffix","slug","graphQL","versions","auth","maxLoginAttempts","push","collectionTypeName","globalTypeName","global","buildPoliciesType","config","canAccessAdmin","Object","values","collections","collection","collectionPolicyType","globals","globalPolicyType"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { GraphQLObjectType } from 'graphql';
2
+ export declare const buildValidationResultType: () => GraphQLObjectType;
3
+ //# sourceMappingURL=buildValidationResultType.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildValidationResultType.d.ts","sourceRoot":"","sources":["../../src/schema/buildValidationResultType.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,iBAAiB,EAElB,MAAM,SAAS,CAAA;AAWhB,eAAO,MAAM,yBAAyB,QAAO,iBAU5C,CAAA"}
@@ -0,0 +1,30 @@
1
+ import { GraphQLBoolean, GraphQLList, GraphQLNonNull, GraphQLObjectType, GraphQLString } from 'graphql';
2
+ const validationFieldErrorType = new GraphQLObjectType({
3
+ name: 'PayloadValidationFieldError',
4
+ fields: {
5
+ locale: {
6
+ type: GraphQLString
7
+ },
8
+ message: {
9
+ type: new GraphQLNonNull(GraphQLString)
10
+ },
11
+ path: {
12
+ type: new GraphQLNonNull(GraphQLString)
13
+ }
14
+ }
15
+ });
16
+ export const buildValidationResultType = ()=>{
17
+ return new GraphQLObjectType({
18
+ name: 'PayloadValidationResult',
19
+ fields: {
20
+ errors: {
21
+ type: new GraphQLNonNull(new GraphQLList(new GraphQLNonNull(validationFieldErrorType)))
22
+ },
23
+ valid: {
24
+ type: new GraphQLNonNull(GraphQLBoolean)
25
+ }
26
+ }
27
+ });
28
+ };
29
+
30
+ //# sourceMappingURL=buildValidationResultType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/schema/buildValidationResultType.ts"],"sourcesContent":["import {\n GraphQLBoolean,\n GraphQLList,\n GraphQLNonNull,\n GraphQLObjectType,\n GraphQLString,\n} from 'graphql'\n\nconst validationFieldErrorType = new GraphQLObjectType({\n name: 'PayloadValidationFieldError',\n fields: {\n locale: { type: GraphQLString },\n message: { type: new GraphQLNonNull(GraphQLString) },\n path: { type: new GraphQLNonNull(GraphQLString) },\n },\n})\n\nexport const buildValidationResultType = (): GraphQLObjectType => {\n return new GraphQLObjectType({\n name: 'PayloadValidationResult',\n fields: {\n errors: {\n type: new GraphQLNonNull(new GraphQLList(new GraphQLNonNull(validationFieldErrorType))),\n },\n valid: { type: new GraphQLNonNull(GraphQLBoolean) },\n },\n })\n}\n"],"names":["GraphQLBoolean","GraphQLList","GraphQLNonNull","GraphQLObjectType","GraphQLString","validationFieldErrorType","name","fields","locale","type","message","path","buildValidationResultType","errors","valid"],"mappings":"AAAA,SACEA,cAAc,EACdC,WAAW,EACXC,cAAc,EACdC,iBAAiB,EACjBC,aAAa,QACR,UAAS;AAEhB,MAAMC,2BAA2B,IAAIF,kBAAkB;IACrDG,MAAM;IACNC,QAAQ;QACNC,QAAQ;YAAEC,MAAML;QAAc;QAC9BM,SAAS;YAAED,MAAM,IAAIP,eAAeE;QAAe;QACnDO,MAAM;YAAEF,MAAM,IAAIP,eAAeE;QAAe;IAClD;AACF;AAEA,OAAO,MAAMQ,4BAA4B;IACvC,OAAO,IAAIT,kBAAkB;QAC3BG,MAAM;QACNC,QAAQ;YACNM,QAAQ;gBACNJ,MAAM,IAAIP,eAAe,IAAID,YAAY,IAAIC,eAAeG;YAC9D;YACAS,OAAO;gBAAEL,MAAM,IAAIP,eAAeF;YAAgB;QACpD;IACF;AACF,EAAC"}
@@ -1 +1 @@
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 */\nexport const 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"],"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,SAASC,UAAU,QAAQ,6BAA4B;AACvD,SAASC,gBAAgB,QAAQ,kCAAiC;AAClE,SAASC,aAAa,QAAQ,qBAAoB;AAQlD;;;;;;;;;;;;;CAaC,GACD,OAAO,MAAMC,sBAAsB,CAAC,EAAEC,IAAI,EAAEC,MAAM,EAAEC,UAAU,EAAQ;IACpE,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,GAAGiB,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,GAAGiB,UAAU,SAAS,CAAC;gBAC7BhB,QAAQ,IAAO,CAAA;wBACb,GAAGK,UAAU;wBACb,GAAGY,eAAe;oBACpB,CAAA;YACF;QAEJ;IACF;IAEA,OAAO,IAAI5B,uBAAuB;QAChCU,MAAM,GAAGiB,UAAU,MAAM,CAAC;QAC1BhB,QAAQ;YACN,GAAGK,UAAU;YACb,GAAGY,eAAe;QACpB;IACF;AACF,EAAC"}
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 */\nexport const 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' }, 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"],"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,SAASC,UAAU,QAAQ,6BAA4B;AACvD,SAASC,gBAAgB,QAAQ,kCAAiC;AAClE,SAASC,aAAa,QAAQ,qBAAoB;AAQlD;;;;;;;;;;;;;CAaC,GACD,OAAO,MAAMC,sBAAsB,CAAC,EAAEC,IAAI,EAAEC,MAAM,EAAEC,UAAU,EAAQ;IACpE,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,GAAGT;QACpD;IACF;IAEA,MAAMe,YAAYrB,WAAWI;IAE7B,MAAMkB,kBAAkB;QACtBC,KAAK;YACHR,MAAM,IAAIpB,YACR,IAAID,uBAAuB;gBACzBU,MAAM,GAAGiB,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,GAAGiB,UAAU,SAAS,CAAC;gBAC7BhB,QAAQ,IAAO,CAAA;wBACb,GAAGK,UAAU;wBACb,GAAGY,eAAe;oBACpB,CAAA;YACF;QAEJ;IACF;IAEA,OAAO,IAAI5B,uBAAuB;QAChCU,MAAM,GAAGiB,UAAU,MAAM,CAAC;QAC1BhB,QAAQ;YACN,GAAGK,UAAU;YACb,GAAGY,eAAe;QACpB;IACF;AACF,EAAC"}
@@ -1,4 +1,4 @@
1
- import type { ArrayField, BlocksField, CheckboxField, CodeField, CollapsibleField, DateField, EmailField, GraphQLInfo, GroupField, JoinField, JSONField, NumberField, PointField, RadioField, RelationshipField, RichTextField, RowField, SanitizedConfig, SelectField, TabsField, TextareaField, TextField, UploadField } from 'payload';
1
+ import type { ArrayField, BlocksField, CheckboxField, CodeField, CollapsibleField, DateField, EmailField, GraphQLInfo, GroupField, JoinField, JSONField, NumberField, PointField, RadioField, RelationshipField, RichTextField, RowField, SanitizedConfig, SelectField, SlugField, TabsField, TextareaField, TextField, UploadField } from 'payload';
2
2
  import { GraphQLObjectType } from 'graphql';
3
3
  import { type ObjectTypeConfig } from './buildObjectType.js';
4
4
  type SharedArgs = {
@@ -63,6 +63,9 @@ type FieldToSchemaMap = {
63
63
  select: (args: {
64
64
  field: SelectField;
65
65
  } & SharedArgs) => ObjectTypeConfig;
66
+ slug: (args: {
67
+ field: SlugField;
68
+ } & SharedArgs) => ObjectTypeConfig;
66
69
  tabs: (args: {
67
70
  field: TabsField;
68
71
  } & SharedArgs) => ObjectTypeConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"fieldToSchemaMap.d.ts","sourceRoot":"","sources":["../../src/schema/fieldToSchemaMap.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,aAAa,EACb,SAAS,EACT,gBAAgB,EAChB,SAAS,EACT,UAAU,EAGV,WAAW,EACX,UAAU,EACV,SAAS,EACT,SAAS,EACT,WAAW,EACX,UAAU,EACV,UAAU,EACV,iBAAiB,EAEjB,aAAa,EACb,QAAQ,EACR,eAAe,EACf,WAAW,EACX,SAAS,EACT,aAAa,EACb,SAAS,EACT,WAAW,EACZ,MAAM,SAAS,CAAA;AAEhB,OAAO,EAOL,iBAAiB,EAGlB,MAAM,SAAS,CAAA;AAYhB,OAAO,EAAmB,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAwB7E,KAAK,UAAU,GAAG;IAChB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,MAAM,EAAE,eAAe,CAAA;IACvB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,aAAa,EAAE,WAAW,CAAA;IAC1B,qBAAqB,EAAE,iBAAiB,CAAA;IACxC,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAID,KAAK,gBAAgB,GAAG;IACtB,KAAK,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,UAAU,CAAA;KAAE,GAAG,UAAU,KAAK,gBAAgB,CAAA;IACrE,MAAM,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,WAAW,CAAA;KAAE,GAAG,UAAU,KAAK,gBAAgB,CAAA;IACvE,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,aAAa,CAAA;KAAE,GAAG,UAAU,KAAK,gBAAgB,CAAA;IAC3E,IAAI,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,SAAS,CAAA;KAAE,GAAG,UAAU,KAAK,gBAAgB,CAAA;IACnE,WAAW,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,gBAAgB,CAAA;KAAE,GAAG,UAAU,KAAK,gBAAgB,CAAA;IACjF,IAAI,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,SAAS,CAAA;KAAE,GAAG,UAAU,KAAK,gBAAgB,CAAA;IACnE,KAAK,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,UAAU,CAAA;KAAE,GAAG,UAAU,KAAK,gBAAgB,CAAA;IACrE,KAAK,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,UAAU,CAAA;KAAE,GAAG,UAAU,KAAK,gBAAgB,CAAA;IACrE,IAAI,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,SAAS,CAAA;KAAE,GAAG,UAAU,KAAK,gBAAgB,CAAA;IACnE,IAAI,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,SAAS,CAAA;KAAE,GAAG,UAAU,KAAK,gBAAgB,CAAA;IACnE,MAAM,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,WAAW,CAAA;KAAE,GAAG,UAAU,KAAK,gBAAgB,CAAA;IACvE,KAAK,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,UAAU,CAAA;KAAE,GAAG,UAAU,KAAK,gBAAgB,CAAA;IACrE,KAAK,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,UAAU,CAAA;KAAE,GAAG,UAAU,KAAK,gBAAgB,CAAA;IACrE,YAAY,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,iBAAiB,CAAA;KAAE,GAAG,UAAU,KAAK,gBAAgB,CAAA;IACnF,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,aAAa,CAAA;KAAE,GAAG,UAAU,KAAK,gBAAgB,CAAA;IAC3E,GAAG,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,QAAQ,CAAA;KAAE,GAAG,UAAU,KAAK,gBAAgB,CAAA;IACjE,MAAM,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,WAAW,CAAA;KAAE,GAAG,UAAU,KAAK,gBAAgB,CAAA;IACvE,IAAI,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,SAAS,CAAA;KAAE,GAAG,UAAU,KAAK,gBAAgB,CAAA;IACnE,IAAI,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,SAAS,CAAA;KAAE,GAAG,UAAU,KAAK,gBAAgB,CAAA;IACnE,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,aAAa,CAAA;KAAE,GAAG,UAAU,KAAK,gBAAgB,CAAA;IAC3E,MAAM,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,WAAW,CAAA;KAAE,GAAG,UAAU,KAAK,gBAAgB,CAAA;CACxE,CAAA;AAED,eAAO,MAAM,gBAAgB,EAAE,gBAikC9B,CAAA"}
1
+ {"version":3,"file":"fieldToSchemaMap.d.ts","sourceRoot":"","sources":["../../src/schema/fieldToSchemaMap.ts"],"names":[],"mappings":"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"}
@@ -26,6 +26,18 @@ function formattedNameResolver({ field, ...rest }) {
26
26
  return rest;
27
27
  }
28
28
  export const fieldToSchemaMap = {
29
+ slug: ({ field, forceNullable, objectTypeConfig, parentIsLocalized })=>({
30
+ ...objectTypeConfig,
31
+ [formatName(field.name)]: formattedNameResolver({
32
+ type: withNullableType({
33
+ type: GraphQLString,
34
+ field,
35
+ forceNullable,
36
+ parentIsLocalized
37
+ }),
38
+ field
39
+ })
40
+ }),
29
41
  array: ({ config, field, forceNullable, graphqlResult, objectTypeConfig, parentIsLocalized, parentName })=>{
30
42
  const interfaceName = field?.interfaceName || combineParentName(parentName, toWords(field.name, true));
31
43
  if (!graphqlResult.types.arrayTypes[interfaceName]) {
@@ -63,7 +75,7 @@ export const fieldToSchemaMap = {
63
75
  };
64
76
  },
65
77
  blocks: ({ config, field, forceNullable, graphqlResult, objectTypeConfig, parentIsLocalized, parentName })=>{
66
- const blockTypes = (field.blockReferences ?? field.blocks).reduce((acc, _block)=>{
78
+ const blockTypes = field.blocks.reduce((acc, _block)=>{
67
79
  const blockSlug = typeof _block === 'string' ? _block : _block.slug;
68
80
  if (!graphqlResult.types.blockTypes[blockSlug]) {
69
81
  // TODO: iterate over blocks mapped to block slug in v4, or pass through payload.blocks
@@ -286,7 +298,7 @@ export const fieldToSchemaMap = {
286
298
  const { count = false, limit, page, sort, where } = args;
287
299
  const { req } = context;
288
300
  const draft = Boolean(args.draft ?? context.req.query?.draft);
289
- const select = resolveSelect(info, context.select);
301
+ const select = resolveSelect(info, context.select, context);
290
302
  const targetField = field.targetField;
291
303
  const fullWhere = combineQueries(where, Array.isArray(targetField.relationTo) ? {
292
304
  [field.on]: {
@@ -481,7 +493,7 @@ export const fieldToSchemaMap = {
481
493
  const fallbackLocale = args.fallbackLocale || context.req.fallbackLocale;
482
494
  let relatedCollectionSlug = field.relationTo;
483
495
  const draft = Boolean(args.draft ?? context.req.query?.draft);
484
- const select = resolveSelect(info, context.select);
496
+ const select = resolveSelect(info, context.select, context);
485
497
  if (hasManyValues) {
486
498
  const results = [];
487
499
  const resultPromises = [];
@@ -826,7 +838,7 @@ export const fieldToSchemaMap = {
826
838
  const fallbackLocale = args.fallbackLocale || context.req.fallbackLocale;
827
839
  let relatedCollectionSlug = field.relationTo;
828
840
  const draft = Boolean(args.draft ?? context.req.query?.draft);
829
- const select = resolveSelect(info, context.select);
841
+ const select = resolveSelect(info, context.select, context);
830
842
  if (hasManyValues) {
831
843
  const results = [];
832
844
  const resultPromises = [];