59 lines
2.3 KiB
JavaScript
59 lines
2.3 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.runPotentiallyBatchedHttpQuery = void 0;
|
|
const runHttpQuery_js_1 = require("./runHttpQuery.js");
|
|
const internalErrorClasses_js_1 = require("./internalErrorClasses.js");
|
|
async function runBatchedHttpQuery({ server, batchRequest, body, contextValue, schemaDerivedData, internals, }) {
|
|
if (body.length === 0) {
|
|
throw new internalErrorClasses_js_1.BadRequestError('No operations found in request.');
|
|
}
|
|
const sharedResponseHTTPGraphQLHead = (0, runHttpQuery_js_1.newHTTPGraphQLHead)();
|
|
const responseBodies = await Promise.all(body.map(async (bodyPiece) => {
|
|
const singleRequest = {
|
|
...batchRequest,
|
|
body: bodyPiece,
|
|
};
|
|
const response = await (0, runHttpQuery_js_1.runHttpQuery)({
|
|
server,
|
|
httpRequest: singleRequest,
|
|
contextValue,
|
|
schemaDerivedData,
|
|
internals,
|
|
sharedResponseHTTPGraphQLHead,
|
|
});
|
|
if (response.body.kind === 'chunked') {
|
|
throw Error('Incremental delivery is not implemented for batch requests');
|
|
}
|
|
return response.body.string;
|
|
}));
|
|
return {
|
|
...sharedResponseHTTPGraphQLHead,
|
|
body: { kind: 'complete', string: `[${responseBodies.join(',')}]` },
|
|
};
|
|
}
|
|
async function runPotentiallyBatchedHttpQuery(server, httpGraphQLRequest, contextValue, schemaDerivedData, internals) {
|
|
if (!(httpGraphQLRequest.method === 'POST' &&
|
|
Array.isArray(httpGraphQLRequest.body))) {
|
|
return await (0, runHttpQuery_js_1.runHttpQuery)({
|
|
server,
|
|
httpRequest: httpGraphQLRequest,
|
|
contextValue,
|
|
schemaDerivedData,
|
|
internals,
|
|
sharedResponseHTTPGraphQLHead: null,
|
|
});
|
|
}
|
|
if (internals.allowBatchedHttpRequests) {
|
|
return await runBatchedHttpQuery({
|
|
server,
|
|
batchRequest: httpGraphQLRequest,
|
|
body: httpGraphQLRequest.body,
|
|
contextValue,
|
|
schemaDerivedData,
|
|
internals,
|
|
});
|
|
}
|
|
throw new internalErrorClasses_js_1.BadRequestError('Operation batching disabled.');
|
|
}
|
|
exports.runPotentiallyBatchedHttpQuery = runPotentiallyBatchedHttpQuery;
|
|
//# sourceMappingURL=httpBatching.js.map
|