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 Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

'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.');
},
});