@apollo/gateway 2.0.0-preview.1 → 2.0.0-preview.4

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 (55) hide show
  1. package/dist/__generated__/graphqlTypes.d.ts +1 -0
  2. package/dist/__generated__/graphqlTypes.d.ts.map +1 -1
  3. package/dist/config.d.ts +7 -3
  4. package/dist/config.d.ts.map +1 -1
  5. package/dist/config.js +1 -0
  6. package/dist/config.js.map +1 -1
  7. package/dist/datasources/types.d.ts +1 -1
  8. package/dist/datasources/types.d.ts.map +1 -1
  9. package/dist/executeQueryPlan.d.ts +2 -3
  10. package/dist/executeQueryPlan.d.ts.map +1 -1
  11. package/dist/executeQueryPlan.js +10 -34
  12. package/dist/executeQueryPlan.js.map +1 -1
  13. package/dist/index.d.ts +3 -3
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +41 -50
  16. package/dist/index.js.map +1 -1
  17. package/dist/operationContext.js +0 -1
  18. package/dist/operationContext.js.map +1 -1
  19. package/dist/schema-helper/resolverMap.d.ts +2 -2
  20. package/dist/schema-helper/resolverMap.d.ts.map +1 -1
  21. package/dist/supergraphManagers/IntrospectAndCompose/index.d.ts.map +1 -1
  22. package/dist/supergraphManagers/IntrospectAndCompose/index.js +3 -3
  23. package/dist/supergraphManagers/IntrospectAndCompose/index.js.map +1 -1
  24. package/dist/supergraphManagers/IntrospectAndCompose/loadServicesFromRemoteEndpoint.d.ts.map +1 -1
  25. package/dist/supergraphManagers/IntrospectAndCompose/loadServicesFromRemoteEndpoint.js.map +1 -1
  26. package/dist/supergraphManagers/LegacyFetcher/index.d.ts.map +1 -1
  27. package/dist/supergraphManagers/LegacyFetcher/index.js +3 -3
  28. package/dist/supergraphManagers/LegacyFetcher/index.js.map +1 -1
  29. package/dist/supergraphManagers/LocalCompose/index.d.ts +1 -1
  30. package/dist/supergraphManagers/LocalCompose/index.d.ts.map +1 -1
  31. package/dist/supergraphManagers/LocalCompose/index.js +4 -4
  32. package/dist/supergraphManagers/LocalCompose/index.js.map +1 -1
  33. package/dist/supergraphManagers/UplinkFetcher/index.d.ts +3 -1
  34. package/dist/supergraphManagers/UplinkFetcher/index.d.ts.map +1 -1
  35. package/dist/supergraphManagers/UplinkFetcher/index.js +20 -4
  36. package/dist/supergraphManagers/UplinkFetcher/index.js.map +1 -1
  37. package/dist/supergraphManagers/UplinkFetcher/loadSupergraphSdlFromStorage.d.ts +3 -2
  38. package/dist/supergraphManagers/UplinkFetcher/loadSupergraphSdlFromStorage.d.ts.map +1 -1
  39. package/dist/supergraphManagers/UplinkFetcher/loadSupergraphSdlFromStorage.js +9 -3
  40. package/dist/supergraphManagers/UplinkFetcher/loadSupergraphSdlFromStorage.js.map +1 -1
  41. package/dist/utilities/array.js +1 -1
  42. package/dist/utilities/array.js.map +1 -1
  43. package/package.json +4 -4
  44. package/src/__generated__/graphqlTypes.ts +1 -1
  45. package/src/__tests__/gateway/lifecycle-hooks.test.ts +3 -3
  46. package/src/__tests__/integration/configuration.test.ts +0 -11
  47. package/src/config.ts +11 -6
  48. package/src/index.ts +12 -6
  49. package/src/supergraphManagers/UplinkFetcher/__tests__/loadSupergraphSdlFromStorage.test.ts +41 -0
  50. package/src/supergraphManagers/UplinkFetcher/index.ts +37 -18
  51. package/src/supergraphManagers/UplinkFetcher/loadSupergraphSdlFromStorage.ts +9 -1
  52. package/dist/core/index.d.ts +0 -13
  53. package/dist/core/index.d.ts.map +0 -1
  54. package/dist/core/index.js +0 -43
  55. package/dist/core/index.js.map +0 -1
@@ -12,6 +12,8 @@ class UplinkFetcher {
12
12
  this.timerRef = null;
13
13
  this.errorReportingEndpoint = (_a = process.env.APOLLO_OUT_OF_BAND_REPORTER_ENDPOINT) !== null && _a !== void 0 ? _a : undefined;
14
14
  this.fetchCount = 0;
15
+ this.minDelayMs = null;
16
+ this.earliestFetchTime = null;
15
17
  this.config = options;
16
18
  this.state = { phase: 'initialized' };
17
19
  }
@@ -22,7 +24,12 @@ class UplinkFetcher {
22
24
  }
23
25
  let initialSupergraphSdl = null;
