@depup/apollo__server 5.5.0-depup.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (557) hide show
  1. package/README.md +40 -0
  2. package/changes.json +46 -0
  3. package/dist/cjs/ApolloServer.d.ts +126 -0
  4. package/dist/cjs/ApolloServer.d.ts.map +1 -0
  5. package/dist/cjs/ApolloServer.js +726 -0
  6. package/dist/cjs/ApolloServer.js.map +1 -0
  7. package/dist/cjs/cachePolicy.d.ts +3 -0
  8. package/dist/cjs/cachePolicy.d.ts.map +1 -0
  9. package/dist/cjs/cachePolicy.js +33 -0
  10. package/dist/cjs/cachePolicy.js.map +1 -0
  11. package/dist/cjs/determineApolloConfig.d.ts +4 -0
  12. package/dist/cjs/determineApolloConfig.d.ts.map +1 -0
  13. package/dist/cjs/determineApolloConfig.js +58 -0
  14. package/dist/cjs/determineApolloConfig.js.map +1 -0
  15. package/dist/cjs/errorNormalize.d.ts +12 -0
  16. package/dist/cjs/errorNormalize.d.ts.map +1 -0
  17. package/dist/cjs/errorNormalize.js +71 -0
  18. package/dist/cjs/errorNormalize.js.map +1 -0
  19. package/dist/cjs/errors/index.d.ts +16 -0
  20. package/dist/cjs/errors/index.d.ts.map +1 -0
  21. package/dist/cjs/errors/index.js +28 -0
  22. package/dist/cjs/errors/index.js.map +1 -0
  23. package/dist/cjs/externalTypes/constructor.d.ts +78 -0
  24. package/dist/cjs/externalTypes/constructor.d.ts.map +1 -0
  25. package/dist/cjs/externalTypes/constructor.js +3 -0
  26. package/dist/cjs/externalTypes/constructor.js.map +1 -0
  27. package/dist/cjs/externalTypes/context.d.ts +4 -0
  28. package/dist/cjs/externalTypes/context.d.ts.map +1 -0
  29. package/dist/cjs/externalTypes/context.js +3 -0
  30. package/dist/cjs/externalTypes/context.js.map +1 -0
  31. package/dist/cjs/externalTypes/graphql.d.ts +41 -0
  32. package/dist/cjs/externalTypes/graphql.d.ts.map +1 -0
  33. package/dist/cjs/externalTypes/graphql.js +3 -0
  34. package/dist/cjs/externalTypes/graphql.js.map +1 -0
  35. package/dist/cjs/externalTypes/http.d.ts +22 -0
  36. package/dist/cjs/externalTypes/http.d.ts.map +1 -0
  37. package/dist/cjs/externalTypes/http.js +3 -0
  38. package/dist/cjs/externalTypes/http.js.map +1 -0
  39. package/dist/cjs/externalTypes/incrementalDeliveryPolyfillAlpha2.d.ts +28 -0
  40. package/dist/cjs/externalTypes/incrementalDeliveryPolyfillAlpha2.d.ts.map +1 -0
  41. package/dist/cjs/externalTypes/incrementalDeliveryPolyfillAlpha2.js +3 -0
  42. package/dist/cjs/externalTypes/incrementalDeliveryPolyfillAlpha2.js.map +1 -0
  43. package/dist/cjs/externalTypes/incrementalDeliveryPolyfillAlpha9.d.ts +43 -0
  44. package/dist/cjs/externalTypes/incrementalDeliveryPolyfillAlpha9.d.ts.map +1 -0
  45. package/dist/cjs/externalTypes/incrementalDeliveryPolyfillAlpha9.js +3 -0
  46. package/dist/cjs/externalTypes/incrementalDeliveryPolyfillAlpha9.js.map +1 -0
  47. package/dist/cjs/externalTypes/index.d.ts +9 -0
  48. package/dist/cjs/externalTypes/index.d.ts.map +1 -0
  49. package/dist/cjs/externalTypes/index.js +3 -0
  50. package/dist/cjs/externalTypes/index.js.map +1 -0
  51. package/dist/cjs/externalTypes/plugins.d.ts +75 -0
  52. package/dist/cjs/externalTypes/plugins.d.ts.map +1 -0
  53. package/dist/cjs/externalTypes/plugins.js +3 -0
  54. package/dist/cjs/externalTypes/plugins.js.map +1 -0
  55. package/dist/cjs/externalTypes/requestPipeline.d.ts +50 -0
  56. package/dist/cjs/externalTypes/requestPipeline.d.ts.map +1 -0
  57. package/dist/cjs/externalTypes/requestPipeline.js +3 -0
  58. package/dist/cjs/externalTypes/requestPipeline.js.map +1 -0
  59. package/dist/cjs/generated/packageVersion.d.ts +2 -0
  60. package/dist/cjs/generated/packageVersion.d.ts.map +1 -0
  61. package/dist/cjs/generated/packageVersion.js +5 -0
  62. package/dist/cjs/generated/packageVersion.js.map +1 -0
  63. package/dist/cjs/httpBatching.d.ts +4 -0
  64. package/dist/cjs/httpBatching.d.ts.map +1 -0
  65. package/dist/cjs/httpBatching.js +58 -0
  66. package/dist/cjs/httpBatching.js.map +1 -0
  67. package/dist/cjs/incrementalDeliveryPolyfill.d.ts +82 -0
  68. package/dist/cjs/incrementalDeliveryPolyfill.d.ts.map +1 -0
  69. package/dist/cjs/incrementalDeliveryPolyfill.js +74 -0
  70. package/dist/cjs/incrementalDeliveryPolyfill.js.map +1 -0
  71. package/dist/cjs/index.d.ts +4 -0
  72. package/dist/cjs/index.d.ts.map +1 -0
  73. package/dist/cjs/index.js +23 -0
  74. package/dist/cjs/index.js.map +1 -0
  75. package/dist/cjs/internalErrorClasses.d.ts +28 -0
  76. package/dist/cjs/internalErrorClasses.d.ts.map +1 -0
  77. package/dist/cjs/internalErrorClasses.js +91 -0
  78. package/dist/cjs/internalErrorClasses.js.map +1 -0
  79. package/dist/cjs/internalPlugin.d.ts +9 -0
  80. package/dist/cjs/internalPlugin.d.ts.map +1 -0
  81. package/dist/cjs/internalPlugin.js +11 -0
  82. package/dist/cjs/internalPlugin.js.map +1 -0
  83. package/dist/cjs/package.json +1 -0
  84. package/dist/cjs/plugin/cacheControl/index.d.ts +9 -0
  85. package/dist/cjs/plugin/cacheControl/index.d.ts.map +1 -0
  86. package/dist/cjs/plugin/cacheControl/index.js +223 -0
  87. package/dist/cjs/plugin/cacheControl/index.js.map +1 -0
  88. package/dist/cjs/plugin/disableSuggestions/index.d.ts +3 -0
  89. package/dist/cjs/plugin/disableSuggestions/index.d.ts.map +1 -0
  90. package/dist/cjs/plugin/disableSuggestions/index.js +22 -0
  91. package/dist/cjs/plugin/disableSuggestions/index.js.map +1 -0
  92. package/dist/cjs/plugin/disabled/index.d.ts +7 -0
  93. package/dist/cjs/plugin/disabled/index.d.ts.map +1 -0
  94. package/dist/cjs/plugin/disabled/index.js +30 -0
  95. package/dist/cjs/plugin/disabled/index.js.map +1 -0
  96. package/dist/cjs/plugin/drainHttpServer/index.d.ts +8 -0
  97. package/dist/cjs/plugin/drainHttpServer/index.d.ts.map +1 -0
  98. package/dist/cjs/plugin/drainHttpServer/index.js +19 -0
  99. package/dist/cjs/plugin/drainHttpServer/index.js.map +1 -0
  100. package/dist/cjs/plugin/drainHttpServer/stoppable.d.ts +10 -0
  101. package/dist/cjs/plugin/drainHttpServer/stoppable.d.ts.map +1 -0
  102. package/dist/cjs/plugin/drainHttpServer/stoppable.js +54 -0
  103. package/dist/cjs/plugin/drainHttpServer/stoppable.js.map +1 -0
  104. package/dist/cjs/plugin/inlineTrace/index.d.ts +8 -0
  105. package/dist/cjs/plugin/inlineTrace/index.d.ts.map +1 -0
  106. package/dist/cjs/plugin/inlineTrace/index.js +70 -0
  107. package/dist/cjs/plugin/inlineTrace/index.js.map +1 -0
  108. package/dist/cjs/plugin/landingPage/default/getEmbeddedHTML.d.ts +4 -0
  109. package/dist/cjs/plugin/landingPage/default/getEmbeddedHTML.d.ts.map +1 -0
  110. package/dist/cjs/plugin/landingPage/default/getEmbeddedHTML.js +143 -0
  111. package/dist/cjs/plugin/landingPage/default/getEmbeddedHTML.js.map +1 -0
  112. package/dist/cjs/plugin/landingPage/default/index.d.ts +9 -0
  113. package/dist/cjs/plugin/landingPage/default/index.d.ts.map +1 -0
  114. package/dist/cjs/plugin/landingPage/default/index.js +146 -0
  115. package/dist/cjs/plugin/landingPage/default/index.js.map +1 -0
  116. package/dist/cjs/plugin/landingPage/default/types.d.ts +56 -0
  117. package/dist/cjs/plugin/landingPage/default/types.d.ts.map +1 -0
  118. package/dist/cjs/plugin/landingPage/default/types.js +3 -0
  119. package/dist/cjs/plugin/landingPage/default/types.js.map +1 -0
  120. package/dist/cjs/plugin/schemaIsSubgraph.d.ts +3 -0
  121. package/dist/cjs/plugin/schemaIsSubgraph.d.ts.map +1 -0
  122. package/dist/cjs/plugin/schemaIsSubgraph.js +23 -0
  123. package/dist/cjs/plugin/schemaIsSubgraph.js.map +1 -0
  124. package/dist/cjs/plugin/schemaReporting/index.d.ts +10 -0
  125. package/dist/cjs/plugin/schemaReporting/index.d.ts.map +1 -0
  126. package/dist/cjs/plugin/schemaReporting/index.js +104 -0
  127. package/dist/cjs/plugin/schemaReporting/index.js.map +1 -0
  128. package/dist/cjs/plugin/schemaReporting/schemaReporter.d.ts +33 -0
  129. package/dist/cjs/plugin/schemaReporting/schemaReporter.d.ts.map +1 -0
  130. package/dist/cjs/plugin/schemaReporting/schemaReporter.js +147 -0
  131. package/dist/cjs/plugin/schemaReporting/schemaReporter.js.map +1 -0
  132. package/dist/cjs/plugin/subscriptionCallback/index.d.ts +12 -0
  133. package/dist/cjs/plugin/subscriptionCallback/index.d.ts.map +1 -0
  134. package/dist/cjs/plugin/subscriptionCallback/index.js +434 -0
  135. package/dist/cjs/plugin/subscriptionCallback/index.js.map +1 -0
  136. package/dist/cjs/plugin/traceTreeBuilder.d.ts +25 -0
  137. package/dist/cjs/plugin/traceTreeBuilder.d.ts.map +1 -0
  138. package/dist/cjs/plugin/traceTreeBuilder.js +201 -0
  139. package/dist/cjs/plugin/traceTreeBuilder.js.map +1 -0
  140. package/dist/cjs/plugin/usageReporting/defaultSendOperationsAsTrace.d.ts +3 -0
  141. package/dist/cjs/plugin/usageReporting/defaultSendOperationsAsTrace.d.ts.map +1 -0
  142. package/dist/cjs/plugin/usageReporting/defaultSendOperationsAsTrace.js +44 -0
  143. package/dist/cjs/plugin/usageReporting/defaultSendOperationsAsTrace.js.map +1 -0
  144. package/dist/cjs/plugin/usageReporting/durationHistogram.d.ts +16 -0
  145. package/dist/cjs/plugin/usageReporting/durationHistogram.d.ts.map +1 -0
  146. package/dist/cjs/plugin/usageReporting/durationHistogram.js +68 -0
  147. package/dist/cjs/plugin/usageReporting/durationHistogram.js.map +1 -0
  148. package/dist/cjs/plugin/usageReporting/index.d.ts +3 -0
  149. package/dist/cjs/plugin/usageReporting/index.d.ts.map +1 -0
  150. package/dist/cjs/plugin/usageReporting/index.js +6 -0
  151. package/dist/cjs/plugin/usageReporting/index.js.map +1 -0
  152. package/dist/cjs/plugin/usageReporting/iterateOverTrace.d.ts +7 -0
  153. package/dist/cjs/plugin/usageReporting/iterateOverTrace.d.ts.map +1 -0
  154. package/dist/cjs/plugin/usageReporting/iterateOverTrace.js +81 -0
  155. package/dist/cjs/plugin/usageReporting/iterateOverTrace.js.map +1 -0
  156. package/dist/cjs/plugin/usageReporting/operationDerivedDataCache.d.ts +12 -0
  157. package/dist/cjs/plugin/usageReporting/operationDerivedDataCache.d.ts.map +1 -0
  158. package/dist/cjs/plugin/usageReporting/operationDerivedDataCache.js +33 -0
  159. package/dist/cjs/plugin/usageReporting/operationDerivedDataCache.js.map +1 -0
  160. package/dist/cjs/plugin/usageReporting/options.d.ts +60 -0
  161. package/dist/cjs/plugin/usageReporting/options.d.ts.map +1 -0
  162. package/dist/cjs/plugin/usageReporting/options.js +3 -0
  163. package/dist/cjs/plugin/usageReporting/options.js.map +1 -0
  164. package/dist/cjs/plugin/usageReporting/plugin.d.ts +7 -0
  165. package/dist/cjs/plugin/usageReporting/plugin.d.ts.map +1 -0
  166. package/dist/cjs/plugin/usageReporting/plugin.js +494 -0
  167. package/dist/cjs/plugin/usageReporting/plugin.js.map +1 -0
  168. package/dist/cjs/plugin/usageReporting/stats.d.ts +96 -0
  169. package/dist/cjs/plugin/usageReporting/stats.d.ts.map +1 -0
  170. package/dist/cjs/plugin/usageReporting/stats.js +289 -0
  171. package/dist/cjs/plugin/usageReporting/stats.js.map +1 -0
  172. package/dist/cjs/plugin/usageReporting/traceDetails.d.ts +4 -0
  173. package/dist/cjs/plugin/usageReporting/traceDetails.d.ts.map +1 -0
  174. package/dist/cjs/plugin/usageReporting/traceDetails.js +63 -0
  175. package/dist/cjs/plugin/usageReporting/traceDetails.js.map +1 -0
  176. package/dist/cjs/preventCsrf.d.ts +4 -0
  177. package/dist/cjs/preventCsrf.d.ts.map +1 -0
  178. package/dist/cjs/preventCsrf.js +41 -0
  179. package/dist/cjs/preventCsrf.js.map +1 -0
  180. package/dist/cjs/requestPipeline.d.ts +9 -0
  181. package/dist/cjs/requestPipeline.d.ts.map +1 -0
  182. package/dist/cjs/requestPipeline.js +371 -0
  183. package/dist/cjs/requestPipeline.js.map +1 -0
  184. package/dist/cjs/runHttpQuery.d.ts +15 -0
  185. package/dist/cjs/runHttpQuery.d.ts.map +1 -0
  186. package/dist/cjs/runHttpQuery.js +230 -0
  187. package/dist/cjs/runHttpQuery.js.map +1 -0
  188. package/dist/cjs/standalone/index.d.ts +25 -0
  189. package/dist/cjs/standalone/index.d.ts.map +1 -0
  190. package/dist/cjs/standalone/index.js +97 -0
  191. package/dist/cjs/standalone/index.js.map +1 -0
  192. package/dist/cjs/utils/HeaderMap.d.ts +8 -0
  193. package/dist/cjs/utils/HeaderMap.d.ts.map +1 -0
  194. package/dist/cjs/utils/HeaderMap.js +20 -0
  195. package/dist/cjs/utils/HeaderMap.js.map +1 -0
  196. package/dist/cjs/utils/UnreachableCaseError.d.ts +4 -0
  197. package/dist/cjs/utils/UnreachableCaseError.d.ts.map +1 -0
  198. package/dist/cjs/utils/UnreachableCaseError.js +10 -0
  199. package/dist/cjs/utils/UnreachableCaseError.js.map +1 -0
  200. package/dist/cjs/utils/computeCoreSchemaHash.d.ts +2 -0
  201. package/dist/cjs/utils/computeCoreSchemaHash.d.ts.map +1 -0
  202. package/dist/cjs/utils/computeCoreSchemaHash.js +8 -0
  203. package/dist/cjs/utils/computeCoreSchemaHash.js.map +1 -0
  204. package/dist/cjs/utils/invokeHooks.d.ts +7 -0
  205. package/dist/cjs/utils/invokeHooks.d.ts.map +1 -0
  206. package/dist/cjs/utils/invokeHooks.js +36 -0
  207. package/dist/cjs/utils/invokeHooks.js.map +1 -0
  208. package/dist/cjs/utils/isDefined.d.ts +2 -0
  209. package/dist/cjs/utils/isDefined.d.ts.map +1 -0
  210. package/dist/cjs/utils/isDefined.js +7 -0
  211. package/dist/cjs/utils/isDefined.js.map +1 -0
  212. package/dist/cjs/utils/makeGatewayGraphQLRequestContext.d.ts +5 -0
  213. package/dist/cjs/utils/makeGatewayGraphQLRequestContext.d.ts.map +1 -0
  214. package/dist/cjs/utils/makeGatewayGraphQLRequestContext.js +96 -0
  215. package/dist/cjs/utils/makeGatewayGraphQLRequestContext.js.map +1 -0
  216. package/dist/cjs/utils/resolvable.d.ts +7 -0
  217. package/dist/cjs/utils/resolvable.d.ts.map +1 -0
  218. package/dist/cjs/utils/resolvable.js +14 -0
  219. package/dist/cjs/utils/resolvable.js.map +1 -0
  220. package/dist/cjs/utils/schemaInstrumentation.d.ts +16 -0
  221. package/dist/cjs/utils/schemaInstrumentation.d.ts.map +1 -0
  222. package/dist/cjs/utils/schemaInstrumentation.js +75 -0
  223. package/dist/cjs/utils/schemaInstrumentation.js.map +1 -0
  224. package/dist/cjs/utils/schemaManager.d.ts +31 -0
  225. package/dist/cjs/utils/schemaManager.d.ts.map +1 -0
  226. package/dist/cjs/utils/schemaManager.js +103 -0
  227. package/dist/cjs/utils/schemaManager.js.map +1 -0
  228. package/dist/cjs/utils/urlForHttpServer.d.ts +3 -0
  229. package/dist/cjs/utils/urlForHttpServer.d.ts.map +1 -0
  230. package/dist/cjs/utils/urlForHttpServer.js +15 -0
  231. package/dist/cjs/utils/urlForHttpServer.js.map +1 -0
  232. package/dist/cjs/validationRules/NoIntrospection.d.ts +3 -0
  233. package/dist/cjs/validationRules/NoIntrospection.d.ts.map +1 -0
  234. package/dist/cjs/validationRules/NoIntrospection.js +19 -0
  235. package/dist/cjs/validationRules/NoIntrospection.js.map +1 -0
  236. package/dist/cjs/validationRules/RecursiveSelectionsLimit.d.ts +4 -0
  237. package/dist/cjs/validationRules/RecursiveSelectionsLimit.d.ts.map +1 -0
  238. package/dist/cjs/validationRules/RecursiveSelectionsLimit.js +150 -0
  239. package/dist/cjs/validationRules/RecursiveSelectionsLimit.js.map +1 -0
  240. package/dist/cjs/validationRules/index.d.ts +3 -0
  241. package/dist/cjs/validationRules/index.d.ts.map +1 -0
  242. package/dist/cjs/validationRules/index.js +9 -0
  243. package/dist/cjs/validationRules/index.js.map +1 -0
  244. package/dist/esm/ApolloServer.d.ts +126 -0
  245. package/dist/esm/ApolloServer.d.ts.map +1 -0
  246. package/dist/esm/ApolloServer.js +683 -0
  247. package/dist/esm/ApolloServer.js.map +1 -0
  248. package/dist/esm/cachePolicy.d.ts +3 -0
  249. package/dist/esm/cachePolicy.d.ts.map +1 -0
  250. package/dist/esm/cachePolicy.js +30 -0
  251. package/dist/esm/cachePolicy.js.map +1 -0
  252. package/dist/esm/determineApolloConfig.d.ts +4 -0
  253. package/dist/esm/determineApolloConfig.d.ts.map +1 -0
  254. package/dist/esm/determineApolloConfig.js +55 -0
  255. package/dist/esm/determineApolloConfig.js.map +1 -0
  256. package/dist/esm/errorNormalize.d.ts +12 -0
  257. package/dist/esm/errorNormalize.d.ts.map +1 -0
  258. package/dist/esm/errorNormalize.js +66 -0
  259. package/dist/esm/errorNormalize.js.map +1 -0
  260. package/dist/esm/errors/index.d.ts +16 -0
  261. package/dist/esm/errors/index.d.ts.map +1 -0
  262. package/dist/esm/errors/index.js +24 -0
  263. package/dist/esm/errors/index.js.map +1 -0
  264. package/dist/esm/externalTypes/constructor.d.ts +78 -0
  265. package/dist/esm/externalTypes/constructor.d.ts.map +1 -0
  266. package/dist/esm/externalTypes/constructor.js +2 -0
  267. package/dist/esm/externalTypes/constructor.js.map +1 -0
  268. package/dist/esm/externalTypes/context.d.ts +4 -0
  269. package/dist/esm/externalTypes/context.d.ts.map +1 -0
  270. package/dist/esm/externalTypes/context.js +2 -0
  271. package/dist/esm/externalTypes/context.js.map +1 -0
  272. package/dist/esm/externalTypes/graphql.d.ts +41 -0
  273. package/dist/esm/externalTypes/graphql.d.ts.map +1 -0
  274. package/dist/esm/externalTypes/graphql.js +2 -0
  275. package/dist/esm/externalTypes/graphql.js.map +1 -0
  276. package/dist/esm/externalTypes/http.d.ts +22 -0
  277. package/dist/esm/externalTypes/http.d.ts.map +1 -0
  278. package/dist/esm/externalTypes/http.js +2 -0
  279. package/dist/esm/externalTypes/http.js.map +1 -0
  280. package/dist/esm/externalTypes/incrementalDeliveryPolyfillAlpha2.d.ts +28 -0
  281. package/dist/esm/externalTypes/incrementalDeliveryPolyfillAlpha2.d.ts.map +1 -0
  282. package/dist/esm/externalTypes/incrementalDeliveryPolyfillAlpha2.js +2 -0
  283. package/dist/esm/externalTypes/incrementalDeliveryPolyfillAlpha2.js.map +1 -0
  284. package/dist/esm/externalTypes/incrementalDeliveryPolyfillAlpha9.d.ts +43 -0
  285. package/dist/esm/externalTypes/incrementalDeliveryPolyfillAlpha9.d.ts.map +1 -0
  286. package/dist/esm/externalTypes/incrementalDeliveryPolyfillAlpha9.js +2 -0
  287. package/dist/esm/externalTypes/incrementalDeliveryPolyfillAlpha9.js.map +1 -0
  288. package/dist/esm/externalTypes/index.d.ts +9 -0
  289. package/dist/esm/externalTypes/index.d.ts.map +1 -0
  290. package/dist/esm/externalTypes/index.js +2 -0
  291. package/dist/esm/externalTypes/index.js.map +1 -0
  292. package/dist/esm/externalTypes/plugins.d.ts +75 -0
  293. package/dist/esm/externalTypes/plugins.d.ts.map +1 -0
  294. package/dist/esm/externalTypes/plugins.js +2 -0
  295. package/dist/esm/externalTypes/plugins.js.map +1 -0
  296. package/dist/esm/externalTypes/requestPipeline.d.ts +50 -0
  297. package/dist/esm/externalTypes/requestPipeline.d.ts.map +1 -0
  298. package/dist/esm/externalTypes/requestPipeline.js +2 -0
  299. package/dist/esm/externalTypes/requestPipeline.js.map +1 -0
  300. package/dist/esm/generated/packageVersion.d.ts +2 -0
  301. package/dist/esm/generated/packageVersion.d.ts.map +1 -0
  302. package/dist/esm/generated/packageVersion.js +2 -0
  303. package/dist/esm/generated/packageVersion.js.map +1 -0
  304. package/dist/esm/httpBatching.d.ts +4 -0
  305. package/dist/esm/httpBatching.d.ts.map +1 -0
  306. package/dist/esm/httpBatching.js +55 -0
  307. package/dist/esm/httpBatching.js.map +1 -0
  308. package/dist/esm/incrementalDeliveryPolyfill.d.ts +82 -0
  309. package/dist/esm/incrementalDeliveryPolyfill.d.ts.map +1 -0
  310. package/dist/esm/incrementalDeliveryPolyfill.js +38 -0
  311. package/dist/esm/incrementalDeliveryPolyfill.js.map +1 -0
  312. package/dist/esm/index.d.ts +4 -0
  313. package/dist/esm/index.d.ts.map +1 -0
  314. package/dist/esm/index.js +4 -0
  315. package/dist/esm/index.js.map +1 -0
  316. package/dist/esm/internalErrorClasses.d.ts +28 -0
  317. package/dist/esm/internalErrorClasses.d.ts.map +1 -0
  318. package/dist/esm/internalErrorClasses.js +81 -0
  319. package/dist/esm/internalErrorClasses.js.map +1 -0
  320. package/dist/esm/internalPlugin.d.ts +9 -0
  321. package/dist/esm/internalPlugin.d.ts.map +1 -0
  322. package/dist/esm/internalPlugin.js +7 -0
  323. package/dist/esm/internalPlugin.js.map +1 -0
  324. package/dist/esm/package.json +1 -0
  325. package/dist/esm/plugin/cacheControl/index.d.ts +9 -0
  326. package/dist/esm/plugin/cacheControl/index.d.ts.map +1 -0
  327. package/dist/esm/plugin/cacheControl/index.js +220 -0
  328. package/dist/esm/plugin/cacheControl/index.js.map +1 -0
  329. package/dist/esm/plugin/disableSuggestions/index.d.ts +3 -0
  330. package/dist/esm/plugin/disableSuggestions/index.d.ts.map +1 -0
  331. package/dist/esm/plugin/disableSuggestions/index.js +19 -0
  332. package/dist/esm/plugin/disableSuggestions/index.js.map +1 -0
  333. package/dist/esm/plugin/disabled/index.d.ts +7 -0
  334. package/dist/esm/plugin/disabled/index.d.ts.map +1 -0
  335. package/dist/esm/plugin/disabled/index.js +23 -0
  336. package/dist/esm/plugin/disabled/index.js.map +1 -0
  337. package/dist/esm/plugin/drainHttpServer/index.d.ts +8 -0
  338. package/dist/esm/plugin/drainHttpServer/index.d.ts.map +1 -0
  339. package/dist/esm/plugin/drainHttpServer/index.js +16 -0
  340. package/dist/esm/plugin/drainHttpServer/index.js.map +1 -0
  341. package/dist/esm/plugin/drainHttpServer/stoppable.d.ts +10 -0
  342. package/dist/esm/plugin/drainHttpServer/stoppable.d.ts.map +1 -0
  343. package/dist/esm/plugin/drainHttpServer/stoppable.js +47 -0
  344. package/dist/esm/plugin/drainHttpServer/stoppable.js.map +1 -0
  345. package/dist/esm/plugin/inlineTrace/index.d.ts +8 -0
  346. package/dist/esm/plugin/inlineTrace/index.d.ts.map +1 -0
  347. package/dist/esm/plugin/inlineTrace/index.js +67 -0
  348. package/dist/esm/plugin/inlineTrace/index.js.map +1 -0
  349. package/dist/esm/plugin/landingPage/default/getEmbeddedHTML.d.ts +4 -0
  350. package/dist/esm/plugin/landingPage/default/getEmbeddedHTML.d.ts.map +1 -0
  351. package/dist/esm/plugin/landingPage/default/getEmbeddedHTML.js +138 -0
  352. package/dist/esm/plugin/landingPage/default/getEmbeddedHTML.js.map +1 -0
  353. package/dist/esm/plugin/landingPage/default/index.d.ts +9 -0
  354. package/dist/esm/plugin/landingPage/default/index.d.ts.map +1 -0
  355. package/dist/esm/plugin/landingPage/default/index.js +141 -0
  356. package/dist/esm/plugin/landingPage/default/index.js.map +1 -0
  357. package/dist/esm/plugin/landingPage/default/types.d.ts +56 -0
  358. package/dist/esm/plugin/landingPage/default/types.d.ts.map +1 -0
  359. package/dist/esm/plugin/landingPage/default/types.js +2 -0
  360. package/dist/esm/plugin/landingPage/default/types.js.map +1 -0
  361. package/dist/esm/plugin/schemaIsSubgraph.d.ts +3 -0
  362. package/dist/esm/plugin/schemaIsSubgraph.d.ts.map +1 -0
  363. package/dist/esm/plugin/schemaIsSubgraph.js +20 -0
  364. package/dist/esm/plugin/schemaIsSubgraph.js.map +1 -0
  365. package/dist/esm/plugin/schemaReporting/index.d.ts +10 -0
  366. package/dist/esm/plugin/schemaReporting/index.d.ts.map +1 -0
  367. package/dist/esm/plugin/schemaReporting/index.js +98 -0
  368. package/dist/esm/plugin/schemaReporting/index.js.map +1 -0
  369. package/dist/esm/plugin/schemaReporting/schemaReporter.d.ts +33 -0
  370. package/dist/esm/plugin/schemaReporting/schemaReporter.d.ts.map +1 -0
  371. package/dist/esm/plugin/schemaReporting/schemaReporter.js +143 -0
  372. package/dist/esm/plugin/schemaReporting/schemaReporter.js.map +1 -0
  373. package/dist/esm/plugin/subscriptionCallback/index.d.ts +12 -0
  374. package/dist/esm/plugin/subscriptionCallback/index.d.ts.map +1 -0
  375. package/dist/esm/plugin/subscriptionCallback/index.js +428 -0
  376. package/dist/esm/plugin/subscriptionCallback/index.js.map +1 -0
  377. package/dist/esm/plugin/traceTreeBuilder.d.ts +25 -0
  378. package/dist/esm/plugin/traceTreeBuilder.d.ts.map +1 -0
  379. package/dist/esm/plugin/traceTreeBuilder.js +196 -0
  380. package/dist/esm/plugin/traceTreeBuilder.js.map +1 -0
  381. package/dist/esm/plugin/usageReporting/defaultSendOperationsAsTrace.d.ts +3 -0
  382. package/dist/esm/plugin/usageReporting/defaultSendOperationsAsTrace.d.ts.map +1 -0
  383. package/dist/esm/plugin/usageReporting/defaultSendOperationsAsTrace.js +41 -0
  384. package/dist/esm/plugin/usageReporting/defaultSendOperationsAsTrace.js.map +1 -0
  385. package/dist/esm/plugin/usageReporting/durationHistogram.d.ts +16 -0
  386. package/dist/esm/plugin/usageReporting/durationHistogram.d.ts.map +1 -0
  387. package/dist/esm/plugin/usageReporting/durationHistogram.js +64 -0
  388. package/dist/esm/plugin/usageReporting/durationHistogram.js.map +1 -0
  389. package/dist/esm/plugin/usageReporting/index.d.ts +3 -0
  390. package/dist/esm/plugin/usageReporting/index.d.ts.map +1 -0
  391. package/dist/esm/plugin/usageReporting/index.js +2 -0
  392. package/dist/esm/plugin/usageReporting/index.js.map +1 -0
  393. package/dist/esm/plugin/usageReporting/iterateOverTrace.d.ts +7 -0
  394. package/dist/esm/plugin/usageReporting/iterateOverTrace.d.ts.map +1 -0
  395. package/dist/esm/plugin/usageReporting/iterateOverTrace.js +78 -0
  396. package/dist/esm/plugin/usageReporting/iterateOverTrace.js.map +1 -0
  397. package/dist/esm/plugin/usageReporting/operationDerivedDataCache.d.ts +12 -0
  398. package/dist/esm/plugin/usageReporting/operationDerivedDataCache.d.ts.map +1 -0
  399. package/dist/esm/plugin/usageReporting/operationDerivedDataCache.js +29 -0
  400. package/dist/esm/plugin/usageReporting/operationDerivedDataCache.js.map +1 -0
  401. package/dist/esm/plugin/usageReporting/options.d.ts +60 -0
  402. package/dist/esm/plugin/usageReporting/options.d.ts.map +1 -0
  403. package/dist/esm/plugin/usageReporting/options.js +2 -0
  404. package/dist/esm/plugin/usageReporting/options.js.map +1 -0
  405. package/dist/esm/plugin/usageReporting/plugin.d.ts +7 -0
  406. package/dist/esm/plugin/usageReporting/plugin.d.ts.map +1 -0
  407. package/dist/esm/plugin/usageReporting/plugin.js +487 -0
  408. package/dist/esm/plugin/usageReporting/plugin.js.map +1 -0
  409. package/dist/esm/plugin/usageReporting/stats.d.ts +96 -0
  410. package/dist/esm/plugin/usageReporting/stats.d.ts.map +1 -0
  411. package/dist/esm/plugin/usageReporting/stats.js +283 -0
  412. package/dist/esm/plugin/usageReporting/stats.js.map +1 -0
  413. package/dist/esm/plugin/usageReporting/traceDetails.d.ts +4 -0
  414. package/dist/esm/plugin/usageReporting/traceDetails.d.ts.map +1 -0
  415. package/dist/esm/plugin/usageReporting/traceDetails.js +60 -0
  416. package/dist/esm/plugin/usageReporting/traceDetails.js.map +1 -0
  417. package/dist/esm/preventCsrf.d.ts +4 -0
  418. package/dist/esm/preventCsrf.d.ts.map +1 -0
  419. package/dist/esm/preventCsrf.js +34 -0
  420. package/dist/esm/preventCsrf.js.map +1 -0
  421. package/dist/esm/requestPipeline.d.ts +9 -0
  422. package/dist/esm/requestPipeline.d.ts.map +1 -0
  423. package/dist/esm/requestPipeline.js +364 -0
  424. package/dist/esm/requestPipeline.js.map +1 -0
  425. package/dist/esm/runHttpQuery.d.ts +15 -0
  426. package/dist/esm/runHttpQuery.d.ts.map +1 -0
  427. package/dist/esm/runHttpQuery.js +221 -0
  428. package/dist/esm/runHttpQuery.js.map +1 -0
  429. package/dist/esm/standalone/index.d.ts +25 -0
  430. package/dist/esm/standalone/index.d.ts.map +1 -0
  431. package/dist/esm/standalone/index.js +91 -0
  432. package/dist/esm/standalone/index.js.map +1 -0
  433. package/dist/esm/utils/HeaderMap.d.ts +8 -0
  434. package/dist/esm/utils/HeaderMap.d.ts.map +1 -0
  435. package/dist/esm/utils/HeaderMap.js +16 -0
  436. package/dist/esm/utils/HeaderMap.js.map +1 -0
  437. package/dist/esm/utils/UnreachableCaseError.d.ts +4 -0
  438. package/dist/esm/utils/UnreachableCaseError.d.ts.map +1 -0
  439. package/dist/esm/utils/UnreachableCaseError.js +6 -0
  440. package/dist/esm/utils/UnreachableCaseError.js.map +1 -0
  441. package/dist/esm/utils/computeCoreSchemaHash.d.ts +2 -0
  442. package/dist/esm/utils/computeCoreSchemaHash.d.ts.map +1 -0
  443. package/dist/esm/utils/computeCoreSchemaHash.js +5 -0
  444. package/dist/esm/utils/computeCoreSchemaHash.js.map +1 -0
  445. package/dist/esm/utils/invokeHooks.d.ts +7 -0
  446. package/dist/esm/utils/invokeHooks.d.ts.map +1 -0
  447. package/dist/esm/utils/invokeHooks.js +31 -0
  448. package/dist/esm/utils/invokeHooks.js.map +1 -0
  449. package/dist/esm/utils/isDefined.d.ts +2 -0
  450. package/dist/esm/utils/isDefined.d.ts.map +1 -0
  451. package/dist/esm/utils/isDefined.js +4 -0
  452. package/dist/esm/utils/isDefined.js.map +1 -0
  453. package/dist/esm/utils/makeGatewayGraphQLRequestContext.d.ts +5 -0
  454. package/dist/esm/utils/makeGatewayGraphQLRequestContext.d.ts.map +1 -0
  455. package/dist/esm/utils/makeGatewayGraphQLRequestContext.js +93 -0
  456. package/dist/esm/utils/makeGatewayGraphQLRequestContext.js.map +1 -0
  457. package/dist/esm/utils/resolvable.d.ts +7 -0
  458. package/dist/esm/utils/resolvable.d.ts.map +1 -0
  459. package/dist/esm/utils/resolvable.js +12 -0
  460. package/dist/esm/utils/resolvable.js.map +1 -0
  461. package/dist/esm/utils/schemaInstrumentation.d.ts +16 -0
  462. package/dist/esm/utils/schemaInstrumentation.d.ts.map +1 -0
  463. package/dist/esm/utils/schemaInstrumentation.js +69 -0
  464. package/dist/esm/utils/schemaInstrumentation.js.map +1 -0
  465. package/dist/esm/utils/schemaManager.d.ts +31 -0
  466. package/dist/esm/utils/schemaManager.d.ts.map +1 -0
  467. package/dist/esm/utils/schemaManager.js +99 -0
  468. package/dist/esm/utils/schemaManager.js.map +1 -0
  469. package/dist/esm/utils/urlForHttpServer.d.ts +3 -0
  470. package/dist/esm/utils/urlForHttpServer.d.ts.map +1 -0
  471. package/dist/esm/utils/urlForHttpServer.js +12 -0
  472. package/dist/esm/utils/urlForHttpServer.js.map +1 -0
  473. package/dist/esm/validationRules/NoIntrospection.d.ts +3 -0
  474. package/dist/esm/validationRules/NoIntrospection.d.ts.map +1 -0
  475. package/dist/esm/validationRules/NoIntrospection.js +15 -0
  476. package/dist/esm/validationRules/NoIntrospection.js.map +1 -0
  477. package/dist/esm/validationRules/RecursiveSelectionsLimit.d.ts +4 -0
  478. package/dist/esm/validationRules/RecursiveSelectionsLimit.d.ts.map +1 -0
  479. package/dist/esm/validationRules/RecursiveSelectionsLimit.js +146 -0
  480. package/dist/esm/validationRules/RecursiveSelectionsLimit.js.map +1 -0
  481. package/dist/esm/validationRules/index.d.ts +3 -0
  482. package/dist/esm/validationRules/index.d.ts.map +1 -0
  483. package/dist/esm/validationRules/index.js +3 -0
  484. package/dist/esm/validationRules/index.js.map +1 -0
  485. package/errors/package.json +8 -0
  486. package/package.json +208 -0
  487. package/plugin/cacheControl/package.json +8 -0
  488. package/plugin/disableSuggestions/package.json +8 -0
  489. package/plugin/disabled/package.json +8 -0
  490. package/plugin/drainHttpServer/package.json +8 -0
  491. package/plugin/inlineTrace/package.json +8 -0
  492. package/plugin/landingPage/default/package.json +8 -0
  493. package/plugin/schemaReporting/package.json +8 -0
  494. package/plugin/subscriptionCallback/package.json +8 -0
  495. package/plugin/usageReporting/package.json +8 -0
  496. package/src/ApolloServer.ts +1456 -0
  497. package/src/cachePolicy.ts +33 -0
  498. package/src/determineApolloConfig.ts +95 -0
  499. package/src/errorNormalize.ts +114 -0
  500. package/src/errors/index.ts +33 -0
  501. package/src/externalTypes/constructor.ts +174 -0
  502. package/src/externalTypes/context.ts +18 -0
  503. package/src/externalTypes/graphql.ts +81 -0
  504. package/src/externalTypes/http.ts +44 -0
  505. package/src/externalTypes/incrementalDeliveryPolyfillAlpha2.ts +63 -0
  506. package/src/externalTypes/incrementalDeliveryPolyfillAlpha9.ts +82 -0
  507. package/src/externalTypes/index.ts +73 -0
  508. package/src/externalTypes/plugins.ts +222 -0
  509. package/src/externalTypes/requestPipeline.ts +123 -0
  510. package/src/generated/packageVersion.ts +1 -0
  511. package/src/httpBatching.ts +105 -0
  512. package/src/incrementalDeliveryPolyfill.ts +253 -0
  513. package/src/index.ts +4 -0
  514. package/src/internalErrorClasses.ts +123 -0
  515. package/src/internalPlugin.ts +42 -0
  516. package/src/plugin/cacheControl/index.ts +453 -0
  517. package/src/plugin/disableSuggestions/index.ts +23 -0
  518. package/src/plugin/disabled/index.ts +41 -0
  519. package/src/plugin/drainHttpServer/index.ts +42 -0
  520. package/src/plugin/drainHttpServer/stoppable.ts +109 -0
  521. package/src/plugin/inlineTrace/index.ts +156 -0
  522. package/src/plugin/landingPage/default/getEmbeddedHTML.ts +204 -0
  523. package/src/plugin/landingPage/default/index.ts +219 -0
  524. package/src/plugin/landingPage/default/types.ts +198 -0
  525. package/src/plugin/schemaIsSubgraph.ts +41 -0
  526. package/src/plugin/schemaReporting/generated/operations.d.ts +18359 -0
  527. package/src/plugin/schemaReporting/index.ts +198 -0
  528. package/src/plugin/schemaReporting/schemaReporter.ts +207 -0
  529. package/src/plugin/subscriptionCallback/index.ts +724 -0
  530. package/src/plugin/traceTreeBuilder.ts +356 -0
  531. package/src/plugin/usageReporting/defaultSendOperationsAsTrace.ts +74 -0
  532. package/src/plugin/usageReporting/durationHistogram.ts +87 -0
  533. package/src/plugin/usageReporting/index.ts +9 -0
  534. package/src/plugin/usageReporting/iterateOverTrace.ts +140 -0
  535. package/src/plugin/usageReporting/operationDerivedDataCache.ts +61 -0
  536. package/src/plugin/usageReporting/options.ts +414 -0
  537. package/src/plugin/usageReporting/plugin.ts +871 -0
  538. package/src/plugin/usageReporting/stats.ts +492 -0
  539. package/src/plugin/usageReporting/traceDetails.ts +96 -0
  540. package/src/preventCsrf.ts +99 -0
  541. package/src/requestPipeline.ts +821 -0
  542. package/src/runHttpQuery.ts +408 -0
  543. package/src/standalone/index.ts +155 -0
  544. package/src/utils/HeaderMap.ts +22 -0
  545. package/src/utils/UnreachableCaseError.ts +10 -0
  546. package/src/utils/computeCoreSchemaHash.ts +9 -0
  547. package/src/utils/invokeHooks.ts +53 -0
  548. package/src/utils/isDefined.ts +3 -0
  549. package/src/utils/makeGatewayGraphQLRequestContext.ts +197 -0
  550. package/src/utils/resolvable.ts +30 -0
  551. package/src/utils/schemaInstrumentation.ts +132 -0
  552. package/src/utils/schemaManager.ts +212 -0
  553. package/src/utils/urlForHttpServer.ts +21 -0
  554. package/src/validationRules/NoIntrospection.ts +27 -0
  555. package/src/validationRules/RecursiveSelectionsLimit.ts +198 -0
  556. package/src/validationRules/index.ts +5 -0
  557. package/standalone/package.json +8 -0
