{"version":3,"file":"graphql.mjs","sources":["../../server/src/graphql.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nimport { FILE_MODEL_UID } from './constants';\n\nconst FILE_INFO_INPUT_TYPE_NAME = 'FileInfoInput';\n\nexport const installGraphqlExtension = ({ strapi }: { strapi: Core.Strapi }) => {\n const { service: getGraphQLService, config: graphQLConfig } = strapi.plugin('graphql');\n const { service: getUploadService } = strapi.plugin('upload');\n\n const isShadowCRUDEnabled = graphQLConfig('shadowCRUD', true);\n\n if (!isShadowCRUDEnabled) {\n return;\n }\n\n getGraphQLService('extension').shadowCRUD('plugin::upload.folder').disable();\n getGraphQLService('extension').shadowCRUD('plugin::upload.file').disableMutations();\n\n const { getTypeName } = getGraphQLService('utils').naming;\n\n const fileModel = strapi.getModel(FILE_MODEL_UID);\n const fileTypeName = getTypeName(fileModel);\n /**\n * Register Upload's types, queries & mutations to the content API using the GraphQL extension API\n */\n getGraphQLService('extension').use(({ nexus }: { nexus: any }) => {\n const { inputObjectType, extendType, nonNull } = nexus;\n\n // Represents the input data payload for the file's information\n const fileInfoInputType = inputObjectType({\n name: FILE_INFO_INPUT_TYPE_NAME,\n\n definition(t: any) {\n t.string('name');\n t.string('alternativeText');\n t.string('caption');\n },\n });\n\n const mutations = extendType({\n type: 'Mutation',\n\n definition(t: any) {\n /**\n * Update some information for a given file\n */\n t.field('updateUploadFile', {\n type: nonNull(fileTypeName),\n\n args: {\n id: nonNull('ID'),\n info: FILE_INFO_INPUT_TYPE_NAME,\n },\n\n async resolve(parent: unknown, args: { id: number; info: any }) {\n const { id, info } = args;\n\n return getUploadService('upload').updateFileInfo(id, info);\n },\n });\n\n /**\n * Delete & remove a given file\n */\n t.field('deleteUploadFile', {\n type: fileTypeName,\n\n args: {\n id: nonNull('ID'),\n },\n\n async resolve(parent: unknown, args: { id: number }) {\n const { id } = args;\n\n const file = await getUploadService('upload').findOne(id);\n\n if (!file) {\n return null;\n }\n\n return getUploadService('upload').remove(file);\n },\n });\n },\n });\n\n return {\n types: [fileInfoInputType, mutations],\n resolversConfig: {\n // Use custom scopes for the upload file CRUD operations\n 'Query.uploadFiles': { auth: { scope: 'plugin::upload.content-api.find' } },\n 'Query.uploadFiles_connection': { auth: { scope: 'plugin::upload.content-api.find' } },\n 'Query.uploadFile': { auth: { scope: 'plugin::upload.content-api.findOne' } },\n 'Mutation.updateUploadFile': { auth: { scope: 'plugin::upload.content-api.upload' } },\n 'Mutation.deleteUploadFile': { auth: { scope: 'plugin::upload.content-api.destroy' } },\n },\n };\n });\n};\n"],"names":["FILE_INFO_INPUT_TYPE_NAME","installGraphqlExtension","strapi","service","getGraphQLService","config","graphQLConfig","plugin","getUploadService","isShadowCRUDEnabled","shadowCRUD","disable","disableMutations","getTypeName","naming","fileModel","getModel","FILE_MODEL_UID","fileTypeName","use","nexus","inputObjectType","extendType","nonNull","fileInfoInputType","name","definition","t","string","mutations","type","field","args","id","info","resolve","parent","updateFileInfo","file","findOne","remove","types","resolversConfig","auth","scope"],"mappings":"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"}