@apollo/gateway 0.26.0-alpha.2 → 0.26.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/config.d.ts +2 -2
  3. package/dist/config.d.ts.map +1 -1
  4. package/dist/config.js.map +1 -1
  5. package/dist/datasources/RemoteGraphQLDataSource.d.ts.map +1 -1
  6. package/dist/datasources/RemoteGraphQLDataSource.js +6 -5
  7. package/dist/datasources/RemoteGraphQLDataSource.js.map +1 -1
  8. package/dist/executeQueryPlan.d.ts +1 -1
  9. package/dist/executeQueryPlan.d.ts.map +1 -1
  10. package/dist/index.d.ts +4 -15
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +15 -20
  13. package/dist/index.js.map +1 -1
  14. package/dist/loadServicesFromRemoteEndpoint.d.ts +8 -8
  15. package/dist/loadServicesFromRemoteEndpoint.d.ts.map +1 -1
  16. package/dist/loadServicesFromRemoteEndpoint.js +3 -3
  17. package/dist/loadServicesFromRemoteEndpoint.js.map +1 -1
  18. package/dist/operationContext.d.ts +17 -0
  19. package/dist/operationContext.d.ts.map +1 -0
  20. package/dist/{buildQueryPlan.js → operationContext.js} +3 -19
  21. package/dist/operationContext.js.map +1 -0
  22. package/dist/utilities/assert.d.ts +2 -0
  23. package/dist/utilities/assert.d.ts.map +1 -0
  24. package/dist/utilities/assert.js +10 -0
  25. package/dist/utilities/assert.js.map +1 -0
  26. package/dist/utilities/graphql.d.ts +0 -1
  27. package/dist/utilities/graphql.d.ts.map +1 -1
  28. package/dist/utilities/graphql.js +6 -9
  29. package/dist/utilities/graphql.js.map +1 -1
  30. package/package.json +8 -8
  31. package/src/__tests__/buildQueryPlan.test.ts +28 -76
  32. package/src/__tests__/executeQueryPlan.test.ts +22 -58
  33. package/src/__tests__/execution-utils.ts +8 -9
  34. package/src/__tests__/gateway/queryPlanCache.test.ts +3 -6
  35. package/src/__tests__/integration/configuration.test.ts +96 -0
  36. package/src/__tests__/integration/nockMocks.ts +1 -1
  37. package/src/__tests__/loadServicesFromRemoteEndpoint.test.ts +5 -1
  38. package/src/__tests__/loadSupergraphSdlFromStorage.test.ts +4 -4
  39. package/src/__tests__/queryPlanCucumber.test.ts +4 -8
  40. package/src/config.ts +8 -6
  41. package/src/datasources/RemoteGraphQLDataSource.ts +7 -6
  42. package/src/executeQueryPlan.ts +1 -1
  43. package/src/index.ts +16 -33
  44. package/src/loadServicesFromRemoteEndpoint.ts +12 -10
  45. package/src/{buildQueryPlan.ts → operationContext.ts} +6 -35
  46. package/src/utilities/assert.ts +14 -0
  47. package/src/utilities/graphql.ts +16 -9
  48. package/dist/buildQueryPlan.d.ts +0 -17
  49. package/dist/buildQueryPlan.d.ts.map +0 -1
  50. package/dist/buildQueryPlan.js.map +0 -1
@@ -10,10 +10,10 @@ import {
10
10
  NamedTypeNode,
11
11
  OperationDefinitionNode,
12
12
  parse,
13
- print,
14
13
  SelectionNode,
15
14
  TypeNode,
16
15
  } from 'graphql';
16
+ import { assert } from './assert';
17
17
 
18
18
  export function getResponseName(node: FieldNode): string {
19
19
  return node.alias ? node.alias.value : node.name.value;
@@ -42,13 +42,20 @@ export function astFromType(type: GraphQLType): TypeNode {
42
42
  }
43
43
  }
44
44
 
45
- export function printWithReducedWhitespace(ast: ASTNode): string {
46
- return print(ast)
47
- .replace(/\s+/g, ' ')
48
- .trim();
49
- }
50
-
45
+ /**
46
+ * For lack of a "home of federation utilities", this function is copy/pasted
47
+ * verbatim across the federation, gateway, and query-planner packages. Any changes
48
+ * made here should be reflected in the other two locations as well.
49
+ *
50
+ * @param source A string representing a FieldSet
51
+ * @returns A parsed FieldSet
52
+ */
51
53
  export function parseSelections(source: string): ReadonlyArray<SelectionNode> {
52
- return (parse(`query { ${source} }`)
53
- .definitions[0] as OperationDefinitionNode).selectionSet.selections;
54
+ const parsed = parse(`{${source}}`);
55
+ assert(
56
+ parsed.definitions.length === 1,
57
+ `Invalid FieldSet provided: '${source}'. FieldSets may not contain operations within them.`,
58
+ );
59
+ return (parsed.definitions[0] as OperationDefinitionNode).selectionSet
60
+ .selections;
54
61
  }
