{"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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"}