httpBatching.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.runPotentiallyBatchedHttpQuery = void 0;
  4. const runHttpQuery_js_1 = require("./runHttpQuery.js");
  5. const internalErrorClasses_js_1 = require("./internalErrorClasses.js");
  6. async function runBatchedHttpQuery({ server, batchRequest, body, contextValue, schemaDerivedData, internals, }) {
  7. if (body.length === 0) {
  8. throw new internalErrorClasses_js_1.BadRequestError('No operations found in request.');
  9. }
  10. const sharedResponseHTTPGraphQLHead = (0, runHttpQuery_js_1.newHTTPGraphQLHead)();
  11. const responseBodies = await Promise.all(body.map(async (bodyPiece) => {
  12. const singleRequest = {
  13. ...batchRequest,
  14. body: bodyPiece,
  15. };
  16. const response = await (0, runHttpQuery_js_1.runHttpQuery)({
  17. server,
  18. httpRequest: singleRequest,
  19. contextValue,
  20. schemaDerivedData,
  21. internals,
  22. sharedResponseHTTPGraphQLHead,
  23. });
  24. if (response.body.kind === 'chunked') {
  25. throw Error('Incremental delivery is not implemented for batch requests');
  26. }
  27. return response.body.string;
  28. }));
  29. return {
  30. ...sharedResponseHTTPGraphQLHead,
  31. body: { kind: 'complete', string: `[${responseBodies.join(',')}]` },
  32. };
  33. }
  34. async function runPotentiallyBatchedHttpQuery(server, httpGraphQLRequest, contextValue, schemaDerivedData, internals) {
  35. if (!(httpGraphQLRequest.method === 'POST' &&
  36. Array.isArray(httpGraphQLRequest.body))) {
  37. return await (0, runHttpQuery_js_1.runHttpQuery)({
  38. server,
  39. httpRequest: httpGraphQLRequest,
  40. contextValue,
  41. schemaDerivedData,
  42. internals,
  43. sharedResponseHTTPGraphQLHead: null,
  44. });
  45. }
  46. if (internals.allowBatchedHttpRequests) {
  47. return await runBatchedHttpQuery({
  48. server,
  49. batchRequest: httpGraphQLRequest,
  50. body: httpGraphQLRequest.body,
  51. contextValue,
  52. schemaDerivedData,
  53. internals,
  54. });
  55. }
  56. throw new internalErrorClasses_js_1.BadRequestError('Operation batching disabled.');
  57. }
  58. exports.runPotentiallyBatchedHttpQuery = runPotentiallyBatchedHttpQuery;
  59. //# sourceMappingURL=httpBatching.js.map