makeGatewayGraphQLRequestContext.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.makeGatewayGraphQLRequestContext = void 0;
  4. function makeGatewayGraphQLRequestContext(as4RequestContext, server, internals) {
  5. const request = {};
  6. if ('query' in as4RequestContext.request) {
  7. request.query = as4RequestContext.request.query;
  8. }
  9. if ('operationName' in as4RequestContext.request) {
  10. request.operationName = as4RequestContext.request.operationName;
  11. }
  12. if ('variables' in as4RequestContext.request) {
  13. request.variables = as4RequestContext.request.variables;
  14. }
  15. if ('extensions' in as4RequestContext.request) {
  16. request.extensions = as4RequestContext.request.extensions;
  17. }
  18. if (as4RequestContext.request.http) {
  19. const as4http = as4RequestContext.request.http;
  20. const needQuestion = as4http.search !== '' && !as4http.search.startsWith('?');
  21. request.http = {
  22. method: as4http.method,
  23. url: `https://unknown-url.invalid/${needQuestion ? '?' : ''}${as4http.search}`,
  24. headers: new FetcherHeadersForHeaderMap(as4http.headers),
  25. };
  26. }
  27. const response = {
  28. http: {
  29. headers: new FetcherHeadersForHeaderMap(as4RequestContext.response.http.headers),
  30. get status() {
  31. return as4RequestContext.response.http.status;
  32. },
  33. set status(newStatus) {
  34. as4RequestContext.response.http.status = newStatus;
  35. },
  36. },
  37. };
  38. return {
  39. request,
  40. response,
  41. logger: server.logger,
  42. schema: as4RequestContext.schema,
  43. schemaHash: 'schemaHash no longer exists in Apollo Server 4',
  44. context: as4RequestContext.contextValue,
  45. cache: server.cache,
  46. queryHash: as4RequestContext.queryHash,
  47. document: as4RequestContext.document,
  48. source: as4RequestContext.source,
  49. operationName: as4RequestContext.operationName,
  50. operation: as4RequestContext.operation,
  51. errors: as4RequestContext.errors,
  52. metrics: as4RequestContext.metrics,
  53. debug: internals.includeStacktraceInErrorResponses,
  54. overallCachePolicy: as4RequestContext.overallCachePolicy,
  55. requestIsBatched: as4RequestContext.requestIsBatched,
  56. };
  57. }
  58. exports.makeGatewayGraphQLRequestContext = makeGatewayGraphQLRequestContext;
  59. class FetcherHeadersForHeaderMap {
  60. constructor(map) {
  61. this.map = map;
  62. }
  63. append(name, value) {
  64. if (this.map.has(name)) {
  65. this.map.set(name, this.map.get(name) + ', ' + value);
  66. }
  67. else {
  68. this.map.set(name, value);
  69. }
  70. }
  71. delete(name) {
  72. this.map.delete(name);
  73. }
  74. get(name) {
  75. return this.map.get(name) ?? null;
  76. }
  77. has(name) {
  78. return this.map.has(name);
  79. }
  80. set(name, value) {
  81. this.map.set(name, value);
  82. }
  83. entries() {
  84. return this.map.entries();
  85. }
  86. keys() {
  87. return this.map.keys();
  88. }
  89. values() {
  90. return this.map.values();
  91. }
  92. [Symbol.iterator]() {
  93. return this.map.entries();
  94. }
  95. }
  96. //# sourceMappingURL=makeGatewayGraphQLRequestContext.js.map