24
26
  try {
25
- initialSupergraphSdl = await this.updateSupergraphSdl();
27
+ const result = await this.updateSupergraphSdl();
28
+ initialSupergraphSdl = (result === null || result === void 0 ? void 0 : result.supergraphSdl) || null;
29
+ if (result === null || result === void 0 ? void 0 : result.minDelaySeconds) {
30
+ this.minDelayMs = 1000 * (result === null || result === void 0 ? void 0 : result.minDelaySeconds);
31
+ this.earliestFetchTime = new Date(Date.now() + this.minDelayMs);
32
+ }
26
33
  }
27
34
  catch (e) {
28
35
  this.logUpdateFailure(e);
@@ -54,6 +61,7 @@ class UplinkFetcher {
54
61
  compositionId: (_a = this.compositionId) !== null && _a !== void 0 ? _a : null,
55
62
  maxRetries: this.config.maxRetries,
56
63
  roundRobinSeed: this.fetchCount++,
64
+ earliestFetchTime: this.earliestFetchTime,
57
65
  });
58
66
  if (!result) {
59
67
  return null;
@@ -61,7 +69,8 @@ class UplinkFetcher {
61
69
  else {
62
70
  this.compositionId = result.id;
63
71
  await ((_b = this.healthCheck) === null || _b === void 0 ? void 0 : _b.call(this, result.supergraphSdl));
64
- return result.supergraphSdl;
72
+ const { supergraphSdl, minDelaySeconds } = result;
73
+ return { supergraphSdl, minDelaySeconds };
65
74
  }
66
75
  }
67
76
  beginPolling() {
@@ -75,7 +84,12 @@ class UplinkFetcher {
75
84
  const pollingPromise = (0, resolvable_1.default)();
76
85
  this.state.pollingPromise = pollingPromise;
77
86
  try {
78
- const maybeNewSupergraphSdl = await this.updateSupergraphSdl();
87
+ const result = await this.updateSupergraphSdl();
88
+ const maybeNewSupergraphSdl = (result === null || result === void 0 ? void 0 : result.supergraphSdl) || null;
89
+ if (result === null || result === void 0 ? void 0 : result.minDelaySeconds) {
90
+ this.minDelayMs = 1000 * (result === null || result === void 0 ? void 0 : result.minDelaySeconds);
91
+ this.earliestFetchTime = new Date(Date.now() + this.minDelayMs);
92
+ }
79
93
  if (maybeNewSupergraphSdl) {
80
94
  (_a = this.update) === null || _a === void 0 ? void 0 : _a.call(this, maybeNewSupergraphSdl);
81
95
  }
@@ -86,7 +100,9 @@ class UplinkFetcher {
86
100
  pollingPromise.resolve();
87
101
  }
88
102
  this.poll();
89
- }, this.config.pollIntervalInMs);
103
+ }, this.minDelayMs
104
+ ? Math.max(this.minDelayMs, this.config.fallbackPollIntervalInMs)
105
+ : this.config.fallbackPollIntervalInMs);
90
106
  }
