@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.
- package/README.md +40 -0
- package/changes.json +46 -0
- package/dist/cjs/ApolloServer.d.ts +126 -0
- package/dist/cjs/ApolloServer.d.ts.map +1 -0
- package/dist/cjs/ApolloServer.js +726 -0
- package/dist/cjs/ApolloServer.js.map +1 -0
- package/dist/cjs/cachePolicy.d.ts +3 -0
- package/dist/cjs/cachePolicy.d.ts.map +1 -0
- package/dist/cjs/cachePolicy.js +33 -0
- package/dist/cjs/cachePolicy.js.map +1 -0
- package/dist/cjs/determineApolloConfig.d.ts +4 -0
- package/dist/cjs/determineApolloConfig.d.ts.map +1 -0
- package/dist/cjs/determineApolloConfig.js +58 -0
- package/dist/cjs/determineApolloConfig.js.map +1 -0
- package/dist/cjs/errorNormalize.d.ts +12 -0
- package/dist/cjs/errorNormalize.d.ts.map +1 -0
- package/dist/cjs/errorNormalize.js +71 -0
- package/dist/cjs/errorNormalize.js.map +1 -0
- package/dist/cjs/errors/index.d.ts +16 -0
- package/dist/cjs/errors/index.d.ts.map +1 -0
- package/dist/cjs/errors/index.js +28 -0
- package/dist/cjs/errors/index.js.map +1 -0
- package/dist/cjs/externalTypes/constructor.d.ts +78 -0
- package/dist/cjs/externalTypes/constructor.d.ts.map +1 -0
- package/dist/cjs/externalTypes/constructor.js +3 -0
- package/dist/cjs/externalTypes/constructor.js.map +1 -0
- package/dist/cjs/externalTypes/context.d.ts +4 -0
- package/dist/cjs/externalTypes/context.d.ts.map +1 -0
- package/dist/cjs/externalTypes/context.js +3 -0
- package/dist/cjs/externalTypes/context.js.map +1 -0
- package/dist/cjs/externalTypes/graphql.d.ts +41 -0
- package/dist/cjs/externalTypes/graphql.d.ts.map +1 -0
- package/dist/cjs/externalTypes/graphql.js +3 -0
- package/dist/cjs/externalTypes/graphql.js.map +1 -0
- package/dist/cjs/externalTypes/http.d.ts +22 -0
- package/dist/cjs/externalTypes/http.d.ts.map +1 -0
- package/dist/cjs/externalTypes/http.js +3 -0
- package/dist/cjs/externalTypes/http.js.map +1 -0
- package/dist/cjs/externalTypes/incrementalDeliveryPolyfillAlpha2.d.ts +28 -0
- package/dist/cjs/externalTypes/incrementalDeliveryPolyfillAlpha2.d.ts.map +1 -0
- package/dist/cjs/externalTypes/incrementalDeliveryPolyfillAlpha2.js +3 -0
- package/dist/cjs/externalTypes/incrementalDeliveryPolyfillAlpha2.js.map +1 -0
- package/dist/cjs/externalTypes/incrementalDeliveryPolyfillAlpha9.d.ts +43 -0
- package/dist/cjs/externalTypes/incrementalDeliveryPolyfillAlpha9.d.ts.map +1 -0
- package/dist/cjs/externalTypes/incrementalDeliveryPolyfillAlpha9.js +3 -0
- package/dist/cjs/externalTypes/incrementalDeliveryPolyfillAlpha9.js.map +1 -0
- package/dist/cjs/externalTypes/index.d.ts +9 -0
- package/dist/cjs/externalTypes/index.d.ts.map +1 -0
- package/dist/cjs/externalTypes/index.js +3 -0
- package/dist/cjs/externalTypes/index.js.map +1 -0
- package/dist/cjs/externalTypes/plugins.d.ts +75 -0
- package/dist/cjs/externalTypes/plugins.d.ts.map +1 -0
- package/dist/cjs/externalTypes/plugins.js +3 -0
- package/dist/cjs/externalTypes/plugins.js.map +1 -0
- package/dist/cjs/externalTypes/requestPipeline.d.ts +50 -0
- package/dist/cjs/externalTypes/requestPipeline.d.ts.map +1 -0
- package/dist/cjs/externalTypes/requestPipeline.js +3 -0
- package/dist/cjs/externalTypes/requestPipeline.js.map +1 -0
- package/dist/cjs/generated/packageVersion.d.ts +2 -0
- package/dist/cjs/generated/packageVersion.d.ts.map +1 -0
- package/dist/cjs/generated/packageVersion.js +5 -0
- package/dist/cjs/generated/packageVersion.js.map +1 -0
- package/dist/cjs/httpBatching.d.ts +4 -0
- package/dist/cjs/httpBatching.d.ts.map +1 -0
- package/dist/cjs/httpBatching.js +58 -0
- package/dist/cjs/httpBatching.js.map +1 -0
- package/dist/cjs/incrementalDeliveryPolyfill.d.ts +82 -0
- package/dist/cjs/incrementalDeliveryPolyfill.d.ts.map +1 -0
- package/dist/cjs/incrementalDeliveryPolyfill.js +74 -0
- package/dist/cjs/incrementalDeliveryPolyfill.js.map +1 -0
- package/dist/cjs/index.d.ts +4 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +23 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/internalErrorClasses.d.ts +28 -0
- package/dist/cjs/internalErrorClasses.d.ts.map +1 -0
- package/dist/cjs/internalErrorClasses.js +91 -0
- package/dist/cjs/internalErrorClasses.js.map +1 -0
- package/dist/cjs/internalPlugin.d.ts +9 -0
- package/dist/cjs/internalPlugin.d.ts.map +1 -0
- package/dist/cjs/internalPlugin.js +11 -0
- package/dist/cjs/internalPlugin.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/plugin/cacheControl/index.d.ts +9 -0
- package/dist/cjs/plugin/cacheControl/index.d.ts.map +1 -0
- package/dist/cjs/plugin/cacheControl/index.js +223 -0
- package/dist/cjs/plugin/cacheControl/index.js.map +1 -0
- package/dist/cjs/plugin/disableSuggestions/index.d.ts +3 -0
- package/dist/cjs/plugin/disableSuggestions/index.d.ts.map +1 -0
- package/dist/cjs/plugin/disableSuggestions/index.js +22 -0
- package/dist/cjs/plugin/disableSuggestions/index.js.map +1 -0
- package/dist/cjs/plugin/disabled/index.d.ts +7 -0
- package/dist/cjs/plugin/disabled/index.d.ts.map +1 -0
- package/dist/cjs/plugin/disabled/index.js +30 -0
- package/dist/cjs/plugin/disabled/index.js.map +1 -0
- package/dist/cjs/plugin/drainHttpServer/index.d.ts +8 -0
- package/dist/cjs/plugin/drainHttpServer/index.d.ts.map +1 -0
- package/dist/cjs/plugin/drainHttpServer/index.js +19 -0
- package/dist/cjs/plugin/drainHttpServer/index.js.map +1 -0
- package/dist/cjs/plugin/drainHttpServer/stoppable.d.ts +10 -0
- package/dist/cjs/plugin/drainHttpServer/stoppable.d.ts.map +1 -0
- package/dist/cjs/plugin/drainHttpServer/stoppable.js +54 -0
- package/dist/cjs/plugin/drainHttpServer/stoppable.js.map +1 -0
- package/dist/cjs/plugin/inlineTrace/index.d.ts +8 -0
- package/dist/cjs/plugin/inlineTrace/index.d.ts.map +1 -0
- package/dist/cjs/plugin/inlineTrace/index.js +70 -0
- package/dist/cjs/plugin/inlineTrace/index.js.map +1 -0
- package/dist/cjs/plugin/landingPage/default/getEmbeddedHTML.d.ts +4 -0
- package/dist/cjs/plugin/landingPage/default/getEmbeddedHTML.d.ts.map +1 -0
- package/dist/cjs/plugin/landingPage/default/getEmbeddedHTML.js +143 -0
- package/dist/cjs/plugin/landingPage/default/getEmbeddedHTML.js.map +1 -0
- package/dist/cjs/plugin/landingPage/default/index.d.ts +9 -0
- package/dist/cjs/plugin/landingPage/default/index.d.ts.map +1 -0
- package/dist/cjs/plugin/landingPage/default/index.js +146 -0
- package/dist/cjs/plugin/landingPage/default/index.js.map +1 -0
- package/dist/cjs/plugin/landingPage/default/types.d.ts +56 -0
- package/dist/cjs/plugin/landingPage/default/types.d.ts.map +1 -0
- package/dist/cjs/plugin/landingPage/default/types.js +3 -0
- package/dist/cjs/plugin/landingPage/default/types.js.map +1 -0
- package/dist/cjs/plugin/schemaIsSubgraph.d.ts +3 -0
- package/dist/cjs/plugin/schemaIsSubgraph.d.ts.map +1 -0
- package/dist/cjs/plugin/schemaIsSubgraph.js +23 -0
- package/dist/cjs/plugin/schemaIsSubgraph.js.map +1 -0
- package/dist/cjs/plugin/schemaReporting/index.d.ts +10 -0
- package/dist/cjs/plugin/schemaReporting/index.d.ts.map +1 -0
- package/dist/cjs/plugin/schemaReporting/index.js +104 -0
- package/dist/cjs/plugin/schemaReporting/index.js.map +1 -0
- package/dist/cjs/plugin/schemaReporting/schemaReporter.d.ts +33 -0
- package/dist/cjs/plugin/schemaReporting/schemaReporter.d.ts.map +1 -0
- package/dist/cjs/plugin/schemaReporting/schemaReporter.js +147 -0
- package/dist/cjs/plugin/schemaReporting/schemaReporter.js.map +1 -0
- package/dist/cjs/plugin/subscriptionCallback/index.d.ts +12 -0
- package/dist/cjs/plugin/subscriptionCallback/index.d.ts.map +1 -0
- package/dist/cjs/plugin/subscriptionCallback/index.js +434 -0
- package/dist/cjs/plugin/subscriptionCallback/index.js.map +1 -0
- package/dist/cjs/plugin/traceTreeBuilder.d.ts +25 -0
- package/dist/cjs/plugin/traceTreeBuilder.d.ts.map +1 -0
- package/dist/cjs/plugin/traceTreeBuilder.js +201 -0
- package/dist/cjs/plugin/traceTreeBuilder.js.map +1 -0
- package/dist/cjs/plugin/usageReporting/defaultSendOperationsAsTrace.d.ts +3 -0
- package/dist/cjs/plugin/usageReporting/defaultSendOperationsAsTrace.d.ts.map +1 -0
- package/dist/cjs/plugin/usageReporting/defaultSendOperationsAsTrace.js +44 -0
- package/dist/cjs/plugin/usageReporting/defaultSendOperationsAsTrace.js.map +1 -0
- package/dist/cjs/plugin/usageReporting/durationHistogram.d.ts +16 -0
- package/dist/cjs/plugin/usageReporting/durationHistogram.d.ts.map +1 -0
- package/dist/cjs/plugin/usageReporting/durationHistogram.js +68 -0
- package/dist/cjs/plugin/usageReporting/durationHistogram.js.map +1 -0
- package/dist/cjs/plugin/usageReporting/index.d.ts +3 -0
- package/dist/cjs/plugin/usageReporting/index.d.ts.map +1 -0
- package/dist/cjs/plugin/usageReporting/index.js +6 -0
- package/dist/cjs/plugin/usageReporting/index.js.map +1 -0
- package/dist/cjs/plugin/usageReporting/iterateOverTrace.d.ts +7 -0
- package/dist/cjs/plugin/usageReporting/iterateOverTrace.d.ts.map +1 -0
- package/dist/cjs/plugin/usageReporting/iterateOverTrace.js +81 -0
- package/dist/cjs/plugin/usageReporting/iterateOverTrace.js.map +1 -0
- package/dist/cjs/plugin/usageReporting/operationDerivedDataCache.d.ts +12 -0
- package/dist/cjs/plugin/usageReporting/operationDerivedDataCache.d.ts.map +1 -0
- package/dist/cjs/plugin/usageReporting/operationDerivedDataCache.js +33 -0
- package/dist/cjs/plugin/usageReporting/operationDerivedDataCache.js.map +1 -0
- package/dist/cjs/plugin/usageReporting/options.d.ts +60 -0
- package/dist/cjs/plugin/usageReporting/options.d.ts.map +1 -0
- package/dist/cjs/plugin/usageReporting/options.js +3 -0
- package/dist/cjs/plugin/usageReporting/options.js.map +1 -0
- package/dist/cjs/plugin/usageReporting/plugin.d.ts +7 -0
- package/dist/cjs/plugin/usageReporting/plugin.d.ts.map +1 -0
- package/dist/cjs/plugin/usageReporting/plugin.js +494 -0
- package/dist/cjs/plugin/usageReporting/plugin.js.map +1 -0
- package/dist/cjs/plugin/usageReporting/stats.d.ts +96 -0
- package/dist/cjs/plugin/usageReporting/stats.d.ts.map +1 -0
- package/dist/cjs/plugin/usageReporting/stats.js +289 -0
- package/dist/cjs/plugin/usageReporting/stats.js.map +1 -0
- package/dist/cjs/plugin/usageReporting/traceDetails.d.ts +4 -0
- package/dist/cjs/plugin/usageReporting/traceDetails.d.ts.map +1 -0
- package/dist/cjs/plugin/usageReporting/traceDetails.js +63 -0
- package/dist/cjs/plugin/usageReporting/traceDetails.js.map +1 -0
- package/dist/cjs/preventCsrf.d.ts +4 -0
- package/dist/cjs/preventCsrf.d.ts.map +1 -0
- package/dist/cjs/preventCsrf.js +41 -0
- package/dist/cjs/preventCsrf.js.map +1 -0
- package/dist/cjs/requestPipeline.d.ts +9 -0
- package/dist/cjs/requestPipeline.d.ts.map +1 -0
- package/dist/cjs/requestPipeline.js +371 -0
- package/dist/cjs/requestPipeline.js.map +1 -0
- package/dist/cjs/runHttpQuery.d.ts +15 -0
- package/dist/cjs/runHttpQuery.d.ts.map +1 -0
- package/dist/cjs/runHttpQuery.js +230 -0
- package/dist/cjs/runHttpQuery.js.map +1 -0
- package/dist/cjs/standalone/index.d.ts +25 -0
- package/dist/cjs/standalone/index.d.ts.map +1 -0
- package/dist/cjs/standalone/index.js +97 -0
- package/dist/cjs/standalone/index.js.map +1 -0
- package/dist/cjs/utils/HeaderMap.d.ts +8 -0
- package/dist/cjs/utils/HeaderMap.d.ts.map +1 -0
- package/dist/cjs/utils/HeaderMap.js +20 -0
- package/dist/cjs/utils/HeaderMap.js.map +1 -0
- package/dist/cjs/utils/UnreachableCaseError.d.ts +4 -0
- package/dist/cjs/utils/UnreachableCaseError.d.ts.map +1 -0
- package/dist/cjs/utils/UnreachableCaseError.js +10 -0
- package/dist/cjs/utils/UnreachableCaseError.js.map +1 -0
- package/dist/cjs/utils/computeCoreSchemaHash.d.ts +2 -0
- package/dist/cjs/utils/computeCoreSchemaHash.d.ts.map +1 -0
- package/dist/cjs/utils/computeCoreSchemaHash.js +8 -0
- package/dist/cjs/utils/computeCoreSchemaHash.js.map +1 -0
- package/dist/cjs/utils/invokeHooks.d.ts +7 -0
- package/dist/cjs/utils/invokeHooks.d.ts.map +1 -0
- package/dist/cjs/utils/invokeHooks.js +36 -0
- package/dist/cjs/utils/invokeHooks.js.map +1 -0
- package/dist/cjs/utils/isDefined.d.ts +2 -0
- package/dist/cjs/utils/isDefined.d.ts.map +1 -0
- package/dist/cjs/utils/isDefined.js +7 -0
- package/dist/cjs/utils/isDefined.js.map +1 -0
- package/dist/cjs/utils/makeGatewayGraphQLRequestContext.d.ts +5 -0
- package/dist/cjs/utils/makeGatewayGraphQLRequestContext.d.ts.map +1 -0
- package/dist/cjs/utils/makeGatewayGraphQLRequestContext.js +96 -0
- package/dist/cjs/utils/makeGatewayGraphQLRequestContext.js.map +1 -0
- package/dist/cjs/utils/resolvable.d.ts +7 -0
- package/dist/cjs/utils/resolvable.d.ts.map +1 -0
- package/dist/cjs/utils/resolvable.js +14 -0
- package/dist/cjs/utils/resolvable.js.map +1 -0
- package/dist/cjs/utils/schemaInstrumentation.d.ts +16 -0
- package/dist/cjs/utils/schemaInstrumentation.d.ts.map +1 -0
- package/dist/cjs/utils/schemaInstrumentation.js +75 -0
- package/dist/cjs/utils/schemaInstrumentation.js.map +1 -0
- package/dist/cjs/utils/schemaManager.d.ts +31 -0
- package/dist/cjs/utils/schemaManager.d.ts.map +1 -0
- package/dist/cjs/utils/schemaManager.js +103 -0
- package/dist/cjs/utils/schemaManager.js.map +1 -0
- package/dist/cjs/utils/urlForHttpServer.d.ts +3 -0
- package/dist/cjs/utils/urlForHttpServer.d.ts.map +1 -0
- package/dist/cjs/utils/urlForHttpServer.js +15 -0
- package/dist/cjs/utils/urlForHttpServer.js.map +1 -0
- package/dist/cjs/validationRules/NoIntrospection.d.ts +3 -0
- package/dist/cjs/validationRules/NoIntrospection.d.ts.map +1 -0
- package/dist/cjs/validationRules/NoIntrospection.js +19 -0
- package/dist/cjs/validationRules/NoIntrospection.js.map +1 -0
- package/dist/cjs/validationRules/RecursiveSelectionsLimit.d.ts +4 -0
- package/dist/cjs/validationRules/RecursiveSelectionsLimit.d.ts.map +1 -0
- package/dist/cjs/validationRules/RecursiveSelectionsLimit.js +150 -0
- package/dist/cjs/validationRules/RecursiveSelectionsLimit.js.map +1 -0
- package/dist/cjs/validationRules/index.d.ts +3 -0
- package/dist/cjs/validationRules/index.d.ts.map +1 -0
- package/dist/cjs/validationRules/index.js +9 -0
- package/dist/cjs/validationRules/index.js.map +1 -0
- package/dist/esm/ApolloServer.d.ts +126 -0
- package/dist/esm/ApolloServer.d.ts.map +1 -0
- package/dist/esm/ApolloServer.js +683 -0
- package/dist/esm/ApolloServer.js.map +1 -0
- package/dist/esm/cachePolicy.d.ts +3 -0
- package/dist/esm/cachePolicy.d.ts.map +1 -0
- package/dist/esm/cachePolicy.js +30 -0
- package/dist/esm/cachePolicy.js.map +1 -0
- package/dist/esm/determineApolloConfig.d.ts +4 -0
- package/dist/esm/determineApolloConfig.d.ts.map +1 -0
- package/dist/esm/determineApolloConfig.js +55 -0
- package/dist/esm/determineApolloConfig.js.map +1 -0
- package/dist/esm/errorNormalize.d.ts +12 -0
- package/dist/esm/errorNormalize.d.ts.map +1 -0
- package/dist/esm/errorNormalize.js +66 -0
- package/dist/esm/errorNormalize.js.map +1 -0
- package/dist/esm/errors/index.d.ts +16 -0
- package/dist/esm/errors/index.d.ts.map +1 -0
- package/dist/esm/errors/index.js +24 -0
- package/dist/esm/errors/index.js.map +1 -0
- package/dist/esm/externalTypes/constructor.d.ts +78 -0
- package/dist/esm/externalTypes/constructor.d.ts.map +1 -0
- package/dist/esm/externalTypes/constructor.js +2 -0
- package/dist/esm/externalTypes/constructor.js.map +1 -0
- package/dist/esm/externalTypes/context.d.ts +4 -0
- package/dist/esm/externalTypes/context.d.ts.map +1 -0
- package/dist/esm/externalTypes/context.js +2 -0
- package/dist/esm/externalTypes/context.js.map +1 -0
- package/dist/esm/externalTypes/graphql.d.ts +41 -0
- package/dist/esm/externalTypes/graphql.d.ts.map +1 -0
- package/dist/esm/externalTypes/graphql.js +2 -0
- package/dist/esm/externalTypes/graphql.js.map +1 -0
- package/dist/esm/externalTypes/http.d.ts +22 -0
- package/dist/esm/externalTypes/http.d.ts.map +1 -0
- package/dist/esm/externalTypes/http.js +2 -0
- package/dist/esm/externalTypes/http.js.map +1 -0
- package/dist/esm/externalTypes/incrementalDeliveryPolyfillAlpha2.d.ts +28 -0
- package/dist/esm/externalTypes/incrementalDeliveryPolyfillAlpha2.d.ts.map +1 -0
- package/dist/esm/externalTypes/incrementalDeliveryPolyfillAlpha2.js +2 -0
- package/dist/esm/externalTypes/incrementalDeliveryPolyfillAlpha2.js.map +1 -0
- package/dist/esm/externalTypes/incrementalDeliveryPolyfillAlpha9.d.ts +43 -0
- package/dist/esm/externalTypes/incrementalDeliveryPolyfillAlpha9.d.ts.map +1 -0
- package/dist/esm/externalTypes/incrementalDeliveryPolyfillAlpha9.js +2 -0
- package/dist/esm/externalTypes/incrementalDeliveryPolyfillAlpha9.js.map +1 -0
- package/dist/esm/externalTypes/index.d.ts +9 -0
- package/dist/esm/externalTypes/index.d.ts.map +1 -0
- package/dist/esm/externalTypes/index.js +2 -0
- package/dist/esm/externalTypes/index.js.map +1 -0
- package/dist/esm/externalTypes/plugins.d.ts +75 -0
- package/dist/esm/externalTypes/plugins.d.ts.map +1 -0
- package/dist/esm/externalTypes/plugins.js +2 -0
- package/dist/esm/externalTypes/plugins.js.map +1 -0
- package/dist/esm/externalTypes/requestPipeline.d.ts +50 -0
- package/dist/esm/externalTypes/requestPipeline.d.ts.map +1 -0
- package/dist/esm/externalTypes/requestPipeline.js +2 -0
- package/dist/esm/externalTypes/requestPipeline.js.map +1 -0
- package/dist/esm/generated/packageVersion.d.ts +2 -0
- package/dist/esm/generated/packageVersion.d.ts.map +1 -0
- package/dist/esm/generated/packageVersion.js +2 -0
- package/dist/esm/generated/packageVersion.js.map +1 -0
- package/dist/esm/httpBatching.d.ts +4 -0
- package/dist/esm/httpBatching.d.ts.map +1 -0
- package/dist/esm/httpBatching.js +55 -0
- package/dist/esm/httpBatching.js.map +1 -0
- package/dist/esm/incrementalDeliveryPolyfill.d.ts +82 -0
- package/dist/esm/incrementalDeliveryPolyfill.d.ts.map +1 -0
- package/dist/esm/incrementalDeliveryPolyfill.js +38 -0
- package/dist/esm/incrementalDeliveryPolyfill.js.map +1 -0
- package/dist/esm/index.d.ts +4 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +4 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/internalErrorClasses.d.ts +28 -0
- package/dist/esm/internalErrorClasses.d.ts.map +1 -0
- package/dist/esm/internalErrorClasses.js +81 -0
- package/dist/esm/internalErrorClasses.js.map +1 -0
- package/dist/esm/internalPlugin.d.ts +9 -0
- package/dist/esm/internalPlugin.d.ts.map +1 -0
- package/dist/esm/internalPlugin.js +7 -0
- package/dist/esm/internalPlugin.js.map +1 -0
- package/dist/esm/package.json +1 -0
- package/dist/esm/plugin/cacheControl/index.d.ts +9 -0
- package/dist/esm/plugin/cacheControl/index.d.ts.map +1 -0
- package/dist/esm/plugin/cacheControl/index.js +220 -0
- package/dist/esm/plugin/cacheControl/index.js.map +1 -0
- package/dist/esm/plugin/disableSuggestions/index.d.ts +3 -0
- package/dist/esm/plugin/disableSuggestions/index.d.ts.map +1 -0
- package/dist/esm/plugin/disableSuggestions/index.js +19 -0
- package/dist/esm/plugin/disableSuggestions/index.js.map +1 -0
- package/dist/esm/plugin/disabled/index.d.ts +7 -0
- package/dist/esm/plugin/disabled/index.d.ts.map +1 -0
- package/dist/esm/plugin/disabled/index.js +23 -0
- package/dist/esm/plugin/disabled/index.js.map +1 -0
- package/dist/esm/plugin/drainHttpServer/index.d.ts +8 -0
- package/dist/esm/plugin/drainHttpServer/index.d.ts.map +1 -0
- package/dist/esm/plugin/drainHttpServer/index.js +16 -0
- package/dist/esm/plugin/drainHttpServer/index.js.map +1 -0
- package/dist/esm/plugin/drainHttpServer/stoppable.d.ts +10 -0
- package/dist/esm/plugin/drainHttpServer/stoppable.d.ts.map +1 -0
- package/dist/esm/plugin/drainHttpServer/stoppable.js +47 -0
- package/dist/esm/plugin/drainHttpServer/stoppable.js.map +1 -0
- package/dist/esm/plugin/inlineTrace/index.d.ts +8 -0
- package/dist/esm/plugin/inlineTrace/index.d.ts.map +1 -0
- package/dist/esm/plugin/inlineTrace/index.js +67 -0
- package/dist/esm/plugin/inlineTrace/index.js.map +1 -0
- package/dist/esm/plugin/landingPage/default/getEmbeddedHTML.d.ts +4 -0
- package/dist/esm/plugin/landingPage/default/getEmbeddedHTML.d.ts.map +1 -0
- package/dist/esm/plugin/landingPage/default/getEmbeddedHTML.js +138 -0
- package/dist/esm/plugin/landingPage/default/getEmbeddedHTML.js.map +1 -0
- package/dist/esm/plugin/landingPage/default/index.d.ts +9 -0
- package/dist/esm/plugin/landingPage/default/index.d.ts.map +1 -0
- package/dist/esm/plugin/landingPage/default/index.js +141 -0
- package/dist/esm/plugin/landingPage/default/index.js.map +1 -0
- package/dist/esm/plugin/landingPage/default/types.d.ts +56 -0
- package/dist/esm/plugin/landingPage/default/types.d.ts.map +1 -0
- package/dist/esm/plugin/landingPage/default/types.js +2 -0
- package/dist/esm/plugin/landingPage/default/types.js.map +1 -0
- package/dist/esm/plugin/schemaIsSubgraph.d.ts +3 -0
- package/dist/esm/plugin/schemaIsSubgraph.d.ts.map +1 -0
- package/dist/esm/plugin/schemaIsSubgraph.js +20 -0
- package/dist/esm/plugin/schemaIsSubgraph.js.map +1 -0
- package/dist/esm/plugin/schemaReporting/index.d.ts +10 -0
- package/dist/esm/plugin/schemaReporting/index.d.ts.map +1 -0
- package/dist/esm/plugin/schemaReporting/index.js +98 -0
- package/dist/esm/plugin/schemaReporting/index.js.map +1 -0
- package/dist/esm/plugin/schemaReporting/schemaReporter.d.ts +33 -0
- package/dist/esm/plugin/schemaReporting/schemaReporter.d.ts.map +1 -0
- package/dist/esm/plugin/schemaReporting/schemaReporter.js +143 -0
- package/dist/esm/plugin/schemaReporting/schemaReporter.js.map +1 -0
- package/dist/esm/plugin/subscriptionCallback/index.d.ts +12 -0
- package/dist/esm/plugin/subscriptionCallback/index.d.ts.map +1 -0
- package/dist/esm/plugin/subscriptionCallback/index.js +428 -0
- package/dist/esm/plugin/subscriptionCallback/index.js.map +1 -0
- package/dist/esm/plugin/traceTreeBuilder.d.ts +25 -0
- package/dist/esm/plugin/traceTreeBuilder.d.ts.map +1 -0
- package/dist/esm/plugin/traceTreeBuilder.js +196 -0
- package/dist/esm/plugin/traceTreeBuilder.js.map +1 -0
- package/dist/esm/plugin/usageReporting/defaultSendOperationsAsTrace.d.ts +3 -0
- package/dist/esm/plugin/usageReporting/defaultSendOperationsAsTrace.d.ts.map +1 -0
- package/dist/esm/plugin/usageReporting/defaultSendOperationsAsTrace.js +41 -0
- package/dist/esm/plugin/usageReporting/defaultSendOperationsAsTrace.js.map +1 -0
- package/dist/esm/plugin/usageReporting/durationHistogram.d.ts +16 -0
- package/dist/esm/plugin/usageReporting/durationHistogram.d.ts.map +1 -0
- package/dist/esm/plugin/usageReporting/durationHistogram.js +64 -0
- package/dist/esm/plugin/usageReporting/durationHistogram.js.map +1 -0
- package/dist/esm/plugin/usageReporting/index.d.ts +3 -0
- package/dist/esm/plugin/usageReporting/index.d.ts.map +1 -0
- package/dist/esm/plugin/usageReporting/index.js +2 -0
- package/dist/esm/plugin/usageReporting/index.js.map +1 -0
- package/dist/esm/plugin/usageReporting/iterateOverTrace.d.ts +7 -0
- package/dist/esm/plugin/usageReporting/iterateOverTrace.d.ts.map +1 -0
- package/dist/esm/plugin/usageReporting/iterateOverTrace.js +78 -0
- package/dist/esm/plugin/usageReporting/iterateOverTrace.js.map +1 -0
- package/dist/esm/plugin/usageReporting/operationDerivedDataCache.d.ts +12 -0
- package/dist/esm/plugin/usageReporting/operationDerivedDataCache.d.ts.map +1 -0
- package/dist/esm/plugin/usageReporting/operationDerivedDataCache.js +29 -0
- package/dist/esm/plugin/usageReporting/operationDerivedDataCache.js.map +1 -0
- package/dist/esm/plugin/usageReporting/options.d.ts +60 -0
- package/dist/esm/plugin/usageReporting/options.d.ts.map +1 -0
- package/dist/esm/plugin/usageReporting/options.js +2 -0
- package/dist/esm/plugin/usageReporting/options.js.map +1 -0
- package/dist/esm/plugin/usageReporting/plugin.d.ts +7 -0
- package/dist/esm/plugin/usageReporting/plugin.d.ts.map +1 -0
- package/dist/esm/plugin/usageReporting/plugin.js +487 -0
- package/dist/esm/plugin/usageReporting/plugin.js.map +1 -0
- package/dist/esm/plugin/usageReporting/stats.d.ts +96 -0
- package/dist/esm/plugin/usageReporting/stats.d.ts.map +1 -0
- package/dist/esm/plugin/usageReporting/stats.js +283 -0
- package/dist/esm/plugin/usageReporting/stats.js.map +1 -0
- package/dist/esm/plugin/usageReporting/traceDetails.d.ts +4 -0
- package/dist/esm/plugin/usageReporting/traceDetails.d.ts.map +1 -0
- package/dist/esm/plugin/usageReporting/traceDetails.js +60 -0
- package/dist/esm/plugin/usageReporting/traceDetails.js.map +1 -0
- package/dist/esm/preventCsrf.d.ts +4 -0
- package/dist/esm/preventCsrf.d.ts.map +1 -0
- package/dist/esm/preventCsrf.js +34 -0
- package/dist/esm/preventCsrf.js.map +1 -0
- package/dist/esm/requestPipeline.d.ts +9 -0
- package/dist/esm/requestPipeline.d.ts.map +1 -0
- package/dist/esm/requestPipeline.js +364 -0
- package/dist/esm/requestPipeline.js.map +1 -0
- package/dist/esm/runHttpQuery.d.ts +15 -0
- package/dist/esm/runHttpQuery.d.ts.map +1 -0
- package/dist/esm/runHttpQuery.js +221 -0
- package/dist/esm/runHttpQuery.js.map +1 -0
- package/dist/esm/standalone/index.d.ts +25 -0
- package/dist/esm/standalone/index.d.ts.map +1 -0
- package/dist/esm/standalone/index.js +91 -0
- package/dist/esm/standalone/index.js.map +1 -0
- package/dist/esm/utils/HeaderMap.d.ts +8 -0
- package/dist/esm/utils/HeaderMap.d.ts.map +1 -0
- package/dist/esm/utils/HeaderMap.js +16 -0
- package/dist/esm/utils/HeaderMap.js.map +1 -0
- package/dist/esm/utils/UnreachableCaseError.d.ts +4 -0
- package/dist/esm/utils/UnreachableCaseError.d.ts.map +1 -0
- package/dist/esm/utils/UnreachableCaseError.js +6 -0
- package/dist/esm/utils/UnreachableCaseError.js.map +1 -0
- package/dist/esm/utils/computeCoreSchemaHash.d.ts +2 -0
- package/dist/esm/utils/computeCoreSchemaHash.d.ts.map +1 -0
- package/dist/esm/utils/computeCoreSchemaHash.js +5 -0
- package/dist/esm/utils/computeCoreSchemaHash.js.map +1 -0
- package/dist/esm/utils/invokeHooks.d.ts +7 -0
- package/dist/esm/utils/invokeHooks.d.ts.map +1 -0
- package/dist/esm/utils/invokeHooks.js +31 -0
- package/dist/esm/utils/invokeHooks.js.map +1 -0
- package/dist/esm/utils/isDefined.d.ts +2 -0
- package/dist/esm/utils/isDefined.d.ts.map +1 -0
- package/dist/esm/utils/isDefined.js +4 -0
- package/dist/esm/utils/isDefined.js.map +1 -0
- package/dist/esm/utils/makeGatewayGraphQLRequestContext.d.ts +5 -0
- package/dist/esm/utils/makeGatewayGraphQLRequestContext.d.ts.map +1 -0
- package/dist/esm/utils/makeGatewayGraphQLRequestContext.js +93 -0
- package/dist/esm/utils/makeGatewayGraphQLRequestContext.js.map +1 -0
- package/dist/esm/utils/resolvable.d.ts +7 -0
- package/dist/esm/utils/resolvable.d.ts.map +1 -0
- package/dist/esm/utils/resolvable.js +12 -0
- package/dist/esm/utils/resolvable.js.map +1 -0
- package/dist/esm/utils/schemaInstrumentation.d.ts +16 -0
- package/dist/esm/utils/schemaInstrumentation.d.ts.map +1 -0
- package/dist/esm/utils/schemaInstrumentation.js +69 -0
- package/dist/esm/utils/schemaInstrumentation.js.map +1 -0
- package/dist/esm/utils/schemaManager.d.ts +31 -0
- package/dist/esm/utils/schemaManager.d.ts.map +1 -0
- package/dist/esm/utils/schemaManager.js +99 -0
- package/dist/esm/utils/schemaManager.js.map +1 -0
- package/dist/esm/utils/urlForHttpServer.d.ts +3 -0
- package/dist/esm/utils/urlForHttpServer.d.ts.map +1 -0
- package/dist/esm/utils/urlForHttpServer.js +12 -0
- package/dist/esm/utils/urlForHttpServer.js.map +1 -0
- package/dist/esm/validationRules/NoIntrospection.d.ts +3 -0
- package/dist/esm/validationRules/NoIntrospection.d.ts.map +1 -0
- package/dist/esm/validationRules/NoIntrospection.js +15 -0
- package/dist/esm/validationRules/NoIntrospection.js.map +1 -0
- package/dist/esm/validationRules/RecursiveSelectionsLimit.d.ts +4 -0
- package/dist/esm/validationRules/RecursiveSelectionsLimit.d.ts.map +1 -0
- package/dist/esm/validationRules/RecursiveSelectionsLimit.js +146 -0
- package/dist/esm/validationRules/RecursiveSelectionsLimit.js.map +1 -0
- package/dist/esm/validationRules/index.d.ts +3 -0
- package/dist/esm/validationRules/index.d.ts.map +1 -0
- package/dist/esm/validationRules/index.js +3 -0
- package/dist/esm/validationRules/index.js.map +1 -0
- package/errors/package.json +8 -0
- package/package.json +208 -0
- package/plugin/cacheControl/package.json +8 -0
- package/plugin/disableSuggestions/package.json +8 -0
- package/plugin/disabled/package.json +8 -0
- package/plugin/drainHttpServer/package.json +8 -0
- package/plugin/inlineTrace/package.json +8 -0
- package/plugin/landingPage/default/package.json +8 -0
- package/plugin/schemaReporting/package.json +8 -0
- package/plugin/subscriptionCallback/package.json +8 -0
- package/plugin/usageReporting/package.json +8 -0
- package/src/ApolloServer.ts +1456 -0
- package/src/cachePolicy.ts +33 -0
- package/src/determineApolloConfig.ts +95 -0
- package/src/errorNormalize.ts +114 -0
- package/src/errors/index.ts +33 -0
- package/src/externalTypes/constructor.ts +174 -0
- package/src/externalTypes/context.ts +18 -0
- package/src/externalTypes/graphql.ts +81 -0
- package/src/externalTypes/http.ts +44 -0
- package/src/externalTypes/incrementalDeliveryPolyfillAlpha2.ts +63 -0
- package/src/externalTypes/incrementalDeliveryPolyfillAlpha9.ts +82 -0
- package/src/externalTypes/index.ts +73 -0
- package/src/externalTypes/plugins.ts +222 -0
- package/src/externalTypes/requestPipeline.ts +123 -0
- package/src/generated/packageVersion.ts +1 -0
- package/src/httpBatching.ts +105 -0
- package/src/incrementalDeliveryPolyfill.ts +253 -0
- package/src/index.ts +4 -0
- package/src/internalErrorClasses.ts +123 -0
- package/src/internalPlugin.ts +42 -0
- package/src/plugin/cacheControl/index.ts +453 -0
- package/src/plugin/disableSuggestions/index.ts +23 -0
- package/src/plugin/disabled/index.ts +41 -0
- package/src/plugin/drainHttpServer/index.ts +42 -0
- package/src/plugin/drainHttpServer/stoppable.ts +109 -0
- package/src/plugin/inlineTrace/index.ts +156 -0
- package/src/plugin/landingPage/default/getEmbeddedHTML.ts +204 -0
- package/src/plugin/landingPage/default/index.ts +219 -0
- package/src/plugin/landingPage/default/types.ts +198 -0
- package/src/plugin/schemaIsSubgraph.ts +41 -0
- package/src/plugin/schemaReporting/generated/operations.d.ts +18359 -0
- package/src/plugin/schemaReporting/index.ts +198 -0
- package/src/plugin/schemaReporting/schemaReporter.ts +207 -0
- package/src/plugin/subscriptionCallback/index.ts +724 -0
- package/src/plugin/traceTreeBuilder.ts +356 -0
- package/src/plugin/usageReporting/defaultSendOperationsAsTrace.ts +74 -0
- package/src/plugin/usageReporting/durationHistogram.ts +87 -0
- package/src/plugin/usageReporting/index.ts +9 -0
- package/src/plugin/usageReporting/iterateOverTrace.ts +140 -0
- package/src/plugin/usageReporting/operationDerivedDataCache.ts +61 -0
- package/src/plugin/usageReporting/options.ts +414 -0
- package/src/plugin/usageReporting/plugin.ts +871 -0
- package/src/plugin/usageReporting/stats.ts +492 -0
- package/src/plugin/usageReporting/traceDetails.ts +96 -0
- package/src/preventCsrf.ts +99 -0
- package/src/requestPipeline.ts +821 -0
- package/src/runHttpQuery.ts +408 -0
- package/src/standalone/index.ts +155 -0
- package/src/utils/HeaderMap.ts +22 -0
- package/src/utils/UnreachableCaseError.ts +10 -0
- package/src/utils/computeCoreSchemaHash.ts +9 -0
- package/src/utils/invokeHooks.ts +53 -0
- package/src/utils/isDefined.ts +3 -0
- package/src/utils/makeGatewayGraphQLRequestContext.ts +197 -0
- package/src/utils/resolvable.ts +30 -0
- package/src/utils/schemaInstrumentation.ts +132 -0
- package/src/utils/schemaManager.ts +212 -0
- package/src/utils/urlForHttpServer.ts +21 -0
- package/src/validationRules/NoIntrospection.ts +27 -0
- package/src/validationRules/RecursiveSelectionsLimit.ts +198 -0
- package/src/validationRules/index.ts +5 -0
- 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
|
+
}
|