@@ -0,0 +1,156 @@
1
+ import { Trace } from '@apollo/usage-reporting-protobuf';
2
+ import { TraceTreeBuilder } from '../traceTreeBuilder.js';
3
+ import type { SendErrorsOptions } from '../usageReporting/index.js';
4
+ import { internalPlugin } from '../../internalPlugin.js';
5
+ import { schemaIsSubgraph } from '../schemaIsSubgraph.js';
6
+ import type { ApolloServerPlugin } from '../../externalTypes/index.js';
7
+
8
+ export interface ApolloServerPluginInlineTraceOptions {
9
+ /**
10
+ * By default, if a trace contains errors, the errors are included in the
11
+ * trace with the message `<masked>`. The errors are associated with specific
12
+ * paths in the operation, but do not include the original error message or
13
+ * any extensions such as the error `code`, as those details may contain your
14
+ * users' private data. The extension `maskedBy:
15
+ * 'ApolloServerPluginInlineTrace'` is added.
16
+ *
17
+ * If you'd like details about the error included in traces, set this option.
18
+ * This option can take several forms:
19
+ *
20
+ * - { masked: true }: mask error messages and omit extensions (DEFAULT)
21
+ * - { unmodified: true }: include all error messages and extensions
22
+ * - { transform: ... }: a custom function for transforming errors. This
23
+ * function receives a `GraphQLError` and may return a `GraphQLError`
24
+ * (either a new error, or its potentially-modified argument) or `null`.
25
+ * This error is used in the trace; if `null`, the error is not included in
26
+ * traces or error statistics.
27
+ */
28
+ includeErrors?: SendErrorsOptions;
29
+ /**
30
+ * This option is for internal use by `@apollo/server` only.
31
+ *
32
+ * By default we want to enable this plugin for subgraph schemas only, but we
33
+ * need to come up with our list of plugins before we have necessarily loaded
34
+ * the schema. So (unless the user installs this plugin or
35
+ * ApolloServerPluginInlineTraceDisabled themselves), `@apollo/server` always
36
+ * installs this plugin and uses this option to make sure traces are only
37
+ * included if the schema appears to be a subgraph.
38
+ */
39
+ __onlyIfSchemaIsSubgraph?: boolean;
40
+ }
41
+
42
+ // This ftv1 plugin produces a base64'd Trace protobuf containing only the
43
+ // durationNs, startTime, endTime, and root fields. This output is placed
44
+ // on the `extensions`.`ftv1` property of the response. The Apollo Gateway
45
+ // utilizes this data to construct the full trace and submit it to Apollo's
46
+ // usage reporting ingress.
47
+ export function ApolloServerPluginInlineTrace(
48
+ options: ApolloServerPluginInlineTraceOptions = Object.create(null),
49
+ ): ApolloServerPlugin {
50
+ let enabled: boolean | null = options.__onlyIfSchemaIsSubgraph ? null : true;
51
+ return internalPlugin({
52
+ __internal_plugin_id__: 'InlineTrace',
53
+ __is_disabled_plugin__: false,
54
+ async serverWillStart({ schema, logger }) {
55
+ // Handle the case that the plugin was implicitly installed. We only want it
56
+ // to actually be active if the schema appears to be federated. If you don't
57
+ // like the log line, just install `ApolloServerPluginInlineTrace()` in
58
+ // `plugins` yourself.
59
+ if (enabled === null) {
60
+ enabled = schemaIsSubgraph(schema);
61
+ if (enabled) {
62
+ logger.info(
63
+ 'Enabling inline tracing for this subgraph. To disable, use ' +
64
+ 'ApolloServerPluginInlineTraceDisabled.',
65
+ );
66
+ }
67
+ }
68
+ },
69
+ async requestDidStart({ request: { http }, metrics }) {
70
+ if (!enabled) {
71
+ return;
72
+ }
73
+
74
+ const treeBuilder = new TraceTreeBuilder({
75
+ maskedBy: 'ApolloServerPluginInlineTrace',
76
+ sendErrors: options.includeErrors,
77
+ });
78
+
79
+ // XXX Provide a mechanism to customize this logic.
80
+ if (http?.headers.get('apollo-federation-include-trace') !== 'ftv1') {
81
+ return;
82
+ }
83
+
84
+ // If some other (user-written?) plugin already decided that we are not
85
+ // capturing traces, then we should not capture traces.
86
+ if (metrics.captureTraces === false) {
87
+ return;
88
+ }
89
+
90
+ // Note that this will override any `fieldLevelInstrumentation` parameter
91
+ // to the usage reporting plugin for requests with the
92
+ // `apollo-federation-include-trace` header set.
93
+ metrics.captureTraces = true;
94
+
95
+ treeBuilder.startTiming();
96
+
97
+ return {
98
+ async executionDidStart() {
99
+ return {
100
+ willResolveField({ info }) {
101
+ return treeBuilder.willResolveField(info);
102
+ },
103
+ };
104
+ },
105
+
106
+ async didEncounterErrors({ errors }) {
107
+ treeBuilder.didEncounterErrors(errors);
108
+ },
109
+
110
+ async willSendResponse({ response }) {
111
+ // We record the end time at the latest possible time: right before serializing the trace.
112
+ // If we wait any longer, the time we record won't actually be sent anywhere!
113
+ treeBuilder.stopTiming();
114
+
115
+ // For now, we don't support inline traces on incremental delivery
116
+ // responses. (We could perhaps place the trace on the final chunk, or
117
+ // even deliver it bit by bit. For now, since Gateway does not support
118
+ // incremental delivery and Router does not pass through defers to
119
+ // subgraphs, this doesn't affect the "federated tracing" use case,
120
+ // though it does affect the ability to look at inline traces in other
121
+ // tools like Explorer.
122
+ if (response.body.kind === 'incremental') {
123
+ return;
124
+ }
125
+
126
+ // If we're in a gateway, include the query plan (and subgraph traces)
127
+ // in the inline trace. This is designed more for manually querying
128
+ // your graph while running locally to see what the query planner is
129
+ // doing rather than for running in production.
130
+ if (metrics.queryPlanTrace) {
131
+ treeBuilder.trace.queryPlan = metrics.queryPlanTrace;
132
+ }
133
+
134
+ const encodedUint8Array = Trace.encode(treeBuilder.trace).finish();
135
+ const encodedBuffer = Buffer.from(
136
+ encodedUint8Array,
137
+ encodedUint8Array.byteOffset,
138
+ encodedUint8Array.byteLength,
139
+ );
140
+
141
+ const extensions =
142
+ response.body.singleResult.extensions ||
143
+ (response.body.singleResult.extensions = Object.create(null));
144
+
145
+ // This should only happen if another plugin is using the same name-
146
+ // space within the `extensions` object and got to it before us.
147
+ if (typeof extensions.ftv1 !== 'undefined') {
148
+ throw new Error('The `ftv1` extension was already present.');
149
+ }
150
+
151
+ extensions.ftv1 = encodedBuffer.toString('base64');
152
+ },
153
+ };
154
+ },
155
+ });
156
+ }
@@ -0,0 +1,204 @@
1
+ import type {
2
+ ApolloServerPluginEmbeddedLandingPageLocalDefaultOptions,
3
+ ApolloServerPluginEmbeddedLandingPageProductionDefaultOptions,
4
+ } from './types';
5
+
6
+ // This function turns an object into a string and replaces
7
+ // <, >, &, ' with their unicode chars to avoid adding html tags to
8
+ // the landing page html that might be passed from the config.
9
+ // The only place these characters can appear in the output of
10
+ // JSON.stringify is within string literals, where they can equally
11
+ // well appear \u-escaped. This specifically means that
12
+ // `</script>` won't terminate the script block early.
13
+ // (Perhaps we should have done this instead of the triple-encoding
14
+ // of encodeConfig for the main landing page.)
15
+ function getConfigStringForHtml(config: object) {
16
+ return JSON.stringify(config)
17
+ .replace('<', '\\u003c')
18
+ .replace('>', '\\u003e')
19
+ .replace('&', '\\u0026')
20
+ .replace("'", '\\u0027');
21
+ }
22
+
23
+ export const getEmbeddedExplorerHTML = (
24
+ explorerCdnVersion: string,
25
+ config: ApolloServerPluginEmbeddedLandingPageProductionDefaultOptions,
26
+ apolloServerVersion: string,
27
+ nonce: string,
28
+ ) => {
29
+ interface EmbeddableExplorerOptions {
30
+ graphRef: string;
31
+ target: string;
32
+
33
+ initialState?: {
34
+ document?: string;
35
+ variables?: Record<string, any>;
36
+ headers?: Record<string, string>;
37
+ collectionId?: string;
38
+ operationId?: string;
39
+ displayOptions: {
40
+ docsPanelState?: 'open' | 'closed'; // default to 'open',
41
+ showHeadersAndEnvVars?: boolean; // default to `false`
42
+ theme?: 'dark' | 'light';
43
+ };
44
+ };
45
+ persistExplorerState?: boolean; // defaults to 'false'
46
+
47
+ endpointUrl: string;
48
+
49
+ includeCookies?: boolean; // defaults to 'false'
50
+
51
+ runTelemetry?: boolean;
52
+
53
+ allowDynamicStyles?: boolean; // defaults to 'true'
54
+ }
55
+ const productionLandingPageEmbedConfigOrDefault = {
56
+ displayOptions: {},
57
+ persistExplorerState: false,
58
+ runTelemetry: true,
59
+ ...(typeof config.embed === 'boolean' ? {} : config.embed),
60
+ };
61
+ const embeddedExplorerParams: Omit<
62
+ EmbeddableExplorerOptions,
63
+ 'endpointUrl'
64
+ > & { runtime: string } = {
65
+ graphRef: config.graphRef,
66
+ target: '#embeddableExplorer',
67
+ initialState: {
68
+ ...('document' in config || 'headers' in config || 'variables' in config
69
+ ? {
70
+ document: config.document,
71
+ headers: config.headers,
72
+ variables: config.variables,
73
+ }
74
+ : {}),
75
+ ...('collectionId' in config
76
+ ? {
77
+ collectionId: config.collectionId,
78
+ operationId: config.operationId,
79
+ }
80
+ : {}),
81
+ displayOptions: {
82
+ ...productionLandingPageEmbedConfigOrDefault.displayOptions,
83
+ },
84
+ },
85
+ persistExplorerState:
86
+ productionLandingPageEmbedConfigOrDefault.persistExplorerState,
87
+ includeCookies: config.includeCookies,
88
+ runtime: apolloServerVersion,
89
+ runTelemetry: productionLandingPageEmbedConfigOrDefault.runTelemetry,
90
+ allowDynamicStyles: false, // disabled for CSP - we add the iframe styles ourselves instead
91
+ };
92
+
93
+ return `
94
+ <div class="fallback">
95
+ <h1>Welcome to Apollo Server</h1>
96
+ <p>Apollo Explorer cannot be loaded; it appears that you might be offline.</p>
97
+ </div>
98
+ <style nonce=${nonce}>
99
+ iframe {
100
+ background-color: white;
101
+ height: 100%;
102
+ width: 100%;
103
+ border: none;
104
+ }
105
+ #embeddableExplorer {
106
+ width: 100vw;
107
+ height: 100vh;
108
+ position: absolute;
109
+ top: 0;
110
+ }
111
+ </style>
112
+ <div id="embeddableExplorer"></div>
113
+ <script nonce="${nonce}" src="https://embeddable-explorer.cdn.apollographql.com/${encodeURIComponent(
114
+ explorerCdnVersion,
115
+ )}/embeddable-explorer.umd.production.min.js?runtime=${encodeURIComponent(
116
+ apolloServerVersion,
117
+ )}"></script>
118
+ <script nonce="${nonce}">
119
+ var endpointUrl = window.location.href;
120
+ var embeddedExplorerConfig = ${getConfigStringForHtml(
121
+ embeddedExplorerParams,
122
+ )};
123
+ new window.EmbeddedExplorer({
124
+ ...embeddedExplorerConfig,
125
+ endpointUrl,
126
+ });
127
+ </script>
128
+ `;
129
+ };
130
+
131
+ export const getEmbeddedSandboxHTML = (
132
+ sandboxCdnVersion: string,
133
+ config: ApolloServerPluginEmbeddedLandingPageLocalDefaultOptions,
134
+ apolloServerVersion: string,
135
+ nonce: string,
136
+ ) => {
137
+ const localDevelopmentEmbedConfigOrDefault = {
138
+ runTelemetry: true,
139
+ endpointIsEditable: false,
140
+ initialState: {},
141
+ ...(typeof config.embed === 'boolean' ? {} : (config.embed ?? {})),
142
+ };
143
+ const embeddedSandboxConfig = {
144
+ target: '#embeddableSandbox',
145
+ initialState: {
146
+ ...('document' in config || 'headers' in config || 'variables' in config
147
+ ? {
148
+ document: config.document,
149
+ variables: config.variables,
150
+ headers: config.headers,
151
+ }
152
+ : {}),
153
+ ...('collectionId' in config
154
+ ? {
155
+ collectionId: config.collectionId,
156
+ operationId: config.operationId,
157
+ }
158
+ : {}),
159
+ includeCookies: config.includeCookies,
160
+ ...localDevelopmentEmbedConfigOrDefault.initialState,
161
+ },
162
+ hideCookieToggle: false,
163
+ endpointIsEditable: localDevelopmentEmbedConfigOrDefault.endpointIsEditable,
164
+ runtime: apolloServerVersion,
165
+ runTelemetry: localDevelopmentEmbedConfigOrDefault.runTelemetry,
166
+ allowDynamicStyles: false, // disabled for CSP - we add the iframe styles ourselves instead
167
+ };
168
+ return `
169
+ <div class="fallback">
170
+ <h1>Welcome to Apollo Server</h1>
171
+ <p>Apollo Sandbox cannot be loaded; it appears that you might be offline.</p>
172
+ </div>
173
+ <style nonce=${nonce}>
174
+ iframe {
175
+ background-color: white;
176
+ height: 100%;
177
+ width: 100%;
178
+ border: none;
179
+ }
180
+ #embeddableSandbox {
181
+ width: 100vw;
182
+ height: 100vh;
183
+ position: absolute;
184
+ top: 0;
185
+ }
186
+ </style>
187
+ <div id="embeddableSandbox"></div>
188
+ <script nonce="${nonce}" src="https://embeddable-sandbox.cdn.apollographql.com/${encodeURIComponent(
189
+ sandboxCdnVersion,
190
+ )}/embeddable-sandbox.umd.production.min.js?runtime=${encodeURIComponent(
191
+ apolloServerVersion,
192
+ )}"></script>
193
+ <script nonce="${nonce}">
194
+ var initialEndpoint = window.location.href;
195
+ var embeddedSandboxConfig = ${getConfigStringForHtml(embeddedSandboxConfig)};
196
+ new window.EmbeddedSandbox(
197
+ {
198
+ ...embeddedSandboxConfig,
199
+ initialEndpoint,
200
+ }
201
+ );
202
+ </script>
203
+ `;
204
+ };
@@ -0,0 +1,219 @@
1
+ import type {
2
+ ApolloServerPlugin,
3
+ BaseContext,
4
+ } from '../../../externalTypes/index.js';
5
+ import type { ImplicitlyInstallablePlugin } from '../../../ApolloServer.js';
6
+ import type {
7
+ ApolloServerPluginLandingPageLocalDefaultOptions,
8
+ ApolloServerPluginLandingPageProductionDefaultOptions,
9
+ LandingPageConfig,
10
+ } from './types.js';
11
+ import {
12
+ getEmbeddedExplorerHTML,
13
+ getEmbeddedSandboxHTML,
14
+ } from './getEmbeddedHTML.js';
15
+ import { packageVersion } from '../../../generated/packageVersion.js';
16
+ import { createHash } from '@apollo/utils.createhash';
17
+ import { v4 as uuidv4 } from 'uuid';
18
+
19
+ export type {
20
+ ApolloServerPluginLandingPageLocalDefaultOptions,
21
+ ApolloServerPluginLandingPageProductionDefaultOptions,
22
+ };
23
+
24
+ export function ApolloServerPluginLandingPageLocalDefault(
25
+ options: ApolloServerPluginLandingPageLocalDefaultOptions = {},
26
+ ): ApolloServerPlugin {
27
+ const { version, __internal_apolloStudioEnv__, ...rest } = {
28
+ // we default to Sandbox unless embed is specified as false
29
+ embed: true as const,
30
+ ...options,
31
+ };
32
+ return ApolloServerPluginLandingPageDefault(version, {
33
+ isProd: false,
34
+ apolloStudioEnv: __internal_apolloStudioEnv__,
35
+ ...rest,
36
+ });
37
+ }
38
+
39
+ export function ApolloServerPluginLandingPageProductionDefault(
40
+ options: ApolloServerPluginLandingPageProductionDefaultOptions = {},
41
+ ): ApolloServerPlugin {
42
+ const { version, __internal_apolloStudioEnv__, ...rest } = options;
43
+ return ApolloServerPluginLandingPageDefault(version, {
44
+ isProd: true,
45
+ apolloStudioEnv: __internal_apolloStudioEnv__,
46
+ ...rest,
47
+ });
48
+ }
49
+
50
+ // A triple encoding! Wow! First we use JSON.stringify to turn our object into a
51
+ // string. Then we encodeURIComponent so we don't have to stress about what
52
+ // would happen if the config contained `</script>`. Finally, we JSON.stringify
53
+ // it again, which in practice just wraps it in a pair of double quotes (since
54
+ // there shouldn't be any backslashes left after encodeURIComponent). The
55
+ // consumer of this needs to decodeURIComponent and then JSON.parse; there's
56
+ // only one JSON.parse because the outermost JSON string is parsed by the JS
57
+ // parser itself.
58
+ function encodeConfig(config: LandingPageConfig): string {
59
+ return JSON.stringify(encodeURIComponent(JSON.stringify(config)));
60
+ }
61
+
62
+ const getNonEmbeddedLandingPageHTML = (
63
+ cdnVersion: string,
64
+ config: LandingPageConfig,
65
+ apolloServerVersion: string,
66
+ nonce: string,
67
+ ) => {
68
+ const encodedConfig = encodeConfig(config);
69
+
70
+ return `
71
+ <div class="fallback">
72
+ <h1>Welcome to Apollo Server</h1>
73
+ <p>The full landing page cannot be loaded; it appears that you might be offline.</p>
74
+ </div>
75
+ <script nonce="${nonce}">window.landingPage = ${encodedConfig};</script>
76
+ <script nonce="${nonce}" src="https://apollo-server-landing-page.cdn.apollographql.com/${encodeURIComponent(
77
+ cdnVersion,
78
+ )}/static/js/main.js?runtime=${apolloServerVersion}"></script>`;
79
+ };
80
+
81
+ export const DEFAULT_EMBEDDED_EXPLORER_VERSION = 'v3';
82
+ export const DEFAULT_EMBEDDED_SANDBOX_VERSION = 'v2';
83
+ export const DEFAULT_APOLLO_SERVER_LANDING_PAGE_VERSION = '_latest';
84
+
85
+ // Helper for the two actual plugin functions.
86
+ function ApolloServerPluginLandingPageDefault<TContext extends BaseContext>(
87
+ maybeVersion: string | undefined,
88
+ config: LandingPageConfig & {
89
+ isProd: boolean;
90
+ apolloStudioEnv: 'staging' | 'prod' | undefined;
91
+ },
92
+ ): ImplicitlyInstallablePlugin<TContext> {
93
+ const explorerVersion = maybeVersion ?? DEFAULT_EMBEDDED_EXPLORER_VERSION;
94
+ const sandboxVersion = maybeVersion ?? DEFAULT_EMBEDDED_SANDBOX_VERSION;
95
+ const apolloServerLandingPageVersion =
96
+ maybeVersion ?? DEFAULT_APOLLO_SERVER_LANDING_PAGE_VERSION;
97
+ const apolloServerVersion = `@apollo/server@${packageVersion}`;
98
+
99
+ const scriptSafeList = [
100
+ 'https://apollo-server-landing-page.cdn.apollographql.com',
101
+ 'https://embeddable-sandbox.cdn.apollographql.com',
102
+ 'https://embeddable-explorer.cdn.apollographql.com',
103
+ ].join(' ');
104
+ const styleSafeList = [
105
+ 'https://apollo-server-landing-page.cdn.apollographql.com',
106
+ 'https://embeddable-sandbox.cdn.apollographql.com',
107
+ 'https://embeddable-explorer.cdn.apollographql.com',
108
+ 'https://fonts.googleapis.com',
109
+ ].join(' ');
110
+ const iframeSafeList = [
111
+ 'https://explorer.embed.apollographql.com',
112
+ 'https://sandbox.embed.apollographql.com',
113
+ 'https://embed.apollo.local:3000',
114
+ ].join(' ');
115
+
116
+ return {
117
+ __internal_installed_implicitly__: false,
118
+ async serverWillStart() {
119
+ return {
120
+ async renderLandingPage() {
121
+ const encodedASLandingPageVersion = encodeURIComponent(
122
+ apolloServerLandingPageVersion,
123
+ );
124
+ async function html() {
125
+ const nonce = createHash('sha256').update(uuidv4()).digest('hex');
126
+ const scriptCsp = `script-src 'self' 'nonce-${nonce}' ${scriptSafeList}`;
127
+ const styleCsp = `style-src 'nonce-${nonce}' ${styleSafeList}`;
128
+ const imageCsp = `img-src https://apollo-server-landing-page.cdn.apollographql.com`;
129
+ const manifestCsp = `manifest-src https://apollo-server-landing-page.cdn.apollographql.com`;
130
+ const frameCsp = `frame-src ${iframeSafeList}`;
131
+ return `
132
+ <!DOCTYPE html>
133
+ <html lang="en">
134
+ <head>
135
+ <meta charset="utf-8" />
136
+ <meta http-equiv="Content-Security-Policy" content="${scriptCsp}; ${styleCsp}; ${imageCsp}; ${manifestCsp}; ${frameCsp}" />
137
+ <link
138
+ rel="icon"
139
+ href="https://apollo-server-landing-page.cdn.apollographql.com/${encodedASLandingPageVersion}/assets/favicon.png"
140
+ />
141
+ <meta name="viewport" content="width=device-width,initial-scale=1" />
142
+ <link rel="preconnect" href="https://fonts.gstatic.com" />
143
+ <link
144
+ href="https://fonts.googleapis.com/css2?family=Source+Sans+Pro&display=swap"
145
+ rel="stylesheet"
146
+ />
147
+ <meta name="theme-color" content="#000000" />
148
+ <meta name="description" content="Apollo server landing page" />
149
+ <link
150
+ rel="apple-touch-icon"
151
+ href="https://apollo-server-landing-page.cdn.apollographql.com/${encodedASLandingPageVersion}/assets/favicon.png"
152
+ />
153
+ <link
154
+ rel="manifest"
155
+ href="https://apollo-server-landing-page.cdn.apollographql.com/${encodedASLandingPageVersion}/manifest.json"
156
+ />
157
+ <title>Apollo Server</title>
158
+ </head>
159
+ <body>
160
+ <noscript>You need to enable JavaScript to run this app.</noscript>
161
+ <div id="react-root">
162
+ <style nonce=${nonce}>
163
+ body {
164
+ margin: 0;
165
+ overflow-x: hidden;
166
+ overflow-y: hidden;
167
+ }
168
+ .fallback {
169
+ opacity: 0;
170
+ animation: fadeIn 1s 1s;
171
+ animation-iteration-count: 1;
172
+ animation-fill-mode: forwards;
173
+ padding: 1em;
174
+ }
175
+ @keyframes fadeIn {
176
+ 0% {opacity:0;}
177
+ 100% {opacity:1; }
178
+ }
179
+ </style>
180
+ ${
181
+ config.embed
182
+ ? 'graphRef' in config && config.graphRef
183
+ ? getEmbeddedExplorerHTML(
184
+ explorerVersion,
185
+ config,
186
+ apolloServerVersion,
187
+ nonce,
188
+ )
189
+ : !('graphRef' in config)
190
+ ? getEmbeddedSandboxHTML(
191
+ sandboxVersion,
192
+ config,
193
+ apolloServerVersion,
194
+ nonce,
195
+ )
196
+ : getNonEmbeddedLandingPageHTML(
197
+ apolloServerLandingPageVersion,
198
+ config,
199
+ apolloServerVersion,
200
+ nonce,
201
+ )
202
+ : getNonEmbeddedLandingPageHTML(
203
+ apolloServerLandingPageVersion,
204
+ config,
205
+ apolloServerVersion,
206
+ nonce,
207
+ )
208
+ }
209
+ </div>
210
+ </body>
211
+ </html>
212
+ `;
213
+ }
214
+ return { html };
215
+ },
216
+ };
217
+ },
218
+ };
219
+ }