91
107
  logUpdateFailure(e) {
92
108
  var _a, _b;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/supergraphManagers/UplinkFetcher/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/supergraphManagers/UplinkFetcher/index.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import { fetch } from 'apollo-server-env';
2
2
  import { SupergraphSdlUpdate } from '../../config';
3
- export declare const SUPERGRAPH_SDL_QUERY = "#graphql\n query SupergraphSdl($apiKey: String!, $ref: String!, $ifAfterId: ID) {\n routerConfig(ref: $ref, apiKey: $apiKey, ifAfterId: $ifAfterId) {\n __typename\n ... on RouterConfigResult {\n id\n supergraphSdl: supergraphSDL\n }\n ... on FetchError {\n code\n message\n }\n }\n }\n";
3
+ export declare const SUPERGRAPH_SDL_QUERY = "#graphql\n query SupergraphSdl($apiKey: String!, $ref: String!, $ifAfterId: ID) {\n routerConfig(ref: $ref, apiKey: $apiKey, ifAfterId: $ifAfterId) {\n __typename\n ... on RouterConfigResult {\n id\n supergraphSdl: supergraphSDL\n minDelaySeconds\n }\n ... on FetchError {\n code\n message\n }\n }\n }\n";
4
4
  export declare class UplinkFetcherError extends Error {
5
5
  constructor(message: string);
6
6
  }
7
- export declare function loadSupergraphSdlFromUplinks({ graphRef, apiKey, endpoints, errorReportingEndpoint, fetcher, compositionId, maxRetries, roundRobinSeed, }: {
7
+ export declare function loadSupergraphSdlFromUplinks({ graphRef, apiKey, endpoints, errorReportingEndpoint, fetcher, compositionId, maxRetries, roundRobinSeed, earliestFetchTime, }: {
8
8
  graphRef: string;
9
9
  apiKey: string;
10
10
  endpoints: string[];
@@ -13,6 +13,7 @@ export declare function loadSupergraphSdlFromUplinks({ graphRef, apiKey, endpoin
13
13
  compositionId: string | null;
14
14
  maxRetries: number;
15
15
  roundRobinSeed: number;
16
+ earliestFetchTime: Date | null;
16
17
  }): Promise<SupergraphSdlUpdate | null>;
17
18
  export declare function loadSupergraphSdlFromStorage({ graphRef, apiKey, endpoint, errorReportingEndpoint, fetcher, compositionId, }: {
18
19
  graphRef: string;
@@ -1 +1 @@
1
- {"version":3,"file":"loadSupergraphSdlFromStorage.d.ts","sourceRoot":"","sources":["../../../src/supergraphManagers/UplinkFetcher/loadSupergraphSdlFromStorage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAqB,MAAM,mBAAmB,CAAC;AAG7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAKnD,eAAO,MAAM,oBAAoB,+VAchC,CAAC;AAoBF,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,OAAO,EAAE,MAAM;CAI5B;AAED,wBAAsB,4BAA4B,CAAC,EACjD,QAAQ,EACR,MAAM,EACN,SAAS,EACT,sBAAsB,EACtB,OAAO,EACP,aAAa,EACb,UAAU,EACV,cAAc,GACf,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,sBAAsB,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,OAAO,EAAE,OAAO,KAAK,CAAC;IACtB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB,GAAI,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAmBvC;AAED,wBAAsB,4BAA4B,CAAC,EACjD,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,sBAAsB,EACtB,OAAO,EACP,aAAa,GACd,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,OAAO,EAAE,OAAO,KAAK,CAAC;IACtB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,GAAI,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAwFvC"}
1
+ {"version":3,"file":"loadSupergraphSdlFromStorage.d.ts","sourceRoot":"","sources":["../../../src/supergraphManagers/UplinkFetcher/loadSupergraphSdlFromStorage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAqB,MAAM,mBAAmB,CAAC;AAG7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAKnD,eAAO,MAAM,oBAAoB,wXAehC,CAAC;AAoBF,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,OAAO,EAAE,MAAM;CAI5B;AAED,wBAAsB,4BAA4B,CAAC,EACjD,QAAQ,EACR,MAAM,EACN,SAAS,EACT,sBAAsB,EACtB,OAAO,EACP,aAAa,EACb,UAAU,EACV,cAAc,EACd,iBAAiB,GAClB,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,sBAAsB,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,OAAO,EAAE,OAAO,KAAK,CAAC;IACtB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,IAAI,GAAG,IAAI,CAAA;CAC/B,GAAI,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAuBvC;AAED,wBAAsB,4BAA4B,CAAC,EACjD,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,sBAAsB,EACtB,OAAO,EACP,aAAa,GACd,EAAE;IACD,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,OAAO,EAAE,OAAO,KAAK,CAAC;IACtB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,GAAI,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAyFvC"}
@@ -14,6 +14,7 @@ exports.SUPERGRAPH_SDL_QUERY = `#graphql
14
14
  ... on RouterConfigResult {
15
15
  id
16
16
  supergraphSdl: supergraphSDL
17
+ minDelaySeconds
17
18
  }
18
19
  ... on FetchError {
19
20
  code
@@ -31,7 +32,7 @@ class UplinkFetcherError extends Error {
31
32
  }
32
33
  }
33
34
  exports.UplinkFetcherError = UplinkFetcherError;
34
- async function loadSupergraphSdlFromUplinks({ graphRef, apiKey, endpoints, errorReportingEndpoint, fetcher, compositionId, maxRetries, roundRobinSeed, }) {
35
+ async function loadSupergraphSdlFromUplinks({ graphRef, apiKey, endpoints, errorReportingEndpoint, fetcher, compositionId, maxRetries, roundRobinSeed, earliestFetchTime, }) {
35
36
  return (0, async_retry_1.default)(() => loadSupergraphSdlFromStorage({
36
37
  graphRef,
37
38
  apiKey,
@@ -41,6 +42,11 @@ async function loadSupergraphSdlFromUplinks({ graphRef, apiKey, endpoints, error
41
42
  compositionId,
42
43
  }), {
43
44
  retries: maxRetries,
45
+ onRetry: async () => {
46
+ const delayMS = earliestFetchTime ? earliestFetchTime.getTime() - Date.now() : 0;
47
+ if (delayMS > 0)
48
+ await new Promise(resolve => setTimeout(resolve, delayMS));
49
+ }
44
50
  });
45
51
  }
46
52
  exports.loadSupergraphSdlFromUplinks = loadSupergraphSdlFromUplinks;
@@ -108,8 +114,8 @@ async function loadSupergraphSdlFromStorage({ graphRef, apiKey, endpoint, errorR
108
114
  }
109
115
  const { routerConfig } = response.data;
110
116
  if (routerConfig.__typename === 'RouterConfigResult') {
111
- const { id, supergraphSdl, } = routerConfig;
112
- return { id, supergraphSdl: supergraphSdl };
117
+ const { id, supergraphSdl, minDelaySeconds, } = routerConfig;
118
+ return { id, supergraphSdl: supergraphSdl, minDelaySeconds };
113
119
  }
114
120
  else if (routerConfig.__typename === 'FetchError') {
115
121
  const { code, message } = routerConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"loadSupergraphSdlFromStorage.js","sourceRoot":"","sources":["../../../src/supergraphManagers/UplinkFetcher/loadSupergraphSdlFromStorage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loadSupergraphSdlFromStorage.js","sourceRoot":"","sources":["../../../src/supergraphManagers/UplinkFetcher/loadSupergraphSdlFromStorage.ts"],"names":[],"mappings":"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"}
@@ -19,7 +19,7 @@ function findAndExtract(array, predicate) {
19
19
  const index = array.findIndex(predicate);
20
20
  if (index === -1)
21
21
  return [undefined, array];
22
- let remaining = array.slice(0, index);
22
+ const remaining = array.slice(0, index);
23
23
  if (index < array.length - 1) {
24
24
  remaining.push(...array.slice(index + 1));
25
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"array.js","sourceRoot":"","sources":["../../src/utilities/array.ts"],"names":[],"mappings":";;;AAAA,SAAgB,oBAAoB,CAClC,KAA2B;IAE3B,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,WAAW,CAAC;AACxD,CAAC;AAJD,oDAIC;AAED,SAAgB,UAAU,CACxB,KAAU,EACV,UAAyE;IAEzE,OAAO,KAAK,CAAC,MAAM,CACjB,CAAC,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;QACrC,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QACjD,IAAI,oBAAoB,CAAC,MAAM,CAAC,EAAE;YAChC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC1B;QACD,OAAO,WAAW,CAAC;IACrB,CAAC,EACD,EAAS,CACV,CAAC;AACJ,CAAC;AAdD,gCAcC;AAED,SAAgB,cAAc,CAC5B,KAAU,EACV,SAA6D;IAE7D,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACzC,IAAI,KAAK,KAAK,CAAC,CAAC;QAAE,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAE5C,IAAI,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACtC,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;QAC5B,SAAS,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;KAC3C;IAED,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC;AACnC,CAAC;AAbD,wCAaC;AAED,SAAgB,OAAO,CAAO,WAA8B;IAC1D,OAAO,CAAC,QAAqB,EAAE,EAAE;QAC/B,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;QAEjC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;YAC9B,MAAM,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;YACjC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAE9B,IAAI,KAAK,EAAE;gBACT,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aACrB;iBAAM;gBACL,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;aAC5B;SACF;QAED,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC;AAjBD,0BAiBC"}
1
+ {"version":3,"file":"array.js","sourceRoot":"","sources":["../../src/utilities/array.ts"],"names":[],"mappings":";;;AAAA,SAAgB,oBAAoB,CAClC,KAA2B;IAE3B,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,WAAW,CAAC;AACxD,CAAC;AAJD,oDAIC;AAED,SAAgB,UAAU,CACxB,KAAU,EACV,UAAyE;IAEzE,OAAO,KAAK,CAAC,MAAM,CACjB,CAAC,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;QACrC,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QACjD,IAAI,oBAAoB,CAAC,MAAM,CAAC,EAAE;YAChC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC1B;QACD,OAAO,WAAW,CAAC;IACrB,CAAC,EACD,EAAS,CACV,CAAC;AACJ,CAAC;AAdD,gCAcC;AAED,SAAgB,cAAc,CAC5B,KAAU,EACV,SAA6D;IAE7D,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACzC,IAAI,KAAK,KAAK,CAAC,CAAC;QAAE,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAE5C,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACxC,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;QAC5B,SAAS,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;KAC3C;IAED,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,CAAC;AACnC,CAAC;AAbD,wCAaC;AAED,SAAgB,OAAO,CAAO,WAA8B;IAC1D,OAAO,CAAC,QAAqB,EAAE,EAAE;QAC/B,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;QAEjC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;YAC9B,MAAM,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;YACjC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAE9B,IAAI,KAAK,EAAE;gBACT,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aACrB;iBAAM;gBACL,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;aAC5B;SACF;QAED,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC;AAjBD,0BAiBC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@apollo/gateway",
3
- "version": "2.0.0-preview.1",
3
+ "version": "2.0.0-preview.4",
4
4
  "description": "Apollo Gateway",
5
5
  "author": "Apollo <packages@apollographql.com>",
6
6
  "main": "dist/index.js",
@@ -25,9 +25,9 @@
25
25
  "access": "public"
26
26
  },
27
27
  "dependencies": {
28
- "@apollo/composition": "^2.0.0-preview.1",
28
+ "@apollo/composition": "^2.0.0-preview.4",
29
29
  "@apollo/core-schema": "^0.2.2",
30
- "@apollo/query-planner": "^2.0.0-preview.1",
30
+ "@apollo/query-planner": "^2.0.0-preview.4",
31
31
  "@josephg/resolvable": "^1.0.1",
32
32
  "@opentelemetry/api": "^1.0.1",
33
33
  "@types/node-fetch": "2.6.1",
@@ -47,5 +47,5 @@
47
47
  "peerDependencies": {
48
48
  "graphql": "^16.0.0"
49
49
  },
50
- "gitHead": "0ab9894af98cc2687fe261ce415f19df0380a399"
50
+ "gitHead": "1ab3c3b872dade5ca564bd3ba3ac723a99ad4960"
51
51
  }
@@ -139,7 +139,7 @@ export type SupergraphSdlQueryVariables = Exact<{
139
139
  }>;
140
140
 
141
141
 
142
- export type SupergraphSdlQuery = { __typename?: 'Query', routerConfig: { __typename: 'FetchError', code: FetchErrorCode, message: string } | { __typename: 'RouterConfigResult', id: string, supergraphSdl: string } | { __typename: 'Unchanged' } };
142
+ export type SupergraphSdlQuery = { __typename?: 'Query', routerConfig: { __typename: 'FetchError', code: FetchErrorCode, message: string } | { __typename: 'RouterConfigResult', id: string, minDelaySeconds: number, supergraphSdl: string } | { __typename: 'Unchanged' } };
143
143
 
144
144
  export type OobReportMutationVariables = Exact<{
145
145
  input?: InputMaybe<ApiMonitoringReport>;
@@ -137,7 +137,7 @@ describe('lifecycle hooks', () => {
137
137
 
138
138
  const [firstCall, secondCall] = mockDidUpdate.mock.calls;
139
139
 
140
- // Note that we've composing our usual test fixtures here
140
+ // Note that we've composing our usual test fixtures here
141
141
  const expectedFirstId = createHash('sha256').update(getTestingSupergraphSdl()).digest('hex');
142
142
  expect(firstCall[0]!.compositionId).toEqual(expectedFirstId);
143
143
  // first call should have no second "previous" argument
@@ -145,7 +145,7 @@ describe('lifecycle hooks', () => {
145
145
 
146
146
  // Note that this assertion is a tad fragile in that every time we modify
147
147
  // the supergraph (even just formatting differences), this ID will change
148
- // and this test will have to updated.
148
+ // and this test will have to updated.
149
149
  expect(secondCall[0]!.compositionId).toEqual(
150
150
  '3ca7f295b11b070d1e1b56a698cbfabb70cb2b5912a4ff0ecae2fb91e8709838',
151
151
  );
@@ -183,7 +183,7 @@ describe('lifecycle hooks', () => {
183
183
  );
184
184
  });
185
185
 
186
- it('registers schema change callbacks when experimental_pollInterval is set for unmanaged configs', async () => {
186
+ it('registers schema change callbacks when pollIntervalInMs is set for unmanaged configs', async () => {
187
187
  const experimental_updateServiceDefinitions: Experimental_UpdateServiceDefinitions =
188
188
  jest.fn(async (_config) => {
189
189
  return { serviceDefinitions, isNewSchema: true };
@@ -444,15 +444,4 @@ describe('deprecation warnings', () => {
444
444
  'The `schemaConfigDeliveryEndpoint` option is deprecated and will be removed in a future version of `@apollo/gateway`. Please migrate to the equivalent (array form) `uplinkEndpoints` configuration option.',
445
445
  );
446
446
  });
447
-
448
- it('warns with `experimental_pollInterval` option set', async () => {
449
- new ApolloGateway({
450
- experimental_pollInterval: 10000,
451
- logger,
452
- });
453
-
454
- expect(logger.warn).toHaveBeenCalledWith(
455
- 'The `experimental_pollInterval` option is deprecated and will be removed in a future version of `@apollo/gateway`. Please migrate to the equivalent `pollIntervalInMs` configuration option.',
456
- );
457
- });
458
447
  });
package/src/config.ts CHANGED
@@ -81,6 +81,7 @@ export interface ServiceDefinitionUpdate {
81
81
  export interface SupergraphSdlUpdate {
82
82
  id: string;
83
83
  supergraphSdl: string;
84
+ minDelaySeconds?: number;
84
85
  }
85
86
 
86
87
  export function isSupergraphSdlUpdate(
@@ -125,11 +126,6 @@ interface GatewayConfigBase {
125
126
  // experimental observability callbacks
126
127
  experimental_didResolveQueryPlan?: Experimental_DidResolveQueryPlanCallback;
127
128
  experimental_didUpdateSupergraph?: Experimental_DidUpdateSupergraphCallback;
128
- /**
129
- * @deprecated use `pollIntervalInMs` instead
130
- */
131
- experimental_pollInterval?: number;
132
- pollIntervalInMs?: number;
133
129
  experimental_approximateQueryPlanStoreMiB?: number;
134
130
  experimental_autoFragmentization?: boolean;
135
131
  fetcher?: typeof fetch;
@@ -150,6 +146,7 @@ export interface ServiceListGatewayConfig extends GatewayConfigBase {
150
146
  | ((
151
147
  service: ServiceEndpointDefinition,
152
148
  ) => Promise<HeadersInit> | HeadersInit);
149
+ pollIntervalInMs?: number;
153
150
  }
154
151
 
155
152
  export interface ManagedGatewayConfig extends GatewayConfigBase {
@@ -168,6 +165,11 @@ export interface ManagedGatewayConfig extends GatewayConfigBase {
168
165
  */
169
166
  uplinkEndpoints?: string[];
170
167
  uplinkMaxRetries?: number;
168
+ /**
169
+ * @deprecated use `fallbackPollIntervalInMs` instead
170
+ */
171
+ pollIntervalInMs?: number;
172
+ fallbackPollIntervalInMs?: number;
171
173
  }
172
174
 
173
175
  // TODO(trevor:removeServiceList): migrate users to `supergraphSdl` function option
@@ -176,6 +178,7 @@ interface ManuallyManagedServiceDefsGatewayConfig extends GatewayConfigBase {
176
178
  * @deprecated: use `supergraphSdl` instead (either as a `SupergraphSdlHook` or `SupergraphManager`)
177
179
  */
178
180
  experimental_updateServiceDefinitions: Experimental_UpdateServiceDefinitions;
181
+ pollIntervalInMs?: number;
179
182
  }
180
183
 
181
184
  // TODO(trevor:removeServiceList): migrate users to `supergraphSdl` function option
@@ -185,6 +188,7 @@ interface ExperimentalManuallyManagedSupergraphSdlGatewayConfig
185
188
  * @deprecated: use `supergraphSdl` instead (either as a `SupergraphSdlHook` or `SupergraphManager`)
186
189
  */
187
190
  experimental_updateSupergraphSdl: Experimental_UpdateSupergraphSdl;
191
+ pollIntervalInMs?: number;
188
192
  }
189
193
 
190
194
  export function isManuallyManagedSupergraphSdlGatewayConfig(
@@ -238,7 +242,7 @@ type ManuallyManagedGatewayConfig =
238
242
  | ManuallyManagedServiceDefsGatewayConfig
239
243
  | ExperimentalManuallyManagedSupergraphSdlGatewayConfig
240
244
  | ManuallyManagedSupergraphSdlGatewayConfig
241
- // TODO(trevor:removeServiceList
245
+ // TODO(trevor:removeServiceList)
242
246
  | ServiceListGatewayConfig;
243
247
 
244
248
  // TODO(trevor:removeServiceList)
@@ -322,6 +326,7 @@ export function isManagedConfig(
322
326
  return (
323
327
  'schemaConfigDeliveryEndpoint' in config ||
324
328
  'uplinkEndpoints' in config ||
329
+ 'fallbackPollIntervalInMs' in config ||
325
330
  (!isLocalConfig(config) &&
326
331
  !isStaticSupergraphSdlConfig(config) &&
327
332
  !isManuallyManagedConfig(config))
package/src/index.ts CHANGED
@@ -200,8 +200,12 @@ export class ApolloGateway implements GraphQLService {
200
200
  this.experimental_didUpdateSupergraph =
201
201
  config?.experimental_didUpdateSupergraph;
202
202
 
203
- this.pollIntervalInMs =
204
- config?.pollIntervalInMs ?? config?.experimental_pollInterval;
203
+ if (isManagedConfig(this.config)) {
204
+ this.pollIntervalInMs =
205
+ this.config.fallbackPollIntervalInMs ?? this.config.pollIntervalInMs;
206
+ } else if (isServiceListConfig(this.config)) {
207
+ this.pollIntervalInMs = this.config?.pollIntervalInMs;
208
+ }
205
209
 
206
210
  this.issueConfigurationWarningsIfApplicable();
207
211
 
@@ -252,7 +256,7 @@ export class ApolloGateway implements GraphQLService {
252
256
  'Polling Apollo services at a frequency of less than once per 10 ' +
253
257
  'seconds (10000) is disallowed. Instead, the minimum allowed ' +
254
258
  'pollInterval of 10000 will be used. Please reconfigure your ' +
255
- '`pollIntervalInMs` accordingly. If this is problematic for ' +
259
+ '`fallbackPollIntervalInMs` accordingly. If this is problematic for ' +
256
260
  'your team, please contact support.',
257
261
  );
258
262
  }
@@ -286,9 +290,11 @@ export class ApolloGateway implements GraphQLService {
286
290
  );
287
291
  }
288
292
 
289
- if ('experimental_pollInterval' in this.config) {
293
+ if (isManagedConfig(this.config) && 'pollIntervalInMs' in this.config) {
290
294
  this.logger.warn(
291
- 'The `experimental_pollInterval` option is deprecated and will be removed in a future version of `@apollo/gateway`. Please migrate to the equivalent `pollIntervalInMs` configuration option.',
295
+ 'The `pollIntervalInMs` option is deprecated and will be removed in a future version of `@apollo/gateway`. ' +
296
+ 'Please migrate to the equivalent `fallbackPollIntervalInMs` configuration option. ' +
297
+ 'The poll interval is now defined by Uplink, this option will only be used if it is greater than the value defined by Uplink or as a fallback.',
292
298
  );
293
299
  }
294
300
  }
@@ -406,7 +412,7 @@ export class ApolloGateway implements GraphQLService {
406
412
  subgraphHealthCheck: this.config.serviceHealthCheck,
407
413
  fetcher: this.fetcher,
408
414
  logger: this.logger,
409
- pollIntervalInMs: this.pollIntervalInMs ?? 10000,
415
+ fallbackPollIntervalInMs: this.pollIntervalInMs ?? 10000,
410
416
  }),
411
417
  );
412
418
  }
@@ -65,6 +65,7 @@ describe('loadSupergraphSdlFromStorage', () => {
65
65
  compositionId: "originalId-1234",
66
66
  maxRetries: 1,
67
67
  roundRobinSeed: 0,
68
+ earliestFetchTime: null,
68
69
  });
69
70
 
70
71
  expect(result).toMatchObject({
@@ -88,6 +89,7 @@ describe('loadSupergraphSdlFromStorage', () => {
88
89
  compositionId: "originalId-1234",
89
90
  maxRetries: 1,
90
91
  roundRobinSeed: 0,
92
+ earliestFetchTime: null,
91
93
  }),
92
94
  ).rejects.toThrowError(
93
95
  new UplinkFetcherError(
@@ -388,10 +390,49 @@ describe("loadSupergraphSdlFromUplinks", () => {
388
390
  compositionId: "id-1234",
389
391
  maxRetries: 5,
390
392
  roundRobinSeed: 0,
393
+ earliestFetchTime: null,
391
394
  });
392
395
 
393
396
  expect(result).toBeNull();
394
397
  expect(fetcher).toHaveBeenCalledTimes(1);
395
398
  });
399
+
400
+ it("Waits the correct time before retrying", async () => {
401
+ const timeoutSpy = jest.spyOn(global, 'setTimeout');
402
+
403
+ mockSupergraphSdlRequest('originalId-1234', mockCloudConfigUrl1).reply(500);
404
+ mockSupergraphSdlRequestIfAfter('originalId-1234', mockCloudConfigUrl2).reply(
405
+ 200,
406
+ JSON.stringify({
407
+ data: {
408
+ routerConfig: {
409
+ __typename: 'RouterConfigResult',
410
+ id: 'originalId-1234',
411
+ supergraphSdl: getTestingSupergraphSdl()
412
+ },
413
+ },
414
+ }),
415
+ );
416
+ const fetcher = getDefaultFetcher();
417
+
418
+ await loadSupergraphSdlFromUplinks({
419
+ graphRef,
420
+ apiKey,
421
+ endpoints: [mockCloudConfigUrl1, mockCloudConfigUrl2],
422
+ errorReportingEndpoint: undefined,
423
+ fetcher: fetcher,
424
+ compositionId: "originalId-1234",
425
+ maxRetries: 1,
426
+ roundRobinSeed: 0,
427
+ earliestFetchTime: new Date(Date.now() + 1000),
428
+ });
429
+
430
+ // test if setTimeout was called with a value in range to deal with time jitter
431
+ const setTimeoutCall = timeoutSpy.mock.calls[1][1];
432
+ expect(setTimeoutCall).toBeLessThanOrEqual(1000);
433
+ expect(setTimeoutCall).toBeGreaterThanOrEqual(900);
434
+
435
+ timeoutSpy.mockRestore();
436
+ });
396
437
  });
397
438
 
@@ -6,7 +6,7 @@ import { SubgraphHealthCheckFunction, SupergraphSdlUpdateFunction } from '../..'
6
6
  import { loadSupergraphSdlFromUplinks } from './loadSupergraphSdlFromStorage';
7
7
 
8
8
  export interface UplinkFetcherOptions {
9
- pollIntervalInMs: number;
9
+ fallbackPollIntervalInMs: number;
10
10
  subgraphHealthCheck?: boolean;
11
11
  graphRef: string;
12
12
  apiKey: string;
@@ -31,6 +31,8 @@ export class UplinkFetcher implements SupergraphManager {
31
31
  process.env.APOLLO_OUT_OF_BAND_REPORTER_ENDPOINT ?? undefined;
32
32
  private compositionId?: string;
33
33
  private fetchCount: number = 0;
34
+ private minDelayMs: number | null = null;
35
+ private earliestFetchTime: Date | null = null;
34
36
 
35
37
  constructor(options: UplinkFetcherOptions) {
36
38
  this.config = options;
@@ -46,7 +48,12 @@ export class UplinkFetcher implements SupergraphManager {
46
48
 
47
49
  let initialSupergraphSdl: string | null = null;
48
50
  try {
49
- initialSupergraphSdl = await this.updateSupergraphSdl();
51
+ const result = await this.updateSupergraphSdl();
52
+ initialSupergraphSdl = result?.supergraphSdl || null;
53
+ if (result?.minDelaySeconds) {
54
+ this.minDelayMs = 1000 * result?.minDelaySeconds;
55
+ this.earliestFetchTime = new Date(Date.now() + this.minDelayMs);
56
+ }
50
57
  } catch (e) {
51
58
  this.logUpdateFailure(e);
52
59
  throw e;
@@ -83,6 +90,7 @@ export class UplinkFetcher implements SupergraphManager {
83
90
  compositionId: this.compositionId ?? null,
84
91
  maxRetries: this.config.maxRetries,
85
92
  roundRobinSeed: this.fetchCount++,
93
+ earliestFetchTime: this.earliestFetchTime,
86
94
  });
87
95
 
88
96
  if (!result) {
@@ -91,7 +99,8 @@ export class UplinkFetcher implements SupergraphManager {
91
99
  this.compositionId = result.id;
92
100
  // the healthCheck fn is only assigned if it's enabled in the config
93
101
  await this.healthCheck?.(result.supergraphSdl);
94
- return result.supergraphSdl;
102
+ const { supergraphSdl, minDelaySeconds } = result;
103
+ return { supergraphSdl, minDelaySeconds };
95
104
  }
96
105
  }
97
106
 
@@ -101,24 +110,34 @@ export class UplinkFetcher implements SupergraphManager {
101
110
  }
102
111
 
103
112
  private poll() {
104
- this.timerRef = setTimeout(async () => {
105
- if (this.state.phase === 'polling') {
106
- const pollingPromise = resolvable();
107
-
108
- this.state.pollingPromise = pollingPromise;
109
- try {
110
- const maybeNewSupergraphSdl = await this.updateSupergraphSdl();
111
- if (maybeNewSupergraphSdl) {
112
- this.update?.(maybeNewSupergraphSdl);
113
+ this.timerRef = setTimeout(
114
+ async () => {
115
+ if (this.state.phase === 'polling') {
116
+ const pollingPromise = resolvable();
117
+
118
+ this.state.pollingPromise = pollingPromise;
119
+ try {
120
+ const result = await this.updateSupergraphSdl();
121
+ const maybeNewSupergraphSdl = result?.supergraphSdl || null;
122
+ if (result?.minDelaySeconds) {
123
+ this.minDelayMs = 1000 * result?.minDelaySeconds;
124
+ this.earliestFetchTime = new Date(Date.now() + this.minDelayMs);
125
+ }
126
+ if (maybeNewSupergraphSdl) {
127
+ this.update?.(maybeNewSupergraphSdl);
128
+ }
129
+ } catch (e) {
130
+ this.logUpdateFailure(e);
113
131
  }
114
- } catch (e) {
115
- this.logUpdateFailure(e);
132
+ pollingPromise.resolve();
116
133
  }
117
- pollingPromise.resolve();
118
- }
119
134
 
120
- this.poll();
121
- }, this.config.pollIntervalInMs);
135
+ this.poll();
136
+ },
137
+ this.minDelayMs
138
+ ? Math.max(this.minDelayMs, this.config.fallbackPollIntervalInMs)
139
+ : this.config.fallbackPollIntervalInMs,
140
+ );
122
141
  }
123
142
 
124
143
  private logUpdateFailure(e: any) {
@@ -13,6 +13,7 @@ export const SUPERGRAPH_SDL_QUERY = /* GraphQL */`#graphql
13
13
  ... on RouterConfigResult {
14
14
  id
15
15
  supergraphSdl: supergraphSDL
16
+ minDelaySeconds
16
17
  }
17
18
  ... on FetchError {
18
19
  code
@@ -56,6 +57,7 @@ export async function loadSupergraphSdlFromUplinks({
56
57
  compositionId,
57
58
  maxRetries,
58
59
  roundRobinSeed,
60
+ earliestFetchTime,
59
61
  }: {
60
62
  graphRef: string;
61
63
  apiKey: string;
@@ -65,6 +67,7 @@ export async function loadSupergraphSdlFromUplinks({
65
67
  compositionId: string | null;
66
68
  maxRetries: number,
67
69
  roundRobinSeed: number,
70
+ earliestFetchTime: Date | null
68
71
  }) : Promise<SupergraphSdlUpdate | null> {
69
72
  // This Promise resolves with either an updated supergraph or null if no change.
70
73
  // This Promise can reject in the case that none of the retries are successful,
@@ -81,6 +84,10 @@ export async function loadSupergraphSdlFromUplinks({
81
84
  }),
82
85
  {
83
86
  retries: maxRetries,
87
+ onRetry: async () => {
88
+ const delayMS = earliestFetchTime ? earliestFetchTime.getTime() - Date.now(): 0;
89
+ if (delayMS > 0) await new Promise(resolve => setTimeout(resolve, delayMS));
90
+ }
84
91
  },
85
92
  );
86
93
 
@@ -176,9 +183,10 @@ export async function loadSupergraphSdlFromStorage({
176
183
  const {
177
184
  id,
178
185
  supergraphSdl,
186
+ minDelaySeconds,
179
187
  // messages,
180
188
  } = routerConfig;
181
- return { id, supergraphSdl: supergraphSdl! };
189
+ return { id, supergraphSdl: supergraphSdl!, minDelaySeconds };
182
190
  } else if (routerConfig.__typename === 'FetchError') {
183
191
  // FetchError case
184
192
  const { code, message } = routerConfig;
@@ -1,13 +0,0 @@
1
- import { CoreSchemaContext, Feature } from '@apollo/core-schema';
2
- export declare const ErrUnsupportedFeature: (feature: Feature) => import("@apollo/core-schema/dist/error").GraphQLErrorExt<"UnsupportedFeature"> & {
3
- message: string;
4
- feature: Feature;
5
- nodes: import("graphql").DirectiveNode[];
6
- };
7
- export declare const ErrForUnsupported: (core: Feature, ...features: readonly Feature[]) => import("@apollo/core-schema/dist/error").GraphQLErrorExt<"ForUnsupported"> & {
8
- message: string;
9
- features: readonly Feature[];
10
- nodes: import("graphql").DirectiveNode[];
11
- };
12
- export declare function featureSupport(this: CoreSchemaContext): void;
13
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAO,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAUtE,eAAO,MAAM,qBAAqB,YAAa,OAAO;;;;CAKlD,CAAC;AAEL,eAAO,MAAM,iBAAiB,SAAU,OAAO,eAAe,SAAS,OAAO,EAAE;;;;CAO5E,CAAC;AAEL,wBAAgB,cAAc,CAAC,IAAI,EAAE,iBAAiB,QAwBrD"}