UNPKG

graphql-yoga

Version:
22 lines (21 loc) 804 B
import { dset } from 'dset'; import { isContentTypeMatch } from './utils.js'; export function isPOSTMultipartRequest(request) { return (request.method === 'POST' && isContentTypeMatch(request, 'multipart/form-data')); } export async function parsePOSTMultipartRequest(request) { const requestBody = await request.formData(); const operationsStr = requestBody.get('operations')?.toString() || '{}'; const operations = JSON.parse(operationsStr); const mapStr = requestBody.get('map')?.toString() || '{}'; const map = JSON.parse(mapStr); for (const fileIndex in map) { const file = requestBody.get(fileIndex); const keys = map[fileIndex]; for (const key of keys) { dset(operations, key, file); } } return operations; }