This repository has been archived on 2023-08-20. You can view files and clone it, but cannot push or open issues or pull requests.
admin-panel/graphql-types/node_modules/graphql-upload/public/GraphQLUpload.js

91 lines
2.6 KiB
JavaScript
Raw Normal View History

2021-03-09 18:44:13 +00:00
'use strict';
const { GraphQLScalarType, GraphQLError } = require('graphql');
const Upload = require('./Upload');
/**
* A GraphQL `Upload` scalar that can be used in a
* [`GraphQLSchema`](https://graphql.org/graphql-js/type/#graphqlschema).
* Its value in resolvers is a promise that resolves
* [file upload details]{@link FileUpload} for processing and storage.
* @kind class
* @name GraphQLUpload
* @example <caption>Ways to `import`.</caption>
* ```js
* import { GraphQLUpload } from 'graphql-upload';
* ```
*
* ```js
* import GraphQLUpload from 'graphql-upload/public/GraphQLUpload.js';
* ```
* @example <caption>Ways to `require`.</caption>
* ```js
* const { GraphQLUpload } = require('graphql-upload');
* ```
*
* ```js
* const GraphQLUpload = require('graphql-upload/public/GraphQLUpload');
* ```
* @example <caption>Setup for a schema built with [`makeExecutableSchema`](https://apollographql.com/docs/graphql-tools/generate-schema#makeExecutableSchema).</caption>
* ```js
* const { makeExecutableSchema } = require('graphql-tools');
* const { GraphQLUpload } = require('graphql-upload');
*
* const schema = makeExecutableSchema({
* typeDefs: /* GraphQL *\/ `
* scalar Upload
* `,
* resolvers: {
* Upload: GraphQLUpload,
* },
* });
* ```
* @example <caption>A manually constructed schema with an image upload mutation.</caption>
* ```js
* const {
* GraphQLSchema,
* GraphQLObjectType,
* GraphQLBoolean,
* } = require('graphql');
* const { GraphQLUpload } = require('graphql-upload');
*
* const schema = new GraphQLSchema({
* mutation: new GraphQLObjectType({
* name: 'Mutation',
* fields: {
* uploadImage: {
* description: 'Uploads an image.',
* type: GraphQLBoolean,
* args: {
* image: {
* description: 'Image file.',
* type: GraphQLUpload,
* },
* },
* async resolve(parent, { image }) {
* const { filename, mimetype, createReadStream } = await image;
* const stream = createReadStream();
* // Promisify the stream and store the file, then…
* return true;
* },
* },
* },
* }),
* });
* ```
*/
module.exports = new GraphQLScalarType({
name: 'Upload',
description: 'The `Upload` scalar type represents a file upload.',
parseValue(value) {
if (value instanceof Upload) return value.promise;
throw new GraphQLError('Upload value invalid.');
},
parseLiteral(ast) {
throw new GraphQLError('Upload literal unsupported.', ast);
},
serialize() {
throw new GraphQLError('Upload serialization unsupported.');
},
});