graphql-yoga
Version:
22 lines (21 loc) • 804 B
JavaScript
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;
}