@apollo/gateway 2.0.0-alpha.2 → 2.0.0-alpha.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.
- package/dist/config.d.ts +2 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/datasources/RemoteGraphQLDataSource.d.ts.map +1 -1
- package/dist/datasources/RemoteGraphQLDataSource.js +4 -1
- package/dist/datasources/RemoteGraphQLDataSource.js.map +1 -1
- package/dist/executeQueryPlan.d.ts.map +1 -1
- package/dist/executeQueryPlan.js +1 -1
- package/dist/executeQueryPlan.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -6
- package/dist/index.js.map +1 -1
- package/dist/loadSupergraphSdlFromStorage.d.ts +13 -5
- package/dist/loadSupergraphSdlFromStorage.d.ts.map +1 -1
- package/dist/loadSupergraphSdlFromStorage.js +34 -7
- package/dist/loadSupergraphSdlFromStorage.js.map +1 -1
- package/dist/outOfBandReporter.d.ts +10 -12
- package/dist/outOfBandReporter.d.ts.map +1 -1
- package/dist/outOfBandReporter.js +70 -73
- package/dist/outOfBandReporter.js.map +1 -1
- package/package.json +4 -4
- package/src/__mocks__/make-fetch-happen-fetcher.ts +3 -1
- package/src/__tests__/executeQueryPlan.test.ts +598 -0
- package/src/__tests__/gateway/buildService.test.ts +1 -1
- package/src/__tests__/gateway/composedSdl.test.ts +1 -1
- package/src/__tests__/gateway/executor.test.ts +1 -1
- package/src/__tests__/gateway/reporting.test.ts +8 -5
- package/src/__tests__/integration/configuration.test.ts +44 -4
- package/src/__tests__/integration/networkRequests.test.ts +21 -19
- package/src/__tests__/integration/nockMocks.ts +12 -6
- package/src/__tests__/loadSupergraphSdlFromStorage.test.ts +101 -452
- package/src/__tests__/nockAssertions.ts +20 -0
- package/src/config.ts +3 -1
- package/src/datasources/RemoteGraphQLDataSource.ts +8 -2
- package/src/datasources/__tests__/RemoteGraphQLDataSource.test.ts +4 -4
- package/src/executeQueryPlan.ts +11 -1
- package/src/index.ts +26 -12
- package/src/loadSupergraphSdlFromStorage.ts +54 -8
- package/src/outOfBandReporter.ts +87 -89
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.submitOutOfBandReportIfConfigured = exports.OUT_OF_BAND_REPORTER_QUERY = void 0;
|
|
4
4
|
const graphqlTypes_1 = require("./__generated__/graphqlTypes");
|
|
5
5
|
exports.OUT_OF_BAND_REPORTER_QUERY = `#graphql
|
|
6
6
|
mutation OOBReport($input: APIMonitoringReport) {
|
|
@@ -8,81 +8,78 @@ exports.OUT_OF_BAND_REPORTER_QUERY = `#graphql
|
|
|
8
8
|
}
|
|
9
9
|
`;
|
|
10
10
|
const { name, version } = require('../package.json');
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
errorCode = graphqlTypes_1.ErrorCode.Other;
|
|
38
|
-
}
|
|
11
|
+
async function submitOutOfBandReportIfConfigured({ error, request, endpoint, response, startedAt, endedAt, tags, fetcher, }) {
|
|
12
|
+
var _a, _b;
|
|
13
|
+
if (!endpoint) {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
let errorCode;
|
|
17
|
+
if (!response) {
|
|
18
|
+
errorCode = graphqlTypes_1.ErrorCode.ConnectionFailed;
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
switch (response.status) {
|
|
22
|
+
case 400:
|
|
23
|
+
case 413:
|
|
24
|
+
case 422:
|
|
25
|
+
errorCode = graphqlTypes_1.ErrorCode.InvalidBody;
|
|
26
|
+
break;
|
|
27
|
+
case 408:
|
|
28
|
+
case 504:
|
|
29
|
+
errorCode = graphqlTypes_1.ErrorCode.Timeout;
|
|
30
|
+
break;
|
|
31
|
+
case 502:
|
|
32
|
+
case 503:
|
|
33
|
+
errorCode = graphqlTypes_1.ErrorCode.ConnectionFailed;
|
|
34
|
+
break;
|
|
35
|
+
default:
|
|
36
|
+
errorCode = graphqlTypes_1.ErrorCode.Other;
|
|
39
37
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
request: {
|
|
48
|
-
url: request.url,
|
|
49
|
-
body: await request.text(),
|
|
50
|
-
},
|
|
51
|
-
response: response
|
|
52
|
-
? {
|
|
53
|
-
httpStatusCode: response.status,
|
|
54
|
-
body: responseBody,
|
|
55
|
-
}
|
|
56
|
-
: null,
|
|
57
|
-
startedAt: startedAt.toISOString(),
|
|
58
|
-
endedAt: endedAt.toISOString(),
|
|
59
|
-
tags: tags,
|
|
38
|
+
}
|
|
39
|
+
const responseBody = await (response === null || response === void 0 ? void 0 : response.text());
|
|
40
|
+
const variables = {
|
|
41
|
+
input: {
|
|
42
|
+
error: {
|
|
43
|
+
code: errorCode,
|
|
44
|
+
message: error.message,
|
|
60
45
|
},
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
46
|
+
request: {
|
|
47
|
+
url: request.url,
|
|
48
|
+
body: await request.text(),
|
|
49
|
+
},
|
|
50
|
+
response: response
|
|
51
|
+
? {
|
|
52
|
+
httpStatusCode: response.status,
|
|
53
|
+
body: responseBody,
|
|
54
|
+
}
|
|
55
|
+
: null,
|
|
56
|
+
startedAt: startedAt.toISOString(),
|
|
57
|
+
endedAt: endedAt.toISOString(),
|
|
58
|
+
tags: tags,
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
try {
|
|
62
|
+
const oobResponse = await fetcher(endpoint, {
|
|
63
|
+
method: 'POST',
|
|
64
|
+
body: JSON.stringify({
|
|
65
|
+
query: exports.OUT_OF_BAND_REPORTER_QUERY,
|
|
66
|
+
variables,
|
|
67
|
+
}),
|
|
68
|
+
headers: {
|
|
69
|
+
'apollographql-client-name': name,
|
|
70
|
+
'apollographql-client-version': version,
|
|
71
|
+
'user-agent': `${name}/${version}`,
|
|
72
|
+
'content-type': 'application/json',
|
|
73
|
+
},
|
|
74
|
+
});
|
|
75
|
+
const parsedResponse = await oobResponse.json();
|
|
76
|
+
if (!((_a = parsedResponse === null || parsedResponse === void 0 ? void 0 : parsedResponse.data) === null || _a === void 0 ? void 0 : _a.reportError)) {
|
|
77
|
+
throw new Error(`Out-of-band error reporting failed: ${oobResponse.status} ${oobResponse.statusText}`);
|
|
83
78
|
}
|
|
84
79
|
}
|
|
80
|
+
catch (e) {
|
|
81
|
+
throw new Error(`Out-of-band error reporting failed: ${(_b = e.message) !== null && _b !== void 0 ? _b : e}`);
|
|
82
|
+
}
|
|
85
83
|
}
|
|
86
|
-
exports.
|
|
87
|
-
OutOfBandReporter.endpoint = process.env.APOLLO_OUT_OF_BAND_REPORTER_ENDPOINT || null;
|
|
84
|
+
exports.submitOutOfBandReportIfConfigured = submitOutOfBandReportIfConfigured;
|
|
88
85
|
//# sourceMappingURL=outOfBandReporter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outOfBandReporter.js","sourceRoot":"","sources":["../src/outOfBandReporter.ts"],"names":[],"mappings":";;;AAEA,+DAIsC;AAGzB,QAAA,0BAA0B,GAAgB;;;;CAItD,CAAC;AAEF,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"outOfBandReporter.js","sourceRoot":"","sources":["../src/outOfBandReporter.ts"],"names":[],"mappings":";;;AAEA,+DAIsC;AAGzB,QAAA,0BAA0B,GAAgB;;;;CAItD,CAAC;AAEF,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAe9C,KAAK,UAAU,iCAAiC,CAAC,EACtD,KAAK,EACL,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,OAAO,EACP,IAAI,EACJ,OAAO,GAUR;;IAEC,IAAI,CAAC,QAAQ,EAAE;QACb,OAAO;KACR;IAED,IAAI,SAAoB,CAAC;IACzB,IAAI,CAAC,QAAQ,EAAE;QACb,SAAS,GAAG,wBAAS,CAAC,gBAAgB,CAAC;KACxC;SAAM;QAEL,QAAQ,QAAQ,CAAC,MAAM,EAAE;YACvB,KAAK,GAAG,CAAC;YACT,KAAK,GAAG,CAAC;YACT,KAAK,GAAG;gBACN,SAAS,GAAG,wBAAS,CAAC,WAAW,CAAC;gBAClC,MAAM;YACR,KAAK,GAAG,CAAC;YACT,KAAK,GAAG;gBACN,SAAS,GAAG,wBAAS,CAAC,OAAO,CAAC;gBAC9B,MAAM;YACR,KAAK,GAAG,CAAC;YACT,KAAK,GAAG;gBACN,SAAS,GAAG,wBAAS,CAAC,gBAAgB,CAAC;gBACvC,MAAM;YACR;gBACE,SAAS,GAAG,wBAAS,CAAC,KAAK,CAAC;SAC/B;KACF;IAED,MAAM,YAAY,GAAuB,MAAM,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,EAAE,CAAA,CAAC;IAEhE,MAAM,SAAS,GAA+B;QAC5C,KAAK,EAAE;YACL,KAAK,EAAE;gBACL,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB;YACD,OAAO,EAAE;gBACP,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,EAAE;aAC3B;YACD,QAAQ,EAAE,QAAQ;gBAChB,CAAC,CAAC;oBACE,cAAc,EAAE,QAAQ,CAAC,MAAM;oBAC/B,IAAI,EAAE,YAAY;iBACnB;gBACH,CAAC,CAAC,IAAI;YACR,SAAS,EAAE,SAAS,CAAC,WAAW,EAAE;YAClC,OAAO,EAAE,OAAO,CAAC,WAAW,EAAE;YAC9B,IAAI,EAAE,IAAI;SACX;KACF,CAAC;IAEF,IAAI;QACF,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE;YAC1C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,KAAK,EAAE,kCAA0B;gBACjC,SAAS;aACV,CAAC;YACF,OAAO,EAAE;gBACP,2BAA2B,EAAE,IAAI;gBACjC,8BAA8B,EAAE,OAAO;gBACvC,YAAY,EAAE,GAAG,IAAI,IAAI,OAAO,EAAE;gBAClC,cAAc,EAAE,kBAAkB;aACnC;SACF,CAAC,CAAC;QACH,MAAM,cAAc,GAA4B,MAAM,WAAW,CAAC,IAAI,EAAE,CAAC;QACzE,IAAI,CAAC,CAAA,MAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAE,IAAI,0CAAE,WAAW,CAAA,EAAE;YACtC,MAAM,IAAI,KAAK,CACb,uCAAuC,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,UAAU,EAAE,CACtF,CAAC;SACH;KACF;IAAC,OAAO,CAAC,EAAE;QACV,MAAM,IAAI,KAAK,CAAC,uCAAuC,MAAA,CAAC,CAAC,OAAO,mCAAI,CAAC,EAAE,CAAC,CAAC;KAC1E;AACH,CAAC;AA/FD,8EA+FC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@apollo/gateway",
|
|
3
|
-
"version": "2.0.0-alpha.
|
|
3
|
+
"version": "2.0.0-alpha.3",
|
|
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-alpha.
|
|
28
|
+
"@apollo/composition": "^2.0.0-alpha.3",
|
|
29
29
|
"@apollo/core-schema": "^0.2.0",
|
|
30
|
-
"@apollo/query-planner": "^2.0.0-alpha.
|
|
30
|
+
"@apollo/query-planner": "^2.0.0-alpha.3",
|
|
31
31
|
"@opentelemetry/api": "^1.0.1",
|
|
32
32
|
"@types/node-fetch": "2.5.12",
|
|
33
33
|
"apollo-graphql": "^0.9.5",
|
|
@@ -45,5 +45,5 @@
|
|
|
45
45
|
"peerDependencies": {
|
|
46
46
|
"graphql": "^15.7.0"
|
|
47
47
|
},
|
|
48
|
-
"gitHead": "
|
|
48
|
+
"gitHead": "a8e0485664fafc7d9e3537f77c8907832f48d25b"
|
|
49
49
|
}
|
|
@@ -20,6 +20,7 @@ interface MakeFetchHappenMock extends jest.MockedFunction<typeof fetch> {
|
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
const mockMakeFetchHappen = jest.fn(fetcher) as unknown as MakeFetchHappenMock;
|
|
23
|
+
const defaults = () => mockMakeFetchHappen;
|
|
23
24
|
|
|
24
25
|
mockMakeFetchHappen.mockResponseOnce = (
|
|
25
26
|
data?: BodyInit,
|
|
@@ -47,7 +48,8 @@ mockMakeFetchHappen.mockJSONResponseOnce = (
|
|
|
47
48
|
};
|
|
48
49
|
|
|
49
50
|
const makeFetchMock = {
|
|
50
|
-
|
|
51
|
+
fetch: mockMakeFetchHappen,
|
|
52
|
+
defaults,
|
|
51
53
|
};
|
|
52
54
|
|
|
53
55
|
jest.doMock('make-fetch-happen', () => makeFetchMock);
|