@graphql-tools/links
Version:
A set of utils for faster development of GraphQL tools
26 lines (25 loc) • 1.04 kB
JavaScript
import formDataAppendFile from 'apollo-upload-client/formDataAppendFile.mjs';
import isExtractableFile from 'apollo-upload-client/isExtractableFile.mjs';
import UploadHttpLink from 'apollo-upload-client/UploadHttpLink.mjs';
import FormData from 'form-data';
import fetch from 'node-fetch';
import * as apolloImport from '@apollo/client';
import { AwaitVariablesLink } from './AwaitVariablesLink.js';
const apollo = apolloImport?.default ?? apolloImport;
export const createServerHttpLink = (options) => apollo.concat(new AwaitVariablesLink(), new UploadHttpLink({
...options,
fetch,
FormData,
isExtractableFile: (value) => isExtractableFile(value) || value?.createReadStream,
formDataAppendFile: (form, index, file) => {
if (file.createReadStream != null) {
form.append(index, file.createReadStream(), {
filename: file.filename,
contentType: file.mimetype,
});
}
else {
formDataAppendFile(form, index, file);
}
},
}));