diff --git a/gateway-js/package.json b/gateway-js/package.json index e9ce8a272..8933f0416 100644 --- a/gateway-js/package.json +++ b/gateway-js/package.json @@ -28,6 +28,7 @@ "@apollo/core-schema": "^0.2.0", "@apollo/federation": "file:../federation-js", "@apollo/query-planner": "file:../query-planner-js", + "@apollo/server-gateway-interface": "^1.0.1", "@apollo/utils.createhash": "^1.0.0", "@apollo/utils.fetcher": "^1.0.0", "@apollo/utils.logger": "^1.0.0", @@ -35,8 +36,6 @@ "@opentelemetry/api": "^1.0.1", "@types/node-fetch": "2.6.2", "apollo-reporting-protobuf": "^0.8.0 || ^3.0.0", - "apollo-server-core": "^2.23.0 || ^3.0.0", - "apollo-server-types": "^0.9.0 || ^3.0.0", "async-retry": "^1.3.3", "loglevel": "^1.6.1", "lru-cache": "^7.13.1", diff --git a/gateway-js/src/__tests__/executeQueryPlan.test.ts b/gateway-js/src/__tests__/executeQueryPlan.test.ts index b391a1a2b..e0fe015bc 100644 --- a/gateway-js/src/__tests__/executeQueryPlan.test.ts +++ b/gateway-js/src/__tests__/executeQueryPlan.test.ts @@ -1,13 +1,12 @@ import { buildClientSchema, getIntrospectionQuery, + GraphQLError, GraphQLObjectType, GraphQLSchema, print, } from 'graphql'; import gql from 'graphql-tag'; -import { GraphQLRequestContext, VariableValues } from 'apollo-server-types'; -import { AuthenticationError } from 'apollo-server-core'; import { buildOperationContext } from '../operationContext'; import { executeQueryPlan } from '../executeQueryPlan'; import { LocalGraphQLDataSource } from '../datasources/LocalGraphQLDataSource'; @@ -21,6 +20,7 @@ import { ApolloGateway } from '..'; import { ApolloServerBase as ApolloServer } from 'apollo-server-core'; import { getFederatedTestingSchema } from './execution-utils'; import { addResolversToSchema, GraphQLResolverMap } from '@apollo/subgraph/src/schema-helper'; +import {GatewayGraphQLRequestContext} from '@apollo/server-gateway-interface'; expect.addSnapshotSerializer(astSerializer); expect.addSnapshotSerializer(queryPlanSerializer); @@ -53,8 +53,8 @@ describe('executeQueryPlan', () => { }); function buildRequestContext( - variables: VariableValues = {}, - ): GraphQLRequestContext { + variables: Record = {}, + ): GatewayGraphQLRequestContext { // @ts-ignore return { cache: undefined as any, @@ -101,7 +101,16 @@ describe('executeQueryPlan', () => { overrideResolversInService('accounts', { RootQuery: { me() { - throw new AuthenticationError('Something went wrong'); + // Must use old constructor for graphql@15 compat on v0.x branch. + throw new GraphQLError( + 'Something went wrong', + undefined, + undefined, + undefined, + undefined, + undefined, + { code: 'UNAUTHENTICATED' }, + ); }, }, }); diff --git a/gateway-js/src/__tests__/execution-utils.ts b/gateway-js/src/__tests__/execution-utils.ts index 5cab581f4..1defafc77 100644 --- a/gateway-js/src/__tests__/execution-utils.ts +++ b/gateway-js/src/__tests__/execution-utils.ts @@ -2,7 +2,6 @@ import { GraphQLSchemaModule, GraphQLResolverMap, } from '@apollo/subgraph/src/schema-helper'; -import { GraphQLRequest, GraphQLExecutionResult } from 'apollo-server-types'; import type { Logger } from '@apollo/utils.logger'; import { composeAndValidate, @@ -22,6 +21,7 @@ import { queryPlanSerializer, astSerializer } from 'apollo-federation-integratio import gql from 'graphql-tag'; import { fixtures } from 'apollo-federation-integration-testsuite'; import { parse } from 'graphql'; +import { GatewayExecutionResult, GatewayGraphQLRequest } from '@apollo/server-gateway-interface'; const prettyFormat = require('pretty-format'); @@ -39,10 +39,10 @@ export function overrideResolversInService( } export async function execute( - request: GraphQLRequest, + request: GatewayGraphQLRequest, services: ServiceDefinitionModule[] = fixtures, logger: Logger = console, -): Promise { +): Promise { const serviceMap = Object.fromEntries( services.map(({ name, typeDefs, resolvers }) => { return [ diff --git a/gateway-js/src/__tests__/gateway/executor.test.ts b/gateway-js/src/__tests__/gateway/executor.test.ts index a6487be29..e02075ebb 100644 --- a/gateway-js/src/__tests__/gateway/executor.test.ts +++ b/gateway-js/src/__tests__/gateway/executor.test.ts @@ -48,7 +48,7 @@ describe('ApolloGateway executor', () => { variables: { first: '3' }, }, queryHash: 'hashed', - context: null, + context: {}, cache: {} as any, logger, }); @@ -83,7 +83,7 @@ describe('ApolloGateway executor', () => { document: gql(source), request: {}, queryHash: 'hashed', - context: null, + context: {}, cache: {} as any, logger, }); diff --git a/gateway-js/src/config.ts b/gateway-js/src/config.ts index de6c1a72d..a9f352a1f 100644 --- a/gateway-js/src/config.ts +++ b/gateway-js/src/config.ts @@ -1,6 +1,6 @@ import { GraphQLError, GraphQLSchema } from 'graphql'; import { HeadersInit } from 'node-fetch'; -import { GraphQLRequestContextExecutionDidStart } from 'apollo-server-types'; +import { GatewayGraphQLRequestContext } from '@apollo/server-gateway-interface'; import type { Logger } from '@apollo/utils.logger'; import { ServiceDefinition } from '@apollo/federation'; import { GraphQLDataSource } from './datasources/types'; @@ -20,9 +20,7 @@ export type Experimental_DidResolveQueryPlanCallback = ({ readonly queryPlan: QueryPlan; readonly serviceMap: ServiceMap; readonly operationContext: OperationContext; - readonly requestContext: GraphQLRequestContextExecutionDidStart< - Record - >; + readonly requestContext: GatewayGraphQLRequestContext; }) => void; interface ImplementingServiceLocation { diff --git a/gateway-js/src/datasources/LocalGraphQLDataSource.ts b/gateway-js/src/datasources/LocalGraphQLDataSource.ts index 5b89b1f8b..d7382cb3a 100644 --- a/gateway-js/src/datasources/LocalGraphQLDataSource.ts +++ b/gateway-js/src/datasources/LocalGraphQLDataSource.ts @@ -1,4 +1,4 @@ -import { GraphQLResponse } from 'apollo-server-types'; +import { GatewayGraphQLResponse } from '@apollo/server-gateway-interface'; import { GraphQLSchema, graphql, @@ -18,7 +18,7 @@ export class LocalGraphQLDataSource< async process({ request, context, - }: GraphQLDataSourceProcessOptions): Promise { + }: GraphQLDataSourceProcessOptions): Promise { return graphql({ schema: this.schema, source: request.query!, diff --git a/gateway-js/src/datasources/RemoteGraphQLDataSource.ts b/gateway-js/src/datasources/RemoteGraphQLDataSource.ts index 33f824419..ecfd4a1b4 100644 --- a/gateway-js/src/datasources/RemoteGraphQLDataSource.ts +++ b/gateway-js/src/datasources/RemoteGraphQLDataSource.ts @@ -1,12 +1,3 @@ -import { - GraphQLRequestContext, - GraphQLResponse, - ValueOrPromise, - GraphQLRequest, - CacheHint, - CacheScope, - CachePolicy, -} from 'apollo-server-types'; import { isObject } from '../utilities/predicates'; import { GraphQLDataSource, GraphQLDataSourceProcessOptions, GraphQLDataSourceRequestKind } from './types'; import { createHash } from '@apollo/utils.createhash'; @@ -15,6 +6,7 @@ import fetcher from 'make-fetch-happen'; import { Headers as NodeFetchHeaders, Request as NodeFetchRequest } from 'node-fetch'; import { Fetcher, FetcherRequestInit, FetcherResponse } from '@apollo/utils.fetcher'; import { GraphQLError, GraphQLErrorExtensions } from 'graphql'; +import { GatewayCacheHint, GatewayCachePolicy, GatewayGraphQLRequest, GatewayGraphQLRequestContext, GatewayGraphQLResponse } from '@apollo/server-gateway-interface'; export class RemoteGraphQLDataSource< TContext extends Record = Record, @@ -73,7 +65,7 @@ export class RemoteGraphQLDataSource< async process( options: GraphQLDataSourceProcessOptions, - ): Promise { + ): Promise { const { request, context: originalContext } = options; // Deal with a bit of a hairy situation in typings: when doing health checks // and schema checks we always pass in `{}` as the context even though it's @@ -157,7 +149,7 @@ export class RemoteGraphQLDataSource< // If APQ was enabled, we'll run the same request again, but add in the // previously omitted `query`. If APQ was NOT enabled, this is the first // request (non-APQ, all the way). - const requestWithQuery: GraphQLRequest = { + const requestWithQuery: GatewayGraphQLRequest = { query, ...requestWithoutQuery, }; @@ -171,9 +163,9 @@ export class RemoteGraphQLDataSource< } private async sendRequest( - request: GraphQLRequest, + request: GatewayGraphQLRequest, context: TContext, - ): Promise { + ): Promise { // This would represent an internal programming error since this shouldn't // be possible in the way that this method is invoked right now. if (!request.http) { @@ -226,7 +218,7 @@ export class RemoteGraphQLDataSource< public willSendRequest?( options: GraphQLDataSourceProcessOptions, - ): ValueOrPromise; + ): void | Promise; private async respond({ response, @@ -234,11 +226,11 @@ export class RemoteGraphQLDataSource< context, overallCachePolicy, }: { - response: GraphQLResponse; - request: GraphQLRequest; + response: GatewayGraphQLResponse; + request: GatewayGraphQLRequest; context: TContext; - overallCachePolicy: CachePolicy | null; - }): Promise { + overallCachePolicy: GatewayCachePolicy | null; + }): Promise { const processedResponse = typeof this.didReceiveResponse === 'function' ? await this.didReceiveResponse({ response, request, context }) @@ -253,16 +245,16 @@ export class RemoteGraphQLDataSource< // thus the overall response) is uncacheable. (If you don't like this, you // can tweak the `cache-control` header in your `didReceiveResponse` // method.) - const hint: CacheHint = { maxAge: 0 }; + const hint: GatewayCacheHint = { maxAge: 0 }; const maxAge = parsed['max-age']; if (typeof maxAge === 'string' && maxAge.match(/^[0-9]+$/)) { hint.maxAge = +maxAge; } if (parsed['private'] === true) { - hint.scope = CacheScope.Private; + hint.scope = 'PRIVATE'; } if (parsed['public'] === true) { - hint.scope = CacheScope.Public; + hint.scope = 'PUBLIC'; } overallCachePolicy.restrict(hint); } @@ -272,9 +264,9 @@ export class RemoteGraphQLDataSource< public didReceiveResponse?( requestContext: Required< - Pick, 'request' | 'response' | 'context'> + Pick, 'request' | 'response' | 'context'> >, - ): ValueOrPromise; + ): GatewayGraphQLResponse | Promise; public didEncounterError( error: Error, diff --git a/gateway-js/src/datasources/__tests__/LocalGraphQLDataSource.test.ts b/gateway-js/src/datasources/__tests__/LocalGraphQLDataSource.test.ts index 37911971a..2ffeb89fb 100644 --- a/gateway-js/src/datasources/__tests__/LocalGraphQLDataSource.test.ts +++ b/gateway-js/src/datasources/__tests__/LocalGraphQLDataSource.test.ts @@ -2,8 +2,8 @@ import { LocalGraphQLDataSource } from '../LocalGraphQLDataSource'; import { buildSubgraphSchema } from '@apollo/subgraph'; import gql from 'graphql-tag'; import { GraphQLResolverMap } from '@apollo/subgraph/src/schema-helper'; -import { GraphQLRequestContext } from 'apollo-server-types'; import { GraphQLDataSourceRequestKind } from '../types'; +import { GatewayGraphQLRequestContext } from '@apollo/server-gateway-interface'; describe('constructing requests', () => { it('accepts context', async () => { @@ -42,7 +42,7 @@ describe('constructing requests', () => { }, incomingRequestContext: { context: { userId: 2 }, - } as GraphQLRequestContext<{userId: number}>, + } as GatewayGraphQLRequestContext<{userId: number}>, context: { userId: 2 }, }); diff --git a/gateway-js/src/datasources/__tests__/RemoteGraphQLDataSource.test.ts b/gateway-js/src/datasources/__tests__/RemoteGraphQLDataSource.test.ts index c60c0345f..74dd887c2 100644 --- a/gateway-js/src/datasources/__tests__/RemoteGraphQLDataSource.test.ts +++ b/gateway-js/src/datasources/__tests__/RemoteGraphQLDataSource.test.ts @@ -1,10 +1,10 @@ import { RemoteGraphQLDataSource } from '../RemoteGraphQLDataSource'; import { Response, Headers } from 'node-fetch'; -import { GraphQLRequestContext } from 'apollo-server-types'; import { GraphQLDataSourceRequestKind } from '../types'; import { nockBeforeEach, nockAfterEach } from '../../__tests__/nockAssertions'; import nock from 'nock'; import { GraphQLError } from 'graphql'; +import { GatewayGraphQLRequestContext } from '@apollo/server-gateway-interface'; beforeEach(nockBeforeEach); afterEach(nockAfterEach); @@ -317,7 +317,7 @@ describe('didReceiveResponse', () => { response, }: Required< Pick< - GraphQLRequestContext, + GatewayGraphQLRequestContext, 'request' | 'response' | 'context' > >) { @@ -362,7 +362,7 @@ describe('didReceiveResponse', () => { response, }: Required< Pick< - GraphQLRequestContext, + GatewayGraphQLRequestContext, 'request' | 'response' | 'context' > >) { @@ -398,7 +398,7 @@ describe('didReceiveResponse', () => { response, }: Required< Pick< - GraphQLRequestContext, + GatewayGraphQLRequestContext, 'request' | 'response' | 'context' > >) { @@ -452,7 +452,7 @@ describe('didEncounterError', () => { }, incomingRequestContext: { context, - } as GraphQLRequestContext, + } as GatewayGraphQLRequestContext, context, }); diff --git a/gateway-js/src/datasources/types.ts b/gateway-js/src/datasources/types.ts index 259d35d8b..09129a8d0 100644 --- a/gateway-js/src/datasources/types.ts +++ b/gateway-js/src/datasources/types.ts @@ -1,11 +1,11 @@ -import { GraphQLResponse, GraphQLRequestContext } from 'apollo-server-types'; +import { GatewayGraphQLResponse, GatewayGraphQLRequestContext } from '@apollo/server-gateway-interface'; export interface GraphQLDataSource< TContext extends Record = Record, > { process( options: GraphQLDataSourceProcessOptions, - ): Promise; + ): Promise; } export enum GraphQLDataSourceRequestKind { @@ -20,7 +20,7 @@ export type GraphQLDataSourceProcessOptions< /** * The request to send to the subgraph. */ - request: GraphQLRequestContext['request']; + request: GatewayGraphQLRequestContext['request']; } & ( | { kind: GraphQLDataSourceRequestKind.INCOMING_OPERATION; @@ -33,10 +33,10 @@ export type GraphQLDataSourceProcessOptions< * to be treated as optional. */ incomingRequestContext: Omit< - GraphQLRequestContext, + GatewayGraphQLRequestContext, 'overallCachePolicy' > & - Pick>, 'overallCachePolicy'>; + Pick>, 'overallCachePolicy'>; /** * Equivalent to incomingRequestContext.context (provided here for * backwards compatibility): the object created by the Apollo Server @@ -45,7 +45,7 @@ export type GraphQLDataSourceProcessOptions< * @deprecated Use `incomingRequestContext.context` instead (after * checking `kind`). */ - context: GraphQLRequestContext['context']; + context: GatewayGraphQLRequestContext['context']; } | { kind: diff --git a/gateway-js/src/executeQueryPlan.ts b/gateway-js/src/executeQueryPlan.ts index 8edd6d78a..ce0424f38 100644 --- a/gateway-js/src/executeQueryPlan.ts +++ b/gateway-js/src/executeQueryPlan.ts @@ -1,8 +1,3 @@ -import { - GraphQLExecutionResult, - GraphQLRequestContext, - VariableValues, -} from 'apollo-server-types'; import { Headers } from 'node-fetch'; import { execute, @@ -34,6 +29,7 @@ import { deepMerge } from './utilities/deepMerge'; import { isNotNullOrUndefined } from './utilities/array'; import { SpanStatusCode } from "@opentelemetry/api"; import { OpenTelemetrySpanNames, tracer } from "./utilities/opentelemetry"; +import { GatewayGraphQLRequestContext, GatewayExecutionResult } from '@apollo/server-gateway-interface'; export type ServiceMap = { [serviceName: string]: GraphQLDataSource; @@ -41,20 +37,20 @@ export type ServiceMap = { type ResultMap = Record; -interface ExecutionContext { +interface ExecutionContext { queryPlan: QueryPlan; operationContext: OperationContext; serviceMap: ServiceMap; - requestContext: GraphQLRequestContext; + requestContext: GatewayGraphQLRequestContext; errors: GraphQLError[]; } -export async function executeQueryPlan( +export async function executeQueryPlan( queryPlan: QueryPlan, serviceMap: ServiceMap, - requestContext: GraphQLRequestContext, + requestContext: GatewayGraphQLRequestContext, operationContext: OperationContext, -): Promise { +): Promise { const logger = requestContext.logger || console; @@ -62,7 +58,7 @@ export async function executeQueryPlan( try { const errors: GraphQLError[] = []; - const context: ExecutionContext = { + const context: ExecutionContext = { queryPlan, operationContext, serviceMap, @@ -171,8 +167,8 @@ export async function executeQueryPlan( // we're going to ignore it, because it makes the code much simpler and more // typesafe. However, it doesn't actually ask for traces from the backend // service unless we are capturing traces for Studio. -async function executeNode( - context: ExecutionContext, +async function executeNode( + context: ExecutionContext, node: PlanNode, results: ResultMap | ResultMap[], path: ResponsePath, @@ -261,7 +257,7 @@ async function executeNode( export function shouldSkipFetchNode( node: FetchNode, - variables: VariableValues = {}, + variables: Record = {}, ) { if (!node.inclusionConditions) return false; @@ -284,8 +280,8 @@ export function shouldSkipFetchNode( }); } -async function executeFetch( - context: ExecutionContext, +async function executeFetch( + context: ExecutionContext, fetch: FetchNode, results: ResultMap | (ResultMap | null | undefined)[], _path: ResponsePath, @@ -404,7 +400,7 @@ async function executeFetch( } }); async function sendOperation( - context: ExecutionContext, + context: ExecutionContext, source: string, variables: Record, operationName: string | undefined, diff --git a/gateway-js/src/index.ts b/gateway-js/src/index.ts index 28cc58a74..b5f2d600b 100644 --- a/gateway-js/src/index.ts +++ b/gateway-js/src/index.ts @@ -1,9 +1,4 @@ import { deprecate } from 'util'; -import { GraphQLService, Unsubscriber } from 'apollo-server-core'; -import { - GraphQLExecutionResult, - GraphQLRequestContextExecutionDidStart, -} from 'apollo-server-types'; import type { Logger } from '@apollo/utils.logger'; import LRUCache from 'lru-cache'; import { @@ -68,6 +63,7 @@ import { LocalCompose, } from './supergraphManagers'; import { Fetcher } from '@apollo/utils.fetcher'; +import {GatewayInterface, GatewayUnsubscriber, GatewayGraphQLRequestContext, GatewayExecutionResult} from '@apollo/server-gateway-interface'; type DataSourceMap = { [serviceName: string]: { url?: string; dataSource: GraphQLDataSource }; @@ -123,7 +119,7 @@ interface GraphQLServiceEngineConfig { graphVariant?: string; } -export class ApolloGateway implements GraphQLService { +export class ApolloGateway implements GatewayInterface { public schema?: GraphQLSchema; private serviceMap: DataSourceMap = Object.create(null); private config: GatewayConfig; @@ -718,7 +714,7 @@ export class ApolloGateway implements GraphQLService { */ public onSchemaChange( callback: (schema: GraphQLSchema) => void, - ): Unsubscriber { + ): GatewayUnsubscriber { this.onSchemaChangeListeners.add(callback); return () => { @@ -731,7 +727,7 @@ export class ApolloGateway implements GraphQLService { apiSchema: GraphQLSchema; coreSupergraphSdl: string; }) => void, - ): Unsubscriber { + ): GatewayUnsubscriber { this.onSchemaLoadOrUpdateListeners.add(callback); return () => { @@ -811,9 +807,9 @@ export class ApolloGateway implements GraphQLService { // ApolloServerPluginUsageReporting) assumes that. In fact, errors talking to backends // are unlikely to show up as GraphQLErrors. Do we need to use // formatApolloErrors or something? - public executor = async ( - requestContext: GraphQLRequestContextExecutionDidStart, - ): Promise => { + public executor = async ( + requestContext: GatewayGraphQLRequestContext, + ): Promise => { const spanAttributes = requestContext.operationName ? { operationName: requestContext.operationName } : {}; @@ -891,7 +887,7 @@ export class ApolloGateway implements GraphQLService { }); } - const response = await executeQueryPlan( + const response = await executeQueryPlan( queryPlan, serviceMap, requestContext, @@ -948,8 +944,8 @@ export class ApolloGateway implements GraphQLService { ); }; - private validateIncomingRequest( - requestContext: GraphQLRequestContextExecutionDidStart, + private validateIncomingRequest( + requestContext: GatewayGraphQLRequestContext, operationContext: OperationContext, ) { return tracer.startActiveSpan(OpenTelemetrySpanNames.VALIDATE, (span) => { diff --git a/gateway-js/src/supergraphManagers/IntrospectAndCompose/loadServicesFromRemoteEndpoint.ts b/gateway-js/src/supergraphManagers/IntrospectAndCompose/loadServicesFromRemoteEndpoint.ts index 4f946add4..58cf300ae 100644 --- a/gateway-js/src/supergraphManagers/IntrospectAndCompose/loadServicesFromRemoteEndpoint.ts +++ b/gateway-js/src/supergraphManagers/IntrospectAndCompose/loadServicesFromRemoteEndpoint.ts @@ -1,10 +1,10 @@ -import { GraphQLRequest } from 'apollo-server-types'; import { parse } from 'graphql'; import { Headers, HeadersInit } from 'node-fetch'; import { GraphQLDataSource, GraphQLDataSourceRequestKind } from '../../datasources/types'; import { SERVICE_DEFINITION_QUERY } from '../..'; import { ServiceDefinitionUpdate, ServiceEndpointDefinition } from '../../config'; import { ServiceDefinition } from '@apollo/federation'; +import { GatewayGraphQLRequest } from '@apollo/server-gateway-interface'; export type Service = ServiceEndpointDefinition & { dataSource: GraphQLDataSource; @@ -35,7 +35,7 @@ export async function loadServicesFromRemoteEndpoint({ `Tried to load schema for '${name}' but no 'url' was specified.`); } - const request: GraphQLRequest = { + const request: GatewayGraphQLRequest = { query: SERVICE_DEFINITION_QUERY, http: { url, diff --git a/package-lock.json b/package-lock.json index 2b8526a7f..ea3266da4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -96,6 +96,7 @@ "@apollo/core-schema": "^0.2.0", "@apollo/federation": "file:../federation-js", "@apollo/query-planner": "file:../query-planner-js", + "@apollo/server-gateway-interface": "^1.0.1", "@apollo/utils.createhash": "^1.0.0", "@apollo/utils.fetcher": "^1.0.0", "@apollo/utils.logger": "^1.0.0", @@ -103,8 +104,6 @@ "@opentelemetry/api": "^1.0.1", "@types/node-fetch": "2.6.2", "apollo-reporting-protobuf": "^0.8.0 || ^3.0.0", - "apollo-server-core": "^2.23.0 || ^3.0.0", - "apollo-server-types": "^0.9.0 || ^3.0.0", "async-retry": "^1.3.3", "loglevel": "^1.6.1", "lru-cache": "^7.13.1", @@ -289,10 +288,65 @@ "resolved": "query-planner-js", "link": true }, + "node_modules/@apollo/server-gateway-interface": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@apollo/server-gateway-interface/-/server-gateway-interface-1.0.1.tgz", + "integrity": "sha512-YZ+bwSJJIYrIe22NDhF+DA+T9S1PV/sv3Ywp30Ao1RhtlXX7lBSRbu+meZxE1FNkC3nkbj63sUAUEmWiHO/jhw==", + "dependencies": { + "@apollo/usage-reporting-protobuf": "^4.0.0-alpha.1", + "@apollo/utils.fetcher": "^1.0.0", + "@apollo/utils.keyvaluecache": "^1.0.1", + "@apollo/utils.logger": "^1.0.0" + }, + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "graphql": "14.x || 15.x || 16.x" + } + }, "node_modules/@apollo/subgraph": { "resolved": "subgraph-js", "link": true }, + "node_modules/@apollo/usage-reporting-protobuf": { + "version": "4.0.0-alpha.1", + "resolved": "https://registry.npmjs.org/@apollo/usage-reporting-protobuf/-/usage-reporting-protobuf-4.0.0-alpha.1.tgz", + "integrity": "sha512-5pN8CQGxvGbpm58VK7EguR5d6rwZ+v2B9MddKM4DWnh87DuUEbu2xzcSBGaj2Yk2kVzro9YJ1J0vrQrQn8ESYQ==", + "dependencies": { + "@apollo/protobufjs": "1.2.4" + } + }, + "node_modules/@apollo/usage-reporting-protobuf/node_modules/@apollo/protobufjs": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.4.tgz", + "integrity": "sha512-npVJ9NVU/pynj+SCU+fambvTneJDyCnif738DnZ7pCxdDtzeEz7WkpSIq5wNUmWm5Td55N+S2xfqZ+WP4hDLng==", + "hasInstallScript": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.0", + "@types/node": "^10.1.0", + "long": "^4.0.0" + }, + "bin": { + "apollo-pbjs": "bin/pbjs", + "apollo-pbts": "bin/pbts" + } + }, + "node_modules/@apollo/usage-reporting-protobuf/node_modules/@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" + }, "node_modules/@apollo/utils.createhash": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@apollo/utils.createhash/-/utils.createhash-1.1.0.tgz", @@ -309,6 +363,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/@apollo/utils.dropunuseddefinitions/-/utils.dropunuseddefinitions-1.1.0.tgz", "integrity": "sha512-jU1XjMr6ec9pPoL+BFWzEPW7VHHulVdGKMkPAMiCigpVIT11VmCbnij0bWob8uS3ODJ65tZLYKAh/55vLw2rbg==", + "dev": true, "engines": { "node": ">=12.13.0" }, @@ -355,6 +410,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/@apollo/utils.printwithreducedwhitespace/-/utils.printwithreducedwhitespace-1.1.0.tgz", "integrity": "sha512-GfFSkAv3n1toDZ4V6u2d7L4xMwLA+lv+6hqXicMN9KELSJ9yy9RzuEXaX73c/Ry+GzRsBy/fdSUGayGqdHfT2Q==", + "dev": true, "engines": { "node": ">=12.13.0" }, @@ -366,6 +422,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/@apollo/utils.removealiases/-/utils.removealiases-1.0.0.tgz", "integrity": "sha512-6cM8sEOJW2LaGjL/0vHV0GtRaSekrPQR4DiywaApQlL9EdROASZU5PsQibe2MWeZCOhNrPRuHh4wDMwPsWTn8A==", + "dev": true, "engines": { "node": ">=12.13.0" }, @@ -377,6 +434,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/@apollo/utils.sortast/-/utils.sortast-1.1.0.tgz", "integrity": "sha512-VPlTsmUnOwzPK5yGZENN069y6uUHgeiSlpEhRnLFYwYNoJHsuJq2vXVwIaSmts015WTPa2fpz1inkLYByeuRQA==", + "dev": true, "dependencies": { "lodash.sortby": "^4.7.0" }, @@ -391,6 +449,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/@apollo/utils.stripsensitiveliterals/-/utils.stripsensitiveliterals-1.2.0.tgz", "integrity": "sha512-E41rDUzkz/cdikM5147d8nfCFVKovXxKBcjvLEQ7bjZm/cg9zEcXvS6vFY8ugTubI3fn6zoqo0CyU8zT+BGP9w==", + "dev": true, "engines": { "node": ">=12.13.0" }, @@ -402,6 +461,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/@apollo/utils.usagereporting/-/utils.usagereporting-1.0.0.tgz", "integrity": "sha512-5PL7hJMkTPmdo3oxPtigRrIyPxDk/ddrUryHPDaezL1lSFExpNzsDd2f1j0XJoHOg350GRd3LyD64caLA2PU1w==", + "dev": true, "dependencies": { "@apollo/utils.dropunuseddefinitions": "^1.1.0", "@apollo/utils.printwithreducedwhitespace": "^1.1.0", @@ -421,6 +481,7 @@ "version": "0.5.3", "resolved": "https://registry.npmjs.org/@apollographql/apollo-tools/-/apollo-tools-0.5.3.tgz", "integrity": "sha512-VcsXHfTFoCodDAgJZxN04GdFK1kqOhZQnQY/9Fa147P+I8xfvOSz5d+lKAPB+hwSgBNyd7ncAKGIs4+utbL+yA==", + "dev": true, "engines": { "node": ">=8", "npm": ">=6" @@ -433,6 +494,7 @@ "version": "1.6.29", "resolved": "https://registry.npmjs.org/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.29.tgz", "integrity": "sha512-xCcXpoz52rI4ksJSdOCxeOCn2DLocxwHf9dVT/Q90Pte1LX+LY+91SFtJF3KXVHH8kEin+g1KKCQPKBjZJfWNA==", + "dev": true, "dependencies": { "xss": "^1.0.8" } @@ -2244,6 +2306,7 @@ "version": "8.2.10", "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.2.10.tgz", "integrity": "sha512-wpg22seOTNfkIO8jFAgo8w1BsT3IS2OTMpkCNf+dvcKSP09SVidYCOliyWHgjDCmpCrvvSjOX855NUKDx/Biew==", + "dev": true, "license": "MIT", "dependencies": { "@graphql-tools/utils": "8.6.9", @@ -2256,12 +2319,14 @@ "node_modules/@graphql-tools/merge/node_modules/tslib": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true }, "node_modules/@graphql-tools/mock": { "version": "8.6.8", "resolved": "https://registry.npmjs.org/@graphql-tools/mock/-/mock-8.6.8.tgz", "integrity": "sha512-zBZApp8dDAovWKZ0rkZ4CwDT8Z+B35pIyRjeHkxvtKt5XyEAabEwkuSYMyFdsghDWwhMD/VAZ/6DXtA62Hnf+A==", + "dev": true, "dependencies": { "@graphql-tools/schema": "8.3.10", "@graphql-tools/utils": "8.6.9", @@ -2275,7 +2340,8 @@ "node_modules/@graphql-tools/mock/node_modules/tslib": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true }, "node_modules/@graphql-tools/optimize": { "version": "1.2.0", @@ -2358,6 +2424,7 @@ "version": "8.3.10", "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.3.10.tgz", "integrity": "sha512-tfhjSTi3OzheDrVzG7rkPZg2BbQjmZRLM2vvQoM2b1TnUwgUIbpAgcnf+AWDLRsoCOWlezeLgij1BLeAR0Q0jg==", + "dev": true, "license": "MIT", "dependencies": { "@graphql-tools/merge": "8.2.10", @@ -2372,7 +2439,8 @@ "node_modules/@graphql-tools/schema/node_modules/tslib": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true }, "node_modules/@graphql-tools/url-loader": { "version": "7.9.16", @@ -2405,6 +2473,7 @@ "version": "8.6.9", "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.6.9.tgz", "integrity": "sha512-Z1X4d4GCT81+8CSt6SgU4t1w1UAUsAIRb67mI90k/zAs+ArkB95iE3bWXuJCUmd1+r8DGGtmUNOArtd6wkt+OQ==", + "dev": true, "dependencies": { "tslib": "~2.3.0" }, @@ -2415,7 +2484,8 @@ "node_modules/@graphql-tools/utils/node_modules/tslib": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true }, "node_modules/@graphql-tools/wrap": { "version": "8.4.16", @@ -5446,6 +5516,7 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-3.3.2.tgz", "integrity": "sha512-L5TiS8E2Hn/Yz7SSnWIVbZw0ZfEIXZCa5VUiVxD9P53JvSrf4aStvsFDlGWPvpIdCR+aly2CfoB79B9/JjKFqg==", + "dev": true, "dependencies": { "@apollo/utils.keyvaluecache": "^1.0.1", "apollo-server-env": "^4.2.1" @@ -5485,6 +5556,7 @@ "version": "3.9.0", "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-3.9.0.tgz", "integrity": "sha512-WS54C33cTriDaBIcj7ijWv/fgeJICcrQKlP1Cn6pnZp/eumpMraezLeJ3gFWAXprOuR2E3fZe64lNlup0fMu8w==", + "dev": true, "dependencies": { "@apollo/utils.keyvaluecache": "^1.0.1", "@apollo/utils.logger": "^1.0.0", @@ -5520,6 +5592,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "dev": true, "engines": { "node": ">=12" } @@ -5539,6 +5612,7 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-3.3.1.tgz", "integrity": "sha512-xnZJ5QWs6FixHICXHxUfm+ZWqqxrNuPlQ+kj5m6RtEgIpekOPssH/SD9gf2B4HuWV0QozorrygwZnux8POvyPA==", + "dev": true, "engines": { "node": ">=12.0" }, @@ -5576,6 +5650,7 @@ "version": "3.6.1", "resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-3.6.1.tgz", "integrity": "sha512-bFpxzWO0LTTtSAkGVBeaAtnQXJ5ZCi8eaLN/eMSju8RByifmF3Kr6gAqcOZhOH/geQEt3Y6G8n3bR0eHTGxljQ==", + "dev": true, "dependencies": { "apollo-server-types": "^3.6.1" }, @@ -7461,7 +7536,8 @@ "node_modules/cssfilter": { "version": "0.0.10", "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz", - "integrity": "sha1-xtJnJjKi5cg+AT5oZKQs6N79IK4=" + "integrity": "sha1-xtJnJjKi5cg+AT5oZKQs6N79IK4=", + "dev": true }, "node_modules/cssom": { "version": "0.4.4", @@ -8586,7 +8662,8 @@ "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true }, "node_modules/fast-levenshtein": { "version": "2.0.6", @@ -13595,7 +13672,8 @@ "node_modules/lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==" + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", + "dev": true }, "node_modules/lodash.template": { "version": "4.5.0", @@ -20008,6 +20086,7 @@ "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, "bin": { "uuid": "dist/bin/uuid" } @@ -20049,6 +20128,7 @@ "version": "1.0.11", "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.11.tgz", "integrity": "sha512-41BrgH+dIbCFXClcSapVs5M6GkENd3gQOJpEfPDNa71LsUGMXDL0jMWpI/Rh7WhX+Aalfz2TTS3Zt5pUsbnhLg==", + "dev": true, "engines": { "node": ">=12" } @@ -20553,6 +20633,7 @@ "version": "1.0.11", "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.11.tgz", "integrity": "sha512-EimjrjThZeK2MO7WKR9mN5ZC1CSqivSl55wvUK5EtU6acf0rzEE1pN+9ZDrFXJ82BRp3JL38pPE6S4o/rpp1zQ==", + "dev": true, "dependencies": { "commander": "^2.20.3", "cssfilter": "0.0.10" @@ -20567,7 +20648,8 @@ "node_modules/xss/node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true }, "node_modules/xtend": { "version": "4.0.2", @@ -20767,6 +20849,7 @@ "@apollo/core-schema": "^0.2.0", "@apollo/federation": "file:../federation-js", "@apollo/query-planner": "file:../query-planner-js", + "@apollo/server-gateway-interface": "^1.0.1", "@apollo/utils.createhash": "^1.0.0", "@apollo/utils.fetcher": "^1.0.0", "@apollo/utils.logger": "^1.0.0", @@ -20774,8 +20857,6 @@ "@opentelemetry/api": "^1.0.1", "@types/node-fetch": "2.6.2", "apollo-reporting-protobuf": "^0.8.0 || ^3.0.0", - "apollo-server-core": "^2.23.0 || ^3.0.0", - "apollo-server-types": "^0.9.0 || ^3.0.0", "async-retry": "^1.3.3", "loglevel": "^1.6.1", "lru-cache": "^7.13.1", @@ -20865,12 +20946,58 @@ "pretty-format": "^28.0.0" } }, + "@apollo/server-gateway-interface": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@apollo/server-gateway-interface/-/server-gateway-interface-1.0.1.tgz", + "integrity": "sha512-YZ+bwSJJIYrIe22NDhF+DA+T9S1PV/sv3Ywp30Ao1RhtlXX7lBSRbu+meZxE1FNkC3nkbj63sUAUEmWiHO/jhw==", + "requires": { + "@apollo/usage-reporting-protobuf": "^4.0.0-alpha.1", + "@apollo/utils.fetcher": "^1.0.0", + "@apollo/utils.keyvaluecache": "^1.0.1", + "@apollo/utils.logger": "^1.0.0" + } + }, "@apollo/subgraph": { "version": "file:subgraph-js", "requires": { "@apollo/cache-control-types": "^1.0.2" } }, + "@apollo/usage-reporting-protobuf": { + "version": "4.0.0-alpha.1", + "resolved": "https://registry.npmjs.org/@apollo/usage-reporting-protobuf/-/usage-reporting-protobuf-4.0.0-alpha.1.tgz", + "integrity": "sha512-5pN8CQGxvGbpm58VK7EguR5d6rwZ+v2B9MddKM4DWnh87DuUEbu2xzcSBGaj2Yk2kVzro9YJ1J0vrQrQn8ESYQ==", + "requires": { + "@apollo/protobufjs": "1.2.4" + }, + "dependencies": { + "@apollo/protobufjs": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.4.tgz", + "integrity": "sha512-npVJ9NVU/pynj+SCU+fambvTneJDyCnif738DnZ7pCxdDtzeEz7WkpSIq5wNUmWm5Td55N+S2xfqZ+WP4hDLng==", + "requires": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/long": "^4.0.0", + "@types/node": "^10.1.0", + "long": "^4.0.0" + } + }, + "@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" + } + } + }, "@apollo/utils.createhash": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@apollo/utils.createhash/-/utils.createhash-1.1.0.tgz", @@ -20884,6 +21011,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/@apollo/utils.dropunuseddefinitions/-/utils.dropunuseddefinitions-1.1.0.tgz", "integrity": "sha512-jU1XjMr6ec9pPoL+BFWzEPW7VHHulVdGKMkPAMiCigpVIT11VmCbnij0bWob8uS3ODJ65tZLYKAh/55vLw2rbg==", + "dev": true, "requires": {} }, "@apollo/utils.fetcher": { @@ -20921,18 +21049,21 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/@apollo/utils.printwithreducedwhitespace/-/utils.printwithreducedwhitespace-1.1.0.tgz", "integrity": "sha512-GfFSkAv3n1toDZ4V6u2d7L4xMwLA+lv+6hqXicMN9KELSJ9yy9RzuEXaX73c/Ry+GzRsBy/fdSUGayGqdHfT2Q==", + "dev": true, "requires": {} }, "@apollo/utils.removealiases": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@apollo/utils.removealiases/-/utils.removealiases-1.0.0.tgz", "integrity": "sha512-6cM8sEOJW2LaGjL/0vHV0GtRaSekrPQR4DiywaApQlL9EdROASZU5PsQibe2MWeZCOhNrPRuHh4wDMwPsWTn8A==", + "dev": true, "requires": {} }, "@apollo/utils.sortast": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@apollo/utils.sortast/-/utils.sortast-1.1.0.tgz", "integrity": "sha512-VPlTsmUnOwzPK5yGZENN069y6uUHgeiSlpEhRnLFYwYNoJHsuJq2vXVwIaSmts015WTPa2fpz1inkLYByeuRQA==", + "dev": true, "requires": { "lodash.sortby": "^4.7.0" } @@ -20941,12 +21072,14 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/@apollo/utils.stripsensitiveliterals/-/utils.stripsensitiveliterals-1.2.0.tgz", "integrity": "sha512-E41rDUzkz/cdikM5147d8nfCFVKovXxKBcjvLEQ7bjZm/cg9zEcXvS6vFY8ugTubI3fn6zoqo0CyU8zT+BGP9w==", + "dev": true, "requires": {} }, "@apollo/utils.usagereporting": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@apollo/utils.usagereporting/-/utils.usagereporting-1.0.0.tgz", "integrity": "sha512-5PL7hJMkTPmdo3oxPtigRrIyPxDk/ddrUryHPDaezL1lSFExpNzsDd2f1j0XJoHOg350GRd3LyD64caLA2PU1w==", + "dev": true, "requires": { "@apollo/utils.dropunuseddefinitions": "^1.1.0", "@apollo/utils.printwithreducedwhitespace": "^1.1.0", @@ -20960,12 +21093,14 @@ "version": "0.5.3", "resolved": "https://registry.npmjs.org/@apollographql/apollo-tools/-/apollo-tools-0.5.3.tgz", "integrity": "sha512-VcsXHfTFoCodDAgJZxN04GdFK1kqOhZQnQY/9Fa147P+I8xfvOSz5d+lKAPB+hwSgBNyd7ncAKGIs4+utbL+yA==", + "dev": true, "requires": {} }, "@apollographql/graphql-playground-html": { "version": "1.6.29", "resolved": "https://registry.npmjs.org/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.29.tgz", "integrity": "sha512-xCcXpoz52rI4ksJSdOCxeOCn2DLocxwHf9dVT/Q90Pte1LX+LY+91SFtJF3KXVHH8kEin+g1KKCQPKBjZJfWNA==", + "dev": true, "requires": { "xss": "^1.0.8" } @@ -22357,6 +22492,7 @@ "version": "8.2.10", "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-8.2.10.tgz", "integrity": "sha512-wpg22seOTNfkIO8jFAgo8w1BsT3IS2OTMpkCNf+dvcKSP09SVidYCOliyWHgjDCmpCrvvSjOX855NUKDx/Biew==", + "dev": true, "requires": { "@graphql-tools/utils": "8.6.9", "tslib": "~2.3.0" @@ -22365,7 +22501,8 @@ "tslib": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true } } }, @@ -22373,6 +22510,7 @@ "version": "8.6.8", "resolved": "https://registry.npmjs.org/@graphql-tools/mock/-/mock-8.6.8.tgz", "integrity": "sha512-zBZApp8dDAovWKZ0rkZ4CwDT8Z+B35pIyRjeHkxvtKt5XyEAabEwkuSYMyFdsghDWwhMD/VAZ/6DXtA62Hnf+A==", + "dev": true, "requires": { "@graphql-tools/schema": "8.3.10", "@graphql-tools/utils": "8.6.9", @@ -22383,7 +22521,8 @@ "tslib": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true } } }, @@ -22458,6 +22597,7 @@ "version": "8.3.10", "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-8.3.10.tgz", "integrity": "sha512-tfhjSTi3OzheDrVzG7rkPZg2BbQjmZRLM2vvQoM2b1TnUwgUIbpAgcnf+AWDLRsoCOWlezeLgij1BLeAR0Q0jg==", + "dev": true, "requires": { "@graphql-tools/merge": "8.2.10", "@graphql-tools/utils": "8.6.9", @@ -22468,7 +22608,8 @@ "tslib": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true } } }, @@ -22499,6 +22640,7 @@ "version": "8.6.9", "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-8.6.9.tgz", "integrity": "sha512-Z1X4d4GCT81+8CSt6SgU4t1w1UAUsAIRb67mI90k/zAs+ArkB95iE3bWXuJCUmd1+r8DGGtmUNOArtd6wkt+OQ==", + "dev": true, "requires": { "tslib": "~2.3.0" }, @@ -22506,7 +22648,8 @@ "tslib": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true } } }, @@ -25014,6 +25157,7 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-3.3.2.tgz", "integrity": "sha512-L5TiS8E2Hn/Yz7SSnWIVbZw0ZfEIXZCa5VUiVxD9P53JvSrf4aStvsFDlGWPvpIdCR+aly2CfoB79B9/JjKFqg==", + "dev": true, "requires": { "@apollo/utils.keyvaluecache": "^1.0.1", "apollo-server-env": "^4.2.1" @@ -25050,6 +25194,7 @@ "version": "3.9.0", "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-3.9.0.tgz", "integrity": "sha512-WS54C33cTriDaBIcj7ijWv/fgeJICcrQKlP1Cn6pnZp/eumpMraezLeJ3gFWAXprOuR2E3fZe64lNlup0fMu8w==", + "dev": true, "requires": { "@apollo/utils.keyvaluecache": "^1.0.1", "@apollo/utils.logger": "^1.0.0", @@ -25078,7 +25223,8 @@ "whatwg-mimetype": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==" + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "dev": true } } }, @@ -25094,6 +25240,7 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-3.3.1.tgz", "integrity": "sha512-xnZJ5QWs6FixHICXHxUfm+ZWqqxrNuPlQ+kj5m6RtEgIpekOPssH/SD9gf2B4HuWV0QozorrygwZnux8POvyPA==", + "dev": true, "requires": {} }, "apollo-server-express": { @@ -25119,6 +25266,7 @@ "version": "3.6.1", "resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-3.6.1.tgz", "integrity": "sha512-bFpxzWO0LTTtSAkGVBeaAtnQXJ5ZCi8eaLN/eMSju8RByifmF3Kr6gAqcOZhOH/geQEt3Y6G8n3bR0eHTGxljQ==", + "dev": true, "requires": { "apollo-server-types": "^3.6.1" } @@ -26628,7 +26776,8 @@ "cssfilter": { "version": "0.0.10", "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz", - "integrity": "sha1-xtJnJjKi5cg+AT5oZKQs6N79IK4=" + "integrity": "sha1-xtJnJjKi5cg+AT5oZKQs6N79IK4=", + "dev": true }, "cssom": { "version": "0.4.4", @@ -27522,7 +27671,8 @@ "fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true }, "fast-levenshtein": { "version": "2.0.6", @@ -31458,7 +31608,8 @@ "lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==" + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", + "dev": true }, "lodash.template": { "version": "4.5.0", @@ -36489,7 +36640,8 @@ "uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true }, "v8-to-istanbul": { "version": "9.0.1", @@ -36524,7 +36676,8 @@ "value-or-promise": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/value-or-promise/-/value-or-promise-1.0.11.tgz", - "integrity": "sha512-41BrgH+dIbCFXClcSapVs5M6GkENd3gQOJpEfPDNa71LsUGMXDL0jMWpI/Rh7WhX+Aalfz2TTS3Zt5pUsbnhLg==" + "integrity": "sha512-41BrgH+dIbCFXClcSapVs5M6GkENd3gQOJpEfPDNa71LsUGMXDL0jMWpI/Rh7WhX+Aalfz2TTS3Zt5pUsbnhLg==", + "dev": true }, "vary": { "version": "1.1.2", @@ -36918,6 +37071,7 @@ "version": "1.0.11", "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.11.tgz", "integrity": "sha512-EimjrjThZeK2MO7WKR9mN5ZC1CSqivSl55wvUK5EtU6acf0rzEE1pN+9ZDrFXJ82BRp3JL38pPE6S4o/rpp1zQ==", + "dev": true, "requires": { "commander": "^2.20.3", "cssfilter": "0.0.10" @@ -36926,7 +37080,8 @@ "commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true } } },