@apollo/gateway 0.48.0 → 0.49.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 +7 -5
- package/dist/__generated__/graphqlTypes.d.ts +4 -0
- package/dist/__generated__/graphqlTypes.d.ts.map +1 -1
- package/dist/__generated__/graphqlTypes.js.map +1 -1
- package/dist/config.d.ts +6 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -0
- package/dist/config.js.map +1 -1
- package/dist/executeQueryPlan.d.ts.map +1 -1
- package/dist/executeQueryPlan.js +4 -3
- package/dist/executeQueryPlan.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23 -10
- package/dist/index.js.map +1 -1
- package/dist/schema-helper/index.js +5 -1
- package/dist/schema-helper/index.js.map +1 -1
- package/dist/schema-helper/resolverMap.d.ts +2 -2
- package/dist/schema-helper/resolverMap.d.ts.map +1 -1
- package/dist/supergraphManagers/IntrospectAndCompose/index.js.map +1 -1
- package/dist/supergraphManagers/LegacyFetcher/index.js +1 -1
- package/dist/supergraphManagers/LegacyFetcher/index.js.map +1 -1
- package/dist/supergraphManagers/LocalCompose/index.js +1 -1
- package/dist/supergraphManagers/LocalCompose/index.js.map +1 -1
- package/dist/supergraphManagers/UplinkFetcher/index.d.ts +4 -1
- package/dist/supergraphManagers/UplinkFetcher/index.d.ts.map +1 -1
- package/dist/supergraphManagers/UplinkFetcher/index.js +22 -4
- package/dist/supergraphManagers/UplinkFetcher/index.js.map +1 -1
- package/dist/supergraphManagers/UplinkFetcher/loadSupergraphSdlFromStorage.d.ts +7 -2
- package/dist/supergraphManagers/UplinkFetcher/loadSupergraphSdlFromStorage.d.ts.map +1 -1
- package/dist/supergraphManagers/UplinkFetcher/loadSupergraphSdlFromStorage.js +37 -33
- package/dist/supergraphManagers/UplinkFetcher/loadSupergraphSdlFromStorage.js.map +1 -1
- package/dist/supergraphManagers/index.d.ts +1 -0
- package/dist/supergraphManagers/index.d.ts.map +1 -1
- package/dist/supergraphManagers/index.js +3 -1
- package/dist/supergraphManagers/index.js.map +1 -1
- package/package.json +6 -5
- package/src/__generated__/graphqlTypes.ts +11 -2
- package/src/__tests__/CucumberREADME.md +1 -0
- package/src/__tests__/build-query-plan-fragmentization.feature +10 -0
- package/src/__tests__/build-query-plan.feature +84 -16
- package/src/__tests__/buildQueryPlan.test.ts +272 -1
- package/src/__tests__/gateway/lifecycle-hooks.test.ts +3 -3
- package/src/__tests__/gateway/reporting.test.ts +4 -0
- package/src/__tests__/gateway/supergraphSdl.test.ts +3 -3
- package/src/__tests__/integration/abstract-types.test.ts +3 -3
- package/src/__tests__/integration/configuration.test.ts +0 -11
- package/src/__tests__/integration/nockMocks.ts +3 -2
- package/src/__tests__/integration/requires.test.ts +1 -1
- package/src/__tests__/integration/value-types.test.ts +1 -1
- package/src/config.ts +11 -6
- package/src/executeQueryPlan.ts +4 -0
- package/src/index.ts +16 -7
- package/src/schema-helper/resolverMap.ts +2 -2
- package/src/supergraphManagers/LegacyFetcher/index.ts +1 -1
- package/src/supergraphManagers/LocalCompose/index.ts +1 -1
- package/src/supergraphManagers/UplinkFetcher/__tests__/loadSupergraphSdlFromStorage.test.ts +123 -28
- package/src/supergraphManagers/UplinkFetcher/index.ts +39 -18
- package/src/supergraphManagers/UplinkFetcher/loadSupergraphSdlFromStorage.ts +40 -27
- package/src/supergraphManagers/index.ts +1 -0
|
@@ -2,7 +2,7 @@ import { fetch } from 'apollo-server-env';
|
|
|
2
2
|
import { Logger } from 'apollo-server-types';
|
|
3
3
|
import { SupergraphManager, SupergraphSdlHookOptions } from '../../config';
|
|
4
4
|
export interface UplinkFetcherOptions {
|
|
5
|
-
|
|
5
|
+
fallbackPollIntervalInMs: number;
|
|
6
6
|
subgraphHealthCheck?: boolean;
|
|
7
7
|
graphRef: string;
|
|
8
8
|
apiKey: string;
|
|
@@ -19,6 +19,9 @@ export declare class UplinkFetcher implements SupergraphManager {
|
|
|
19
19
|
private state;
|
|
20
20
|
private errorReportingEndpoint;
|
|
21
21
|
private compositionId?;
|
|
22
|
+
private fetchCount;
|
|
23
|
+
private minDelayMs;
|
|
24
|
+
private earliestFetchTime;
|
|
22
25
|
constructor(options: UplinkFetcherOptions);
|
|
23
26
|
initialize({ update, healthCheck }: SupergraphSdlHookOptions): Promise<{
|
|
24
27
|
supergraphSdl: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/supergraphManagers/UplinkFetcher/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAI3E,MAAM,WAAW,oBAAoB;IACnC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/supergraphManagers/UplinkFetcher/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAI3E,MAAM,WAAW,oBAAoB;IACnC,wBAAwB,EAAE,MAAM,CAAC;IACjC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,KAAK,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAOD,qBAAa,aAAc,YAAW,iBAAiB;IACrD,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,MAAM,CAAC,CAA8B;IAC7C,OAAO,CAAC,WAAW,CAAC,CAA8B;IAClD,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,sBAAsB,CACkC;IAChE,OAAO,CAAC,aAAa,CAAC,CAAS;IAC/B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,iBAAiB,CAAqB;gBAElC,OAAO,EAAE,oBAAoB;IAK5B,UAAU,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,wBAAwB;;;;YAyC3D,mBAAmB;IAwBjC,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,IAAI;IA+BZ,OAAO,CAAC,gBAAgB;CAMzB"}
|
|
@@ -11,6 +11,9 @@ class UplinkFetcher {
|
|
|
11
11
|
var _a;
|
|
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
|
+
this.fetchCount = 0;
|
|
15
|
+
this.minDelayMs = null;
|
|
16
|
+
this.earliestFetchTime = null;
|
|
14
17
|
this.config = options;
|
|
15
18
|
this.state = { phase: 'initialized' };
|
|
16
19
|
}
|
|
@@ -21,7 +24,12 @@ class UplinkFetcher {
|
|
|
21
24
|
}
|
|
22
25
|
let initialSupergraphSdl = null;
|
|
23
26
|
try {
|
|
24
|
-
|
|
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
|
+
}
|
|
25
33
|
}
|
|
26
34
|
catch (e) {
|
|
27
35
|
this.logUpdateFailure(e);
|
|
@@ -52,6 +60,8 @@ class UplinkFetcher {
|
|
|
52
60
|
fetcher: this.config.fetcher,
|
|
53
61
|
compositionId: (_a = this.compositionId) !== null && _a !== void 0 ? _a : null,
|
|
54
62
|
maxRetries: this.config.maxRetries,
|
|
63
|
+
roundRobinSeed: this.fetchCount++,
|
|
64
|
+
earliestFetchTime: this.earliestFetchTime,
|
|
55
65
|
});
|
|
56
66
|
if (!result) {
|
|
57
67
|
return null;
|
|
@@ -59,7 +69,8 @@ class UplinkFetcher {
|
|
|
59
69
|
else {
|
|
60
70
|
this.compositionId = result.id;
|
|
61
71
|
await ((_b = this.healthCheck) === null || _b === void 0 ? void 0 : _b.call(this, result.supergraphSdl));
|
|
62
|
-
|
|
72
|
+
const { supergraphSdl, minDelaySeconds } = result;
|
|
73
|
+
return { supergraphSdl, minDelaySeconds };
|
|
63
74
|
}
|
|
64
75
|
}
|
|
65
76
|
beginPolling() {
|
|
@@ -73,7 +84,12 @@ class UplinkFetcher {
|
|
|
73
84
|
const pollingPromise = (0, resolvable_1.default)();
|
|
74
85
|
this.state.pollingPromise = pollingPromise;
|
|
75
86
|
try {
|
|
76
|
-
const
|
|
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
|
+
}
|
|
77
93
|
if (maybeNewSupergraphSdl) {
|
|
78
94
|
(_a = this.update) === null || _a === void 0 ? void 0 : _a.call(this, maybeNewSupergraphSdl);
|
|
79
95
|
}
|
|
@@ -84,7 +100,9 @@ class UplinkFetcher {
|
|
|
84
100
|
pollingPromise.resolve();
|
|
85
101
|
}
|
|
86
102
|
this.poll();
|
|
87
|
-
}, this.
|
|
103
|
+
}, this.minDelayMs
|
|
104
|
+
? Math.max(this.minDelayMs, this.config.fallbackPollIntervalInMs)
|
|
105
|
+
: this.config.fallbackPollIntervalInMs);
|
|
88
106
|
}
|
|
89
107
|
logUpdateFailure(e) {
|
|
90
108
|
var _a, _b;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/supergraphManagers/UplinkFetcher/index.ts"],"names":[],"mappings":";;;;;;AAEA,qEAA6C;AAG7C,iFAA8E;AAkB9E,MAAa,aAAa;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/supergraphManagers/UplinkFetcher/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +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";
|
|
4
|
-
export declare
|
|
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
|
+
export declare class UplinkFetcherError extends Error {
|
|
5
|
+
constructor(message: string);
|
|
6
|
+
}
|
|
7
|
+
export declare function loadSupergraphSdlFromUplinks({ graphRef, apiKey, endpoints, errorReportingEndpoint, fetcher, compositionId, maxRetries, roundRobinSeed, earliestFetchTime, }: {
|
|
5
8
|
graphRef: string;
|
|
6
9
|
apiKey: string;
|
|
7
10
|
endpoints: string[];
|
|
@@ -9,6 +12,8 @@ export declare function loadSupergraphSdlFromUplinks({ graphRef, apiKey, endpoin
|
|
|
9
12
|
fetcher: typeof fetch;
|
|
10
13
|
compositionId: string | null;
|
|
11
14
|
maxRetries: number;
|
|
15
|
+
roundRobinSeed: number;
|
|
16
|
+
earliestFetchTime: Date | null;
|
|
12
17
|
}): Promise<SupergraphSdlUpdate | null>;
|
|
13
18
|
export declare function loadSupergraphSdlFromStorage({ graphRef, apiKey, endpoint, errorReportingEndpoint, fetcher, compositionId, }: {
|
|
14
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;
|
|
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"}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.loadSupergraphSdlFromStorage = exports.loadSupergraphSdlFromUplinks = exports.SUPERGRAPH_SDL_QUERY = void 0;
|
|
6
|
+
exports.loadSupergraphSdlFromStorage = exports.loadSupergraphSdlFromUplinks = exports.UplinkFetcherError = exports.SUPERGRAPH_SDL_QUERY = void 0;
|
|
4
7
|
const apollo_server_env_1 = require("apollo-server-env");
|
|
8
|
+
const async_retry_1 = __importDefault(require("async-retry"));
|
|
5
9
|
const outOfBandReporter_1 = require("./outOfBandReporter");
|
|
6
10
|
exports.SUPERGRAPH_SDL_QUERY = `#graphql
|
|
7
11
|
query SupergraphSdl($apiKey: String!, $ref: String!, $ifAfterId: ID) {
|
|
@@ -10,6 +14,7 @@ exports.SUPERGRAPH_SDL_QUERY = `#graphql
|
|
|
10
14
|
... on RouterConfigResult {
|
|
11
15
|
id
|
|
12
16
|
supergraphSdl: supergraphSDL
|
|
17
|
+
minDelaySeconds
|
|
13
18
|
}
|
|
14
19
|
... on FetchError {
|
|
15
20
|
code
|
|
@@ -20,30 +25,29 @@ exports.SUPERGRAPH_SDL_QUERY = `#graphql
|
|
|
20
25
|
`;
|
|
21
26
|
const { name, version } = require('../../../package.json');
|
|
22
27
|
const fetchErrorMsg = "An error occurred while fetching your schema from Apollo: ";
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
let result = null;
|
|
28
|
-
while (retries++ <= maxRetries && result == null) {
|
|
29
|
-
try {
|
|
30
|
-
result = await loadSupergraphSdlFromStorage({
|
|
31
|
-
graphRef,
|
|
32
|
-
apiKey,
|
|
33
|
-
endpoint: endpoints[fetchCounter++ % endpoints.length],
|
|
34
|
-
errorReportingEndpoint,
|
|
35
|
-
fetcher,
|
|
36
|
-
compositionId
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
catch (e) {
|
|
40
|
-
lastException = e;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
if (result === null && lastException !== null) {
|
|
44
|
-
throw lastException;
|
|
28
|
+
class UplinkFetcherError extends Error {
|
|
29
|
+
constructor(message) {
|
|
30
|
+
super(message);
|
|
31
|
+
this.name = 'UplinkFetcherError';
|
|
45
32
|
}
|
|
46
|
-
|
|
33
|
+
}
|
|
34
|
+
exports.UplinkFetcherError = UplinkFetcherError;
|
|
35
|
+
async function loadSupergraphSdlFromUplinks({ graphRef, apiKey, endpoints, errorReportingEndpoint, fetcher, compositionId, maxRetries, roundRobinSeed, earliestFetchTime, }) {
|
|
36
|
+
return (0, async_retry_1.default)(() => loadSupergraphSdlFromStorage({
|
|
37
|
+
graphRef,
|
|
38
|
+
apiKey,
|
|
39
|
+
endpoint: endpoints[roundRobinSeed++ % endpoints.length],
|
|
40
|
+
errorReportingEndpoint,
|
|
41
|
+
fetcher,
|
|
42
|
+
compositionId,
|
|
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
|
+
}
|
|
50
|
+
});
|
|
47
51
|
}
|
|
48
52
|
exports.loadSupergraphSdlFromUplinks = loadSupergraphSdlFromUplinks;
|
|
49
53
|
async function loadSupergraphSdlFromStorage({ graphRef, apiKey, endpoint, errorReportingEndpoint, fetcher, compositionId, }) {
|
|
@@ -81,7 +85,7 @@ async function loadSupergraphSdlFromStorage({ graphRef, apiKey, endpoint, errorR
|
|
|
81
85
|
endedAt: endTime,
|
|
82
86
|
fetcher,
|
|
83
87
|
});
|
|
84
|
-
throw new
|
|
88
|
+
throw new UplinkFetcherError(fetchErrorMsg + ((_a = e.message) !== null && _a !== void 0 ? _a : e));
|
|
85
89
|
}
|
|
86
90
|
const endTime = new Date();
|
|
87
91
|
let response;
|
|
@@ -90,15 +94,15 @@ async function loadSupergraphSdlFromStorage({ graphRef, apiKey, endpoint, errorR
|
|
|
90
94
|
response = await result.json();
|
|
91
95
|
}
|
|
92
96
|
catch (e) {
|
|
93
|
-
throw new
|
|
97
|
+
throw new UplinkFetcherError((_b = fetchErrorMsg + result.status + ' ' + e.message) !== null && _b !== void 0 ? _b : e);
|
|
94
98
|
}
|
|
95
99
|
if ('errors' in response) {
|
|
96
|
-
throw new
|
|
100
|
+
throw new UplinkFetcherError([fetchErrorMsg, ...response.errors.map((error) => error.message)].join('\n'));
|
|
97
101
|
}
|
|
98
102
|
}
|
|
99
103
|
else {
|
|
100
104
|
await (0, outOfBandReporter_1.submitOutOfBandReportIfConfigured)({
|
|
101
|
-
error: new
|
|
105
|
+
error: new UplinkFetcherError(fetchErrorMsg + result.status + ' ' + result.statusText),
|
|
102
106
|
request,
|
|
103
107
|
endpoint: errorReportingEndpoint,
|
|
104
108
|
response: result,
|
|
@@ -106,22 +110,22 @@ async function loadSupergraphSdlFromStorage({ graphRef, apiKey, endpoint, errorR
|
|
|
106
110
|
endedAt: endTime,
|
|
107
111
|
fetcher,
|
|
108
112
|
});
|
|
109
|
-
throw new
|
|
113
|
+
throw new UplinkFetcherError(fetchErrorMsg + result.status + ' ' + result.statusText);
|
|
110
114
|
}
|
|
111
115
|
const { routerConfig } = response.data;
|
|
112
116
|
if (routerConfig.__typename === 'RouterConfigResult') {
|
|
113
|
-
const { id, supergraphSdl, } = routerConfig;
|
|
114
|
-
return { id, supergraphSdl: supergraphSdl };
|
|
117
|
+
const { id, supergraphSdl, minDelaySeconds, } = routerConfig;
|
|
118
|
+
return { id, supergraphSdl: supergraphSdl, minDelaySeconds };
|
|
115
119
|
}
|
|
116
120
|
else if (routerConfig.__typename === 'FetchError') {
|
|
117
121
|
const { code, message } = routerConfig;
|
|
118
|
-
throw new
|
|
122
|
+
throw new UplinkFetcherError(`${code}: ${message}`);
|
|
119
123
|
}
|
|
120
124
|
else if (routerConfig.__typename === 'Unchanged') {
|
|
121
125
|
return null;
|
|
122
126
|
}
|
|
123
127
|
else {
|
|
124
|
-
throw new
|
|
128
|
+
throw new UplinkFetcherError('Programming error: unhandled response failure');
|
|
125
129
|
}
|
|
126
130
|
}
|
|
127
131
|
exports.loadSupergraphSdlFromStorage = loadSupergraphSdlFromStorage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadSupergraphSdlFromStorage.js","sourceRoot":"","sources":["../../../src/supergraphManagers/UplinkFetcher/loadSupergraphSdlFromStorage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"loadSupergraphSdlFromStorage.js","sourceRoot":"","sources":["../../../src/supergraphManagers/UplinkFetcher/loadSupergraphSdlFromStorage.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,4 +2,5 @@ export { LocalCompose } from './LocalCompose';
|
|
|
2
2
|
export { LegacyFetcher } from './LegacyFetcher';
|
|
3
3
|
export { IntrospectAndCompose } from './IntrospectAndCompose';
|
|
4
4
|
export { UplinkFetcher } from './UplinkFetcher';
|
|
5
|
+
export { UplinkFetcherError } from './UplinkFetcher/loadSupergraphSdlFromStorage';
|
|
5
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/supergraphManagers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/supergraphManagers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.UplinkFetcher = exports.IntrospectAndCompose = exports.LegacyFetcher = exports.LocalCompose = void 0;
|
|
3
|
+
exports.UplinkFetcherError = exports.UplinkFetcher = exports.IntrospectAndCompose = exports.LegacyFetcher = exports.LocalCompose = void 0;
|
|
4
4
|
var LocalCompose_1 = require("./LocalCompose");
|
|
5
5
|
Object.defineProperty(exports, "LocalCompose", { enumerable: true, get: function () { return LocalCompose_1.LocalCompose; } });
|
|
6
6
|
var LegacyFetcher_1 = require("./LegacyFetcher");
|
|
@@ -9,4 +9,6 @@ var IntrospectAndCompose_1 = require("./IntrospectAndCompose");
|
|
|
9
9
|
Object.defineProperty(exports, "IntrospectAndCompose", { enumerable: true, get: function () { return IntrospectAndCompose_1.IntrospectAndCompose; } });
|
|
10
10
|
var UplinkFetcher_1 = require("./UplinkFetcher");
|
|
11
11
|
Object.defineProperty(exports, "UplinkFetcher", { enumerable: true, get: function () { return UplinkFetcher_1.UplinkFetcher; } });
|
|
12
|
+
var loadSupergraphSdlFromStorage_1 = require("./UplinkFetcher/loadSupergraphSdlFromStorage");
|
|
13
|
+
Object.defineProperty(exports, "UplinkFetcherError", { enumerable: true, get: function () { return loadSupergraphSdlFromStorage_1.UplinkFetcherError; } });
|
|
12
14
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/supergraphManagers/index.ts"],"names":[],"mappings":";;;AAAA,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AACrB,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AACtB,+DAA8D;AAArD,4HAAA,oBAAoB,OAAA;AAC7B,iDAAgD;AAAvC,8GAAA,aAAa,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/supergraphManagers/index.ts"],"names":[],"mappings":";;;AAAA,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AACrB,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AACtB,+DAA8D;AAArD,4HAAA,oBAAoB,OAAA;AAC7B,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AACtB,6FAAiF;AAAxE,kIAAA,kBAAkB,OAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@apollo/gateway",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.49.0",
|
|
4
4
|
"description": "Apollo Gateway",
|
|
5
5
|
"author": "Apollo <packages@apollographql.com>",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -26,11 +26,11 @@
|
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
28
|
"@apollo/core-schema": "^0.2.0",
|
|
29
|
-
"@apollo/federation": "^0.35.
|
|
30
|
-
"@apollo/query-planner": "^0.
|
|
29
|
+
"@apollo/federation": "^0.35.4",
|
|
30
|
+
"@apollo/query-planner": "^0.9.0",
|
|
31
31
|
"@josephg/resolvable": "^1.0.1",
|
|
32
32
|
"@opentelemetry/api": "^1.0.1",
|
|
33
|
-
"@types/node-fetch": "2.
|
|
33
|
+
"@types/node-fetch": "2.6.1",
|
|
34
34
|
"apollo-reporting-protobuf": "^0.8.0 || ^3.0.0",
|
|
35
35
|
"apollo-server-caching": "^0.7.0 || ^3.0.0",
|
|
36
36
|
"apollo-server-core": "^2.23.0 || ^3.0.0",
|
|
@@ -38,6 +38,7 @@
|
|
|
38
38
|
"apollo-server-errors": "^2.5.0 || ^3.0.0",
|
|
39
39
|
"apollo-server-types": "^0.9.0 || ^3.0.0",
|
|
40
40
|
"apollo-utilities": "^1.3.0",
|
|
41
|
+
"async-retry": "^1.3.3",
|
|
41
42
|
"loglevel": "^1.6.1",
|
|
42
43
|
"make-fetch-happen": "^8.0.0",
|
|
43
44
|
"pretty-format": "^27.4.6",
|
|
@@ -46,5 +47,5 @@
|
|
|
46
47
|
"peerDependencies": {
|
|
47
48
|
"graphql": "^15.8.0 || ^16.0.0"
|
|
48
49
|
},
|
|
49
|
-
"gitHead": "
|
|
50
|
+
"gitHead": "6103260972dc4913aa640c49d5630d2f0a77cec3"
|
|
50
51
|
}
|
|
@@ -41,6 +41,8 @@ export type FetchError = {
|
|
|
41
41
|
__typename?: 'FetchError';
|
|
42
42
|
code: FetchErrorCode;
|
|
43
43
|
message: Scalars['String'];
|
|
44
|
+
/** Minimum delay before the next fetch should occur, in seconds. */
|
|
45
|
+
minDelaySeconds: Scalars['Float'];
|
|
44
46
|
};
|
|
45
47
|
|
|
46
48
|
export enum FetchErrorCode {
|
|
@@ -111,16 +113,23 @@ export type RouterConfigResponse = FetchError | RouterConfigResult | Unchanged;
|
|
|
111
113
|
|
|
112
114
|
export type RouterConfigResult = {
|
|
113
115
|
__typename?: 'RouterConfigResult';
|
|
116
|
+
/** Variant-unique identifier. */
|
|
114
117
|
id: Scalars['ID'];
|
|
115
118
|
/** Messages that should be reported back to the operators of this router, eg through logs and/or monitoring. */
|
|
116
119
|
messages: Array<Message>;
|
|
117
|
-
/**
|
|
120
|
+
/** Minimum delay before the next fetch should occur, in seconds. */
|
|
121
|
+
minDelaySeconds: Scalars['Float'];
|
|
122
|
+
/** The configuration as core schema. */
|
|
118
123
|
supergraphSDL: Scalars['String'];
|
|
119
124
|
};
|
|
120
125
|
|
|
126
|
+
/** Response indicating the router configuration available is not newer than the one passed in `ifAfterId`. */
|
|
121
127
|
export type Unchanged = {
|
|
122
128
|
__typename?: 'Unchanged';
|
|
129
|
+
/** Variant-unique identifier for the configuration that remains in place. */
|
|
123
130
|
id: Scalars['ID'];
|
|
131
|
+
/** Minimum delay before the next fetch should occur, in seconds. */
|
|
132
|
+
minDelaySeconds: Scalars['Float'];
|
|
124
133
|
};
|
|
125
134
|
|
|
126
135
|
export type SupergraphSdlQueryVariables = Exact<{
|
|
@@ -130,7 +139,7 @@ export type SupergraphSdlQueryVariables = Exact<{
|
|
|
130
139
|
}>;
|
|
131
140
|
|
|
132
141
|
|
|
133
|
-
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' } };
|
|
134
143
|
|
|
135
144
|
export type OobReportMutationVariables = Exact<{
|
|
136
145
|
input?: InputMaybe<ApiMonitoringReport>;
|
|
@@ -46,6 +46,7 @@ Scenario: should not confuse union types with overlapping field names
|
|
|
46
46
|
"kind": "Fetch",
|
|
47
47
|
"serviceName": "documents",
|
|
48
48
|
"variableUsages": [],
|
|
49
|
+
"operationKind": "query",
|
|
49
50
|
"operation": "{body{__typename ...on Image{attributes{url}}...on Text{attributes{bold text}}}}"
|
|
50
51
|
}
|
|
51
52
|
}
|
|
@@ -29,6 +29,7 @@ Scenario: experimental compression to downstream services should generate fragme
|
|
|
29
29
|
"kind": "Fetch",
|
|
30
30
|
"serviceName": "reviews",
|
|
31
31
|
"variableUsages": [],
|
|
32
|
+
"operationKind": "query",
|
|
32
33
|
"operation": "{topReviews{...__QueryPlanFragment_1__}}fragment __QueryPlanFragment_1__ on Review{body author product{...__QueryPlanFragment_0__}}fragment __QueryPlanFragment_0__ on Product{__typename ...on Book{__typename isbn}...on Furniture{__typename upc}}"
|
|
33
34
|
},
|
|
34
35
|
{
|
|
@@ -54,6 +55,7 @@ Scenario: experimental compression to downstream services should generate fragme
|
|
|
54
55
|
}
|
|
55
56
|
],
|
|
56
57
|
"variableUsages": [],
|
|
58
|
+
"operationKind": "query",
|
|
57
59
|
"operation": "query($representations:[_Any!]!){_entities(representations:$representations){...on Book{__typename isbn title year}}}"
|
|
58
60
|
}
|
|
59
61
|
},
|
|
@@ -76,6 +78,7 @@ Scenario: experimental compression to downstream services should generate fragme
|
|
|
76
78
|
}
|
|
77
79
|
],
|
|
78
80
|
"variableUsages": [],
|
|
81
|
+
"operationKind": "query",
|
|
79
82
|
"operation": "query($representations:[_Any!]!){_entities(representations:$representations){...on Book{name}}}"
|
|
80
83
|
}
|
|
81
84
|
}
|
|
@@ -106,6 +109,7 @@ Scenario: experimental compression to downstream services should generate fragme
|
|
|
106
109
|
}
|
|
107
110
|
],
|
|
108
111
|
"variableUsages": [],
|
|
112
|
+
"operationKind": "query",
|
|
109
113
|
"operation": "query($representations:[_Any!]!){_entities(representations:$representations){...on Furniture{name price details{country}}...on Book{price details{country}}}}"
|
|
110
114
|
}
|
|
111
115
|
}
|
|
@@ -135,6 +139,7 @@ Scenario: experimental compression to downstream services shouldn't generate fra
|
|
|
135
139
|
"kind": "Fetch",
|
|
136
140
|
"serviceName": "reviews",
|
|
137
141
|
"variableUsages": [],
|
|
142
|
+
"operationKind": "query",
|
|
138
143
|
"operation": "{topReviews{body author}}"
|
|
139
144
|
}
|
|
140
145
|
}
|
|
@@ -160,6 +165,7 @@ Scenario: experimental compression to downstream services should generate fragme
|
|
|
160
165
|
"kind": "Fetch",
|
|
161
166
|
"serviceName": "reviews",
|
|
162
167
|
"variableUsages": [],
|
|
168
|
+
"operationKind": "query",
|
|
163
169
|
"operation": "{topReviews{...__QueryPlanFragment_0__}}fragment __QueryPlanFragment_0__ on Review{id body author}"
|
|
164
170
|
}
|
|
165
171
|
}
|
|
@@ -194,6 +200,7 @@ Scenario: experimental compression to downstream services should generate fragme
|
|
|
194
200
|
"kind": "Fetch",
|
|
195
201
|
"serviceName": "reviews",
|
|
196
202
|
"variableUsages": [],
|
|
203
|
+
"operationKind": "query",
|
|
197
204
|
"operation": "{reviews:topReviews{...__QueryPlanFragment_1__}}fragment __QueryPlanFragment_1__ on Review{content:body author product{...__QueryPlanFragment_0__}}fragment __QueryPlanFragment_0__ on Product{__typename ...on Book{__typename isbn}...on Furniture{__typename upc}}"
|
|
198
205
|
},
|
|
199
206
|
{
|
|
@@ -219,6 +226,7 @@ Scenario: experimental compression to downstream services should generate fragme
|
|
|
219
226
|
}
|
|
220
227
|
],
|
|
221
228
|
"variableUsages": [],
|
|
229
|
+
"operationKind": "query",
|
|
222
230
|
"operation": "query($representations:[_Any!]!){_entities(representations:$representations){...on Book{__typename isbn title year}}}"
|
|
223
231
|
}
|
|
224
232
|
},
|
|
@@ -241,6 +249,7 @@ Scenario: experimental compression to downstream services should generate fragme
|
|
|
241
249
|
}
|
|
242
250
|
],
|
|
243
251
|
"variableUsages": [],
|
|
252
|
+
"operationKind": "query",
|
|
244
253
|
"operation": "query($representations:[_Any!]!){_entities(representations:$representations){...on Book{name}}}"
|
|
245
254
|
}
|
|
246
255
|
}
|
|
@@ -271,6 +280,7 @@ Scenario: experimental compression to downstream services should generate fragme
|
|
|
271
280
|
}
|
|
272
281
|
],
|
|
273
282
|
"variableUsages": [],
|
|
283
|
+
"operationKind": "query",
|
|
274
284
|
"operation": "query($representations:[_Any!]!){_entities(representations:$representations){...on Furniture{name cost:price details{origin:country}}...on Book{cost:price details{origin:country}}}}"
|
|
275
285
|
}
|
|
276
286
|
}
|