There's an open source GraphQL client named `urql` which works great. If you want to upload files using GraphQL, you can use [login to view URL] on the client to configure urql to send files, and then implement a GraphQL server with [login to view URL] to accept those uploads.
The client side part of this toolchain is designed to work in the browser primarily. `@urql/multipart-fetch-exchange` package (and the extract-files package used underneath) work well in the browser with the `File` object ([login to view URL]) or the Blob object.
The task in this job is to extend these packages to support uploading files from node.js. Node.js doesn't have the same `File` object from the web APIs, and instead most developers use Buffers or ReadableStream objects to represent files. But, these aren't currently identified by extract-files as files and thus not uploaded correctly using multipart-fetch-exchange.
I think this will involve changing extract-files' understanding of what a file is and then testing the multipart request exchange against a working graphql-upload server to ensure that the stack of tools actually works. There may be some more work figuring out how to make all the pieces work together as well.
The deliverables for this task will include:
- pull requests to the open source packages that need to be changed on Github
- time spent working with the maintainers of these open source packages to get the pull requests merged (I am not the maintainer but I can support and explain more context if I can help!)
- a working demo of a file upload completed from node.js to a test server using graphql-upload
If there is any ambitious pirates out there, do not search anymore, you have found home !
Thank you very much for taking the time to read our job offer.