@@ -1,17 +0,0 @@
1
- import { DocumentNode, GraphQLSchema } from 'graphql';
2
- import { OperationContext } from './';
3
- import { QueryPlan, QueryPlannerPointer } from '@apollo/query-planner';
4
- export interface BuildQueryPlanOptions {
5
- autoFragmentization: boolean;
6
- }
7
- export declare function buildQueryPlan(operationContext: OperationContext, options?: BuildQueryPlanOptions): QueryPlan;
8
- interface BuildOperationContextOptions {
9
- schema: GraphQLSchema;
10
- operationDocument: DocumentNode;
11
- operationString: string;
12
- queryPlannerPointer: QueryPlannerPointer;
13
- operationName?: string;
14
- }
15
- export declare function buildOperationContext({ schema, operationDocument, operationString, queryPlannerPointer, operationName, }: BuildOperationContextOptions): OperationContext;
16
- export {};
17
- //# sourceMappingURL=buildQueryPlan.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"buildQueryPlan.d.ts","sourceRoot":"","sources":["../src/buildQueryPlan.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAGZ,aAAa,EAId,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,gBAAgB,EAAE,MAAM,IAAI,CAAC;AACtC,OAAO,EAAgB,SAAS,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAErF,MAAM,WAAW,qBAAqB;IACpC,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAED,wBAAgB,cAAc,CAC5B,gBAAgB,EAAE,gBAAgB,EAClC,OAAO,GAAE,qBAAsD,GAC9D,SAAS,CAOX;AAGD,UAAU,4BAA4B;IACpC,MAAM,EAAE,aAAa,CAAC;IACtB,iBAAiB,EAAE,YAAY,CAAC;IAChC,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,qBAAqB,CAAC,EACpC,MAAM,EACN,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,aAAa,GACd,EAAE,4BAA4B,GAAG,gBAAgB,CAuDjD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"buildQueryPlan.js","sourceRoot":"","sources":["../src/buildQueryPlan.ts"],"names":[],"mappings":";;;AAAA,qCAQiB;AAEjB,yDAAqF;AAMrF,SAAgB,cAAc,CAC5B,gBAAkC,EAClC,UAAiC,EAAE,mBAAmB,EAAE,KAAK,EAAE;IAG/D,OAAO,4BAAY,CACjB,gBAAgB,CAAC,mBAAmB,EACpC,gBAAgB,CAAC,eAAe,EAChC,OAAO,CACR,CAAC;AACJ,CAAC;AAVD,wCAUC;AASA,CAAC;AAEF,SAAgB,qBAAqB,CAAC,EACpC,MAAM,EACN,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,aAAa,GACgB;IAC7B,IAAI,SAA8C,CAAC;IACnD,IAAI,cAAc,GAAW,CAAC,CAAC;IAC/B,MAAM,SAAS,GAEX,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACxB,iBAAiB,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;QACjD,QAAQ,UAAU,CAAC,IAAI,EAAE;YACvB,KAAK,cAAI,CAAC,oBAAoB;gBAC5B,cAAc,EAAE,CAAC;gBACjB,IAAI,CAAC,aAAa,IAAI,cAAc,GAAG,CAAC,EAAE;oBACxC,MAAM,IAAI,sBAAY,CACpB,gDAAgD;wBAC9C,sBAAsB,CACzB,CAAC;iBACH;gBACD,IACE,CAAC,aAAa;oBACd,CAAC,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,KAAK,aAAa,CAAC,EAC5D;oBACA,SAAS,GAAG,UAAU,CAAC;iBACxB;gBACD,MAAM;YACR,KAAK,cAAI,CAAC,mBAAmB;gBAC3B,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC;gBAC9C,MAAM;SACT;IACH,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,SAAS,EAAE;QACd,IAAI,aAAa,EAAE;YACjB,MAAM,IAAI,sBAAY,CAAC,4BAA4B,aAAa,IAAI,CAAC,CAAC;SACvE;aAAM;YACL,MAAM,IAAI,sBAAY,CAAC,4BAA4B,CAAC,CAAC;SACtD;KACF;IAID,MAAM,sBAAsB,GAAG,cAAc,GAAG,CAAC;QAC/C,CAAC,CAAC,eAAK,CAAC;YACN,IAAI,EAAE,cAAI,CAAC,QAAQ;YACnB,WAAW,EAAE;gBACX,SAAS;gBACT,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;aAC5B;SACF,CAAC;QACF,CAAC,CAAC,eAAe,CAAC;IAEpB,OAAO;QACL,MAAM;QACN,SAAS;QACT,SAAS;QACT,mBAAmB;QACnB,eAAe,EAAE,sBAAsB;KACxC,CAAC;AACJ,CAAC;AA7DD,sDA6DC"}