@apollo/gateway 0.300.0-alpha.2 → 2.0.0-alpha.2
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/LICENSE +95 -0
- package/README.md +1 -1
- package/dist/__generated__/graphqlTypes.d.ts +130 -0
- package/dist/__generated__/graphqlTypes.d.ts.map +1 -0
- package/dist/__generated__/graphqlTypes.js +25 -0
- package/dist/__generated__/graphqlTypes.js.map +1 -0
- package/dist/config.d.ts +104 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +47 -0
- package/dist/config.js.map +1 -0
- package/dist/datasources/LocalGraphQLDataSource.d.ts +3 -3
- package/dist/datasources/LocalGraphQLDataSource.d.ts.map +1 -1
- package/dist/datasources/LocalGraphQLDataSource.js +5 -5
- package/dist/datasources/LocalGraphQLDataSource.js.map +1 -1
- package/dist/datasources/RemoteGraphQLDataSource.d.ts +6 -4
- package/dist/datasources/RemoteGraphQLDataSource.d.ts.map +1 -1
- package/dist/datasources/RemoteGraphQLDataSource.js +60 -17
- package/dist/datasources/RemoteGraphQLDataSource.js.map +1 -1
- package/dist/datasources/index.d.ts +1 -1
- package/dist/datasources/index.d.ts.map +1 -1
- package/dist/datasources/index.js +1 -0
- package/dist/datasources/index.js.map +1 -1
- package/dist/datasources/parseCacheControlHeader.d.ts +2 -0
- package/dist/datasources/parseCacheControlHeader.d.ts.map +1 -0
- package/dist/datasources/parseCacheControlHeader.js +16 -0
- package/dist/datasources/parseCacheControlHeader.js.map +1 -0
- package/dist/datasources/types.d.ts +16 -1
- package/dist/datasources/types.d.ts.map +1 -1
- package/dist/datasources/types.js +7 -0
- package/dist/datasources/types.js.map +1 -1
- package/dist/executeQueryPlan.d.ts +2 -1
- package/dist/executeQueryPlan.d.ts.map +1 -1
- package/dist/executeQueryPlan.js +199 -112
- package/dist/executeQueryPlan.js.map +1 -1
- package/dist/index.d.ts +62 -80
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +543 -234
- package/dist/index.js.map +1 -1
- package/dist/loadServicesFromRemoteEndpoint.d.ts +9 -9
- package/dist/loadServicesFromRemoteEndpoint.d.ts.map +1 -1
- package/dist/loadServicesFromRemoteEndpoint.js +13 -8
- package/dist/loadServicesFromRemoteEndpoint.js.map +1 -1
- package/dist/loadSupergraphSdlFromStorage.d.ts +13 -0
- package/dist/loadSupergraphSdlFromStorage.d.ts.map +1 -0
- package/dist/loadSupergraphSdlFromStorage.js +101 -0
- package/dist/loadSupergraphSdlFromStorage.js.map +1 -0
- package/dist/operationContext.d.ts +17 -0
- package/dist/operationContext.d.ts.map +1 -0
- package/dist/operationContext.js +42 -0
- package/dist/operationContext.js.map +1 -0
- package/dist/outOfBandReporter.d.ts +15 -0
- package/dist/outOfBandReporter.d.ts.map +1 -0
- package/dist/outOfBandReporter.js +88 -0
- package/dist/outOfBandReporter.js.map +1 -0
- package/dist/utilities/array.d.ts +1 -2
- package/dist/utilities/array.d.ts.map +1 -1
- package/dist/utilities/array.js +7 -14
- package/dist/utilities/array.js.map +1 -1
- package/dist/utilities/assert.d.ts +2 -0
- package/dist/utilities/assert.d.ts.map +1 -0
- package/dist/utilities/assert.js +10 -0
- package/dist/utilities/assert.js.map +1 -0
- package/dist/utilities/cleanErrorOfInaccessibleNames.d.ts +3 -0
- package/dist/utilities/cleanErrorOfInaccessibleNames.d.ts.map +1 -0
- package/dist/utilities/cleanErrorOfInaccessibleNames.js +27 -0
- package/dist/utilities/cleanErrorOfInaccessibleNames.js.map +1 -0
- package/dist/utilities/deepMerge.js +2 -2
- package/dist/utilities/deepMerge.js.map +1 -1
- package/dist/utilities/graphql.d.ts +1 -4
- package/dist/utilities/graphql.d.ts.map +1 -1
- package/dist/utilities/graphql.js +3 -36
- package/dist/utilities/graphql.js.map +1 -1
- package/dist/utilities/opentelemetry.d.ts +10 -0
- package/dist/utilities/opentelemetry.d.ts.map +1 -0
- package/dist/utilities/opentelemetry.js +19 -0
- package/dist/utilities/opentelemetry.js.map +1 -0
- package/package.json +30 -21
- package/src/__generated__/graphqlTypes.ts +140 -0
- package/src/__mocks__/apollo-server-env.ts +56 -0
- package/src/__mocks__/make-fetch-happen-fetcher.ts +55 -0
- package/src/__mocks__/tsconfig.json +7 -0
- package/src/__tests__/build-query-plan.feature +40 -311
- package/src/__tests__/buildQueryPlan.test.ts +246 -426
- package/src/__tests__/executeQueryPlan.test.ts +1691 -194
- package/src/__tests__/execution-utils.ts +33 -26
- package/src/__tests__/gateway/__snapshots__/opentelemetry.test.ts.snap +195 -0
- package/src/__tests__/gateway/buildService.test.ts +16 -19
- package/src/__tests__/gateway/composedSdl.test.ts +44 -0
- package/src/__tests__/gateway/endToEnd.test.ts +166 -0
- package/src/__tests__/gateway/executor.test.ts +49 -43
- package/src/__tests__/gateway/lifecycle-hooks.test.ts +58 -29
- package/src/__tests__/gateway/opentelemetry.test.ts +123 -0
- package/src/__tests__/gateway/queryPlanCache.test.ts +19 -20
- package/src/__tests__/gateway/reporting.test.ts +76 -55
- package/src/__tests__/integration/abstract-types.test.ts +1086 -22
- package/src/__tests__/integration/aliases.test.ts +5 -6
- package/src/__tests__/integration/boolean.test.ts +40 -38
- package/src/__tests__/integration/complex-key.test.ts +41 -56
- package/src/__tests__/integration/configuration.test.ts +321 -0
- package/src/__tests__/integration/custom-directives.test.ts +61 -46
- package/src/__tests__/integration/fragments.test.ts +8 -2
- package/src/__tests__/integration/list-key.test.ts +2 -2
- package/src/__tests__/integration/logger.test.ts +2 -2
- package/src/__tests__/integration/multiple-key.test.ts +11 -12
- package/src/__tests__/integration/mutations.test.ts +8 -5
- package/src/__tests__/integration/networkRequests.test.ts +447 -289
- package/src/__tests__/integration/nockMocks.ts +95 -66
- package/src/__tests__/integration/provides.test.ts +9 -6
- package/src/__tests__/integration/requires.test.ts +17 -15
- package/src/__tests__/integration/scope.test.ts +557 -0
- package/src/__tests__/integration/unions.test.ts +1 -1
- package/src/__tests__/integration/value-types.test.ts +35 -32
- package/src/__tests__/integration/variables.test.ts +8 -2
- package/src/__tests__/loadServicesFromRemoteEndpoint.test.ts +6 -2
- package/src/__tests__/loadSupergraphSdlFromStorage.test.ts +694 -0
- package/src/__tests__/queryPlanCucumber.test.ts +11 -61
- package/src/__tests__/testSetup.ts +1 -4
- package/src/__tests__/tsconfig.json +2 -1
- package/src/config.ts +225 -0
- package/src/core/__tests__/core.test.ts +412 -0
- package/src/datasources/LocalGraphQLDataSource.ts +9 -10
- package/src/datasources/RemoteGraphQLDataSource.ts +117 -43
- package/src/datasources/__tests__/LocalGraphQLDataSource.test.ts +11 -4
- package/src/datasources/__tests__/RemoteGraphQLDataSource.test.ts +148 -79
- package/src/datasources/__tests__/tsconfig.json +4 -2
- package/src/datasources/index.ts +1 -1
- package/src/datasources/parseCacheControlHeader.ts +43 -0
- package/src/datasources/types.ts +47 -2
- package/src/executeQueryPlan.ts +264 -153
- package/src/index.ts +925 -480
- package/src/loadServicesFromRemoteEndpoint.ts +24 -17
- package/src/loadSupergraphSdlFromStorage.ts +140 -0
- package/src/make-fetch-happen.d.ts +2 -2
- package/src/operationContext.ts +70 -0
- package/src/outOfBandReporter.ts +128 -0
- package/src/utilities/__tests__/cleanErrorOfInaccessibleElements.test.ts +104 -0
- package/src/utilities/__tests__/tsconfig.json +8 -0
- package/src/utilities/array.ts +6 -28
- package/src/utilities/assert.ts +14 -0
- package/src/utilities/cleanErrorOfInaccessibleNames.ts +29 -0
- package/src/utilities/graphql.ts +0 -64
- package/src/utilities/opentelemetry.ts +13 -0
- package/CHANGELOG.md +0 -226
- package/LICENSE.md +0 -20
- package/dist/FieldSet.d.ts +0 -18
- package/dist/FieldSet.d.ts.map +0 -1
- package/dist/FieldSet.js +0 -96
- package/dist/FieldSet.js.map +0 -1
- package/dist/QueryPlan.d.ts +0 -41
- package/dist/QueryPlan.d.ts.map +0 -1
- package/dist/QueryPlan.js +0 -15
- package/dist/QueryPlan.js.map +0 -1
- package/dist/buildQueryPlan.d.ts +0 -44
- package/dist/buildQueryPlan.d.ts.map +0 -1
- package/dist/buildQueryPlan.js +0 -670
- package/dist/buildQueryPlan.js.map +0 -1
- package/dist/loadServicesFromStorage.d.ts +0 -21
- package/dist/loadServicesFromStorage.d.ts.map +0 -1
- package/dist/loadServicesFromStorage.js +0 -64
- package/dist/loadServicesFromStorage.js.map +0 -1
- package/dist/snapshotSerializers/astSerializer.d.ts +0 -3
- package/dist/snapshotSerializers/astSerializer.d.ts.map +0 -1
- package/dist/snapshotSerializers/astSerializer.js +0 -14
- package/dist/snapshotSerializers/astSerializer.js.map +0 -1
- package/dist/snapshotSerializers/index.d.ts +0 -13
- package/dist/snapshotSerializers/index.d.ts.map +0 -1
- package/dist/snapshotSerializers/index.js +0 -15
- package/dist/snapshotSerializers/index.js.map +0 -1
- package/dist/snapshotSerializers/queryPlanSerializer.d.ts +0 -3
- package/dist/snapshotSerializers/queryPlanSerializer.d.ts.map +0 -1
- package/dist/snapshotSerializers/queryPlanSerializer.js +0 -78
- package/dist/snapshotSerializers/queryPlanSerializer.js.map +0 -1
- package/dist/snapshotSerializers/selectionSetSerializer.d.ts +0 -3
- package/dist/snapshotSerializers/selectionSetSerializer.d.ts.map +0 -1
- package/dist/snapshotSerializers/selectionSetSerializer.js +0 -12
- package/dist/snapshotSerializers/selectionSetSerializer.js.map +0 -1
- package/dist/snapshotSerializers/typeSerializer.d.ts +0 -3
- package/dist/snapshotSerializers/typeSerializer.d.ts.map +0 -1
- package/dist/snapshotSerializers/typeSerializer.js +0 -12
- package/dist/snapshotSerializers/typeSerializer.js.map +0 -1
- package/dist/utilities/MultiMap.d.ts +0 -4
- package/dist/utilities/MultiMap.d.ts.map +0 -1
- package/dist/utilities/MultiMap.js +0 -17
- package/dist/utilities/MultiMap.js.map +0 -1
- package/src/FieldSet.ts +0 -169
- package/src/QueryPlan.ts +0 -57
- package/src/__tests__/matchers/toCallService.ts +0 -105
- package/src/__tests__/matchers/toHaveBeenCalledBefore.ts +0 -40
- package/src/__tests__/matchers/toHaveFetched.ts +0 -81
- package/src/__tests__/matchers/toMatchAST.ts +0 -64
- package/src/buildQueryPlan.ts +0 -1190
- package/src/loadServicesFromStorage.ts +0 -170
- package/src/snapshotSerializers/astSerializer.ts +0 -21
- package/src/snapshotSerializers/index.ts +0 -21
- package/src/snapshotSerializers/queryPlanSerializer.ts +0 -144
- package/src/snapshotSerializers/selectionSetSerializer.ts +0 -13
- package/src/snapshotSerializers/typeSerializer.ts +0 -11
- package/src/utilities/MultiMap.ts +0 -11
|
@@ -4,19 +4,26 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.RemoteGraphQLDataSource = void 0;
|
|
7
|
+
const apollo_server_types_1 = require("apollo-server-types");
|
|
7
8
|
const apollo_server_errors_1 = require("apollo-server-errors");
|
|
8
9
|
const apollo_server_env_1 = require("apollo-server-env");
|
|
9
10
|
const predicates_1 = require("../utilities/predicates");
|
|
11
|
+
const types_1 = require("./types");
|
|
10
12
|
const createSHA_1 = __importDefault(require("apollo-server-core/dist/utils/createSHA"));
|
|
13
|
+
const parseCacheControlHeader_1 = require("./parseCacheControlHeader");
|
|
11
14
|
class RemoteGraphQLDataSource {
|
|
12
15
|
constructor(config) {
|
|
13
16
|
this.fetcher = apollo_server_env_1.fetch;
|
|
14
17
|
this.apq = false;
|
|
18
|
+
this.honorSubgraphCacheControlHeader = true;
|
|
15
19
|
if (config) {
|
|
16
20
|
return Object.assign(this, config);
|
|
17
21
|
}
|
|
18
22
|
}
|
|
19
|
-
async process(
|
|
23
|
+
async process(options) {
|
|
24
|
+
var _a;
|
|
25
|
+
const { request, context: originalContext } = options;
|
|
26
|
+
const context = originalContext;
|
|
20
27
|
const headers = (request.http && request.http.headers) || new apollo_server_env_1.Headers();
|
|
21
28
|
headers.set('Content-Type', 'application/json');
|
|
22
29
|
request.http = {
|
|
@@ -25,19 +32,19 @@ class RemoteGraphQLDataSource {
|
|
|
25
32
|
headers,
|
|
26
33
|
};
|
|
27
34
|
if (this.willSendRequest) {
|
|
28
|
-
await this.willSendRequest(
|
|
35
|
+
await this.willSendRequest(options);
|
|
29
36
|
}
|
|
30
37
|
if (!request.query) {
|
|
31
|
-
throw new Error(
|
|
38
|
+
throw new Error('Missing query');
|
|
32
39
|
}
|
|
33
|
-
const apqHash = createSHA_1.default('sha256')
|
|
34
|
-
.update(request.query)
|
|
35
|
-
.digest('hex');
|
|
36
40
|
const { query, ...requestWithoutQuery } = request;
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
:
|
|
41
|
+
const overallCachePolicy = this.honorSubgraphCacheControlHeader &&
|
|
42
|
+
options.kind === types_1.GraphQLDataSourceRequestKind.INCOMING_OPERATION &&
|
|
43
|
+
((_a = options.incomingRequestContext.overallCachePolicy) === null || _a === void 0 ? void 0 : _a.restrict)
|
|
44
|
+
? options.incomingRequestContext.overallCachePolicy
|
|
45
|
+
: null;
|
|
40
46
|
if (this.apq) {
|
|
47
|
+
const apqHash = (0, createSHA_1.default)('sha256').update(request.query).digest('hex');
|
|
41
48
|
requestWithoutQuery.extensions = {
|
|
42
49
|
...request.extensions,
|
|
43
50
|
persistedQuery: {
|
|
@@ -47,8 +54,13 @@ class RemoteGraphQLDataSource {
|
|
|
47
54
|
};
|
|
48
55
|
const apqOptimisticResponse = await this.sendRequest(requestWithoutQuery, context);
|
|
49
56
|
if (!apqOptimisticResponse.errors ||
|
|
50
|
-
!apqOptimisticResponse.errors.find(error => error.message === 'PersistedQueryNotFound')) {
|
|
51
|
-
return respond(
|
|
57
|
+
!apqOptimisticResponse.errors.find((error) => error.message === 'PersistedQueryNotFound')) {
|
|
58
|
+
return this.respond({
|
|
59
|
+
response: apqOptimisticResponse,
|
|
60
|
+
request: requestWithoutQuery,
|
|
61
|
+
context,
|
|
62
|
+
overallCachePolicy,
|
|
63
|
+
});
|
|
52
64
|
}
|
|
53
65
|
}
|
|
54
66
|
const requestWithQuery = {
|
|
@@ -56,25 +68,34 @@ class RemoteGraphQLDataSource {
|
|
|
56
68
|
...requestWithoutQuery,
|
|
57
69
|
};
|
|
58
70
|
const response = await this.sendRequest(requestWithQuery, context);
|
|
59
|
-
return respond(
|
|
71
|
+
return this.respond({
|
|
72
|
+
response,
|
|
73
|
+
request: requestWithQuery,
|
|
74
|
+
context,
|
|
75
|
+
overallCachePolicy,
|
|
76
|
+
});
|
|
60
77
|
}
|
|
61
78
|
async sendRequest(request, context) {
|
|
62
79
|
if (!request.http) {
|
|
63
80
|
throw new Error("Internal error: Only 'http' requests are supported.");
|
|
64
81
|
}
|
|
65
82
|
const { http, ...requestWithoutHttp } = request;
|
|
83
|
+
const stringifiedRequestWithoutHttp = JSON.stringify(requestWithoutHttp);
|
|
66
84
|
const fetchRequest = new apollo_server_env_1.Request(http.url, {
|
|
67
85
|
...http,
|
|
68
|
-
body:
|
|
86
|
+
body: stringifiedRequestWithoutHttp,
|
|
69
87
|
});
|
|
70
88
|
let fetchResponse;
|
|
71
89
|
try {
|
|
72
|
-
fetchResponse = await this.fetcher(
|
|
90
|
+
fetchResponse = await this.fetcher(http.url, {
|
|
91
|
+
...http,
|
|
92
|
+
body: stringifiedRequestWithoutHttp,
|
|
93
|
+
});
|
|
73
94
|
if (!fetchResponse.ok) {
|
|
74
95
|
throw await this.errorFromResponse(fetchResponse);
|
|
75
96
|
}
|
|
76
97
|
const body = await this.parseBody(fetchResponse, fetchRequest, context);
|
|
77
|
-
if (!predicates_1.isObject(body)) {
|
|
98
|
+
if (!(0, predicates_1.isObject)(body)) {
|
|
78
99
|
throw new Error(`Expected JSON response body, but received: ${body}`);
|
|
79
100
|
}
|
|
80
101
|
return {
|
|
@@ -83,11 +104,33 @@ class RemoteGraphQLDataSource {
|
|
|
83
104
|
};
|
|
84
105
|
}
|
|
85
106
|
catch (error) {
|
|
86
|
-
this.didEncounterError(error, fetchRequest, fetchResponse);
|
|
107
|
+
this.didEncounterError(error, fetchRequest, fetchResponse, context);
|
|
87
108
|
throw error;
|
|
88
109
|
}
|
|
89
110
|
}
|
|
90
|
-
|
|
111
|
+
async respond({ response, request, context, overallCachePolicy, }) {
|
|
112
|
+
var _a;
|
|
113
|
+
const processedResponse = typeof this.didReceiveResponse === 'function'
|
|
114
|
+
? await this.didReceiveResponse({ response, request, context })
|
|
115
|
+
: response;
|
|
116
|
+
if (overallCachePolicy) {
|
|
117
|
+
const parsed = (0, parseCacheControlHeader_1.parseCacheControlHeader)((_a = response.http) === null || _a === void 0 ? void 0 : _a.headers.get('cache-control'));
|
|
118
|
+
const hint = { maxAge: 0 };
|
|
119
|
+
const maxAge = parsed['max-age'];
|
|
120
|
+
if (typeof maxAge === 'string' && maxAge.match(/^[0-9]+$/)) {
|
|
121
|
+
hint.maxAge = +maxAge;
|
|
122
|
+
}
|
|
123
|
+
if (parsed['private'] === true) {
|
|
124
|
+
hint.scope = apollo_server_types_1.CacheScope.Private;
|
|
125
|
+
}
|
|
126
|
+
if (parsed['public'] === true) {
|
|
127
|
+
hint.scope = apollo_server_types_1.CacheScope.Public;
|
|
128
|
+
}
|
|
129
|
+
overallCachePolicy.restrict(hint);
|
|
130
|
+
}
|
|
131
|
+
return processedResponse;
|
|
132
|
+
}
|
|
133
|
+
didEncounterError(error, _fetchRequest, _fetchResponse, _context) {
|
|
91
134
|
throw error;
|
|
92
135
|
}
|
|
93
136
|
parseBody(fetchResponse, _fetchRequest, _context) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RemoteGraphQLDataSource.js","sourceRoot":"","sources":["../../src/datasources/RemoteGraphQLDataSource.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"RemoteGraphQLDataSource.js","sourceRoot":"","sources":["../../src/datasources/RemoteGraphQLDataSource.ts"],"names":[],"mappings":";;;;;;AAAA,6DAQ6B;AAC7B,+DAI8B;AAC9B,yDAAsE;AACtE,wDAAmD;AACnD,mCAA2G;AAC3G,wFAAgE;AAChE,uEAAoE;AAEpE,MAAa,uBAAuB;IAMlC,YACE,MAE6C;QAL/C,YAAO,GAAiB,yBAAK,CAAC;QAgC9B,QAAG,GAAY,KAAK,CAAC;QAMrB,oCAA+B,GAAY,IAAI,CAAC;QA/B9C,IAAI,MAAM,EAAE;YACV,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;SACpC;IACH,CAAC;IA8BD,KAAK,CAAC,OAAO,CACX,OAAkD;;QAElD,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC;QAQtD,MAAM,OAAO,GAAG,eAA2B,CAAC;QAG5C,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,2BAAO,EAAE,CAAC;QACxE,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;QAEhD,OAAO,CAAC,IAAI,GAAG;YACb,MAAM,EAAE,MAAM;YACd,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,OAAO;SACR,CAAC;QAEF,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;SACrC;QAED,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;YAClB,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;SAClC;QAED,MAAM,EAAE,KAAK,EAAE,GAAG,mBAAmB,EAAE,GAAG,OAAO,CAAC;QAKlD,MAAM,kBAAkB,GACtB,IAAI,CAAC,+BAA+B;YACpC,OAAO,CAAC,IAAI,KAAK,oCAA4B,CAAC,kBAAkB;aAChE,MAAA,OAAO,CAAC,sBAAsB,CAAC,kBAAkB,0CAAE,QAAQ,CAAA;YACzD,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC,kBAAkB;YACnD,CAAC,CAAC,IAAI,CAAC;QAEX,IAAI,IAAI,CAAC,GAAG,EAAE;YACZ,MAAM,OAAO,GAAG,IAAA,mBAAS,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAIxE,mBAAmB,CAAC,UAAU,GAAG;gBAC/B,GAAG,OAAO,CAAC,UAAU;gBACrB,cAAc,EAAE;oBACd,OAAO,EAAE,CAAC;oBACV,UAAU,EAAE,OAAO;iBACpB;aACF,CAAC;YAEF,MAAM,qBAAqB,GAAG,MAAM,IAAI,CAAC,WAAW,CAClD,mBAAmB,EACnB,OAAO,CACR,CAAC;YAIF,IACE,CAAC,qBAAqB,CAAC,MAAM;gBAC7B,CAAC,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAChC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,KAAK,wBAAwB,CACtD,EACD;gBACA,OAAO,IAAI,CAAC,OAAO,CAAC;oBAClB,QAAQ,EAAE,qBAAqB;oBAC/B,OAAO,EAAE,mBAAmB;oBAC5B,OAAO;oBACP,kBAAkB;iBACnB,CAAC,CAAC;aACJ;SACF;QAKD,MAAM,gBAAgB,GAAmB;YACvC,KAAK;YACL,GAAG,mBAAmB;SACvB,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,QAAQ;YACR,OAAO,EAAE,gBAAgB;YACzB,OAAO;YACP,kBAAkB;SACnB,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,WAAW,CACvB,OAAuB,EACvB,OAAiB;QAIjB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;SACxE;QAKD,MAAM,EAAE,IAAI,EAAE,GAAG,kBAAkB,EAAE,GAAG,OAAO,CAAC;QAChD,MAAM,6BAA6B,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QACzE,MAAM,YAAY,GAAG,IAAI,2BAAO,CAAC,IAAI,CAAC,GAAG,EAAE;YACzC,GAAG,IAAI;YACP,IAAI,EAAE,6BAA6B;SACpC,CAAC,CAAC;QAEH,IAAI,aAAmC,CAAC;QAExC,IAAI;YAGF,aAAa,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC3C,GAAG,IAAI;gBACP,IAAI,EAAE,6BAA6B;aACpC,CAAC,CAAC;YAEH,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE;gBACrB,MAAM,MAAM,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;aACnD;YAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;YAExE,IAAI,CAAC,IAAA,qBAAQ,EAAC,IAAI,CAAC,EAAE;gBACnB,MAAM,IAAI,KAAK,CAAC,8CAA8C,IAAI,EAAE,CAAC,CAAC;aACvE;YAED,OAAO;gBACL,GAAG,IAAI;gBACP,IAAI,EAAE,aAAa;aACpB,CAAC;SACH;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;YACpE,MAAM,KAAK,CAAC;SACb;IACH,CAAC;IAMO,KAAK,CAAC,OAAO,CAAC,EACpB,QAAQ,EACR,OAAO,EACP,OAAO,EACP,kBAAkB,GAMnB;;QACC,MAAM,iBAAiB,GACrB,OAAO,IAAI,CAAC,kBAAkB,KAAK,UAAU;YAC3C,CAAC,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;YAC/D,CAAC,CAAC,QAAQ,CAAC;QAEf,IAAI,kBAAkB,EAAE;YACtB,MAAM,MAAM,GAAG,IAAA,iDAAuB,EACpC,MAAA,QAAQ,CAAC,IAAI,0CAAE,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAC5C,CAAC;YAMF,MAAM,IAAI,GAAc,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;YACtC,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;YACjC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;gBAC1D,IAAI,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC;aACvB;YACD,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;gBAC9B,IAAI,CAAC,KAAK,GAAG,gCAAU,CAAC,OAAO,CAAC;aACjC;YACD,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;gBAC7B,IAAI,CAAC,KAAK,GAAG,gCAAU,CAAC,MAAM,CAAC;aAChC;YACD,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SACnC;QAED,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAQM,iBAAiB,CACtB,KAAY,EACZ,aAAsB,EACtB,cAAyB,EACzB,QAAmB;QAEnB,MAAM,KAAK,CAAC;IACd,CAAC;IAEM,SAAS,CACd,aAAuB,EACvB,aAAuB,EACvB,QAAmB;QAEnB,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC9D,IAAI,WAAW,IAAI,WAAW,CAAC,UAAU,CAAC,kBAAkB,CAAC,EAAE;YAC7D,OAAO,aAAa,CAAC,IAAI,EAAE,CAAC;SAC7B;aAAM;YACL,OAAO,aAAa,CAAC,IAAI,EAAE,CAAC;SAC7B;IACH,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAAC,QAAkB;QAC/C,MAAM,OAAO,GAAG,GAAG,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC;QAE7D,IAAI,KAAkB,CAAC;QACvB,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;YAC3B,KAAK,GAAG,IAAI,0CAAmB,CAAC,OAAO,CAAC,CAAC;SAC1C;aAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;YAClC,KAAK,GAAG,IAAI,qCAAc,CAAC,OAAO,CAAC,CAAC;SACrC;aAAM;YACL,KAAK,GAAG,IAAI,kCAAW,CAAC,OAAO,CAAC,CAAC;SAClC;QAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAE5C,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE;YAC9B,QAAQ,EAAE;gBACR,GAAG,EAAE,QAAQ,CAAC,GAAG;gBACjB,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;gBAC/B,IAAI;aACL;SACF,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AA/RD,0DA+RC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { LocalGraphQLDataSource } from './LocalGraphQLDataSource';
|
|
2
2
|
export { RemoteGraphQLDataSource } from './RemoteGraphQLDataSource';
|
|
3
|
-
export { GraphQLDataSource } from './types';
|
|
3
|
+
export { GraphQLDataSource, GraphQLDataSourceProcessOptions } from './types';
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/datasources/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/datasources/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,+BAA+B,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RemoteGraphQLDataSource = exports.LocalGraphQLDataSource = void 0;
|
|
3
4
|
var LocalGraphQLDataSource_1 = require("./LocalGraphQLDataSource");
|
|
4
5
|
Object.defineProperty(exports, "LocalGraphQLDataSource", { enumerable: true, get: function () { return LocalGraphQLDataSource_1.LocalGraphQLDataSource; } });
|
|
5
6
|
var RemoteGraphQLDataSource_1 = require("./RemoteGraphQLDataSource");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/datasources/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/datasources/index.ts"],"names":[],"mappings":";;;AAAA,mEAAkE;AAAzD,gIAAA,sBAAsB,OAAA;AAC/B,qEAAoE;AAA3D,kIAAA,uBAAuB,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseCacheControlHeader.d.ts","sourceRoot":"","sources":["../../src/datasources/parseCacheControlHeader.ts"],"names":[],"mappings":"AA6BA,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAChC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAW/B"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseCacheControlHeader = void 0;
|
|
4
|
+
function parseCacheControlHeader(header) {
|
|
5
|
+
const cc = {};
|
|
6
|
+
if (!header)
|
|
7
|
+
return cc;
|
|
8
|
+
const parts = header.trim().split(/\s*,\s*/);
|
|
9
|
+
for (const part of parts) {
|
|
10
|
+
const [k, v] = part.split(/\s*=\s*/, 2);
|
|
11
|
+
cc[k] = v === undefined ? true : v.replace(/^"|"$/g, '');
|
|
12
|
+
}
|
|
13
|
+
return cc;
|
|
14
|
+
}
|
|
15
|
+
exports.parseCacheControlHeader = parseCacheControlHeader;
|
|
16
|
+
//# sourceMappingURL=parseCacheControlHeader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parseCacheControlHeader.js","sourceRoot":"","sources":["../../src/datasources/parseCacheControlHeader.ts"],"names":[],"mappings":";;;AA6BA,SAAgB,uBAAuB,CACrC,MAAiC;IAEjC,MAAM,EAAE,GAAkC,EAAE,CAAC;IAC7C,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAEvB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC7C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QACxC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;KAC1D;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAbD,0DAaC"}
|
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
import { GraphQLResponse, GraphQLRequestContext } from 'apollo-server-types';
|
|
2
2
|
export interface GraphQLDataSource<TContext extends Record<string, any> = Record<string, any>> {
|
|
3
|
-
process(
|
|
3
|
+
process(options: GraphQLDataSourceProcessOptions<TContext>): Promise<GraphQLResponse>;
|
|
4
4
|
}
|
|
5
|
+
export declare enum GraphQLDataSourceRequestKind {
|
|
6
|
+
INCOMING_OPERATION = "incoming operation",
|
|
7
|
+
HEALTH_CHECK = "health check",
|
|
8
|
+
LOADING_SCHEMA = "loading schema"
|
|
9
|
+
}
|
|
10
|
+
export declare type GraphQLDataSourceProcessOptions<TContext extends Record<string, any> = Record<string, any>> = {
|
|
11
|
+
request: GraphQLRequestContext<TContext>['request'];
|
|
12
|
+
} & ({
|
|
13
|
+
kind: GraphQLDataSourceRequestKind.INCOMING_OPERATION;
|
|
14
|
+
incomingRequestContext: GraphQLRequestContext<TContext>;
|
|
15
|
+
context: GraphQLRequestContext<TContext>['context'];
|
|
16
|
+
} | {
|
|
17
|
+
kind: GraphQLDataSourceRequestKind.HEALTH_CHECK | GraphQLDataSourceRequestKind.LOADING_SCHEMA;
|
|
18
|
+
context: Record<string, any>;
|
|
19
|
+
});
|
|
5
20
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/datasources/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE7E,MAAM,WAAW,iBAAiB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/datasources/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE7E,MAAM,WAAW,iBAAiB,CAChC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAE1D,OAAO,CACL,OAAO,EAAE,+BAA+B,CAAC,QAAQ,CAAC,GACjD,OAAO,CAAC,eAAe,CAAC,CAAC;CAC7B;AAED,oBAAY,4BAA4B;IACtC,kBAAkB,uBAAuB;IACzC,YAAY,iBAAiB;IAC7B,cAAc,mBAAmB;CAClC;AAED,oBAAY,+BAA+B,CACzC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IACxD;IAIF,OAAO,EAAE,qBAAqB,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC;CACrD,GAAG,CACA;IACE,IAAI,EAAE,4BAA4B,CAAC,kBAAkB,CAAC;IAMtD,sBAAsB,EAAE,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IASxD,OAAO,EAAE,qBAAqB,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC;CACrD,GACD;IACE,IAAI,EACA,4BAA4B,CAAC,YAAY,GACzC,4BAA4B,CAAC,cAAc,CAAC;IAIhD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9B,CACJ,CAAC"}
|
|
@@ -1,3 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GraphQLDataSourceRequestKind = void 0;
|
|
4
|
+
var GraphQLDataSourceRequestKind;
|
|
5
|
+
(function (GraphQLDataSourceRequestKind) {
|
|
6
|
+
GraphQLDataSourceRequestKind["INCOMING_OPERATION"] = "incoming operation";
|
|
7
|
+
GraphQLDataSourceRequestKind["HEALTH_CHECK"] = "health check";
|
|
8
|
+
GraphQLDataSourceRequestKind["LOADING_SCHEMA"] = "loading schema";
|
|
9
|
+
})(GraphQLDataSourceRequestKind = exports.GraphQLDataSourceRequestKind || (exports.GraphQLDataSourceRequestKind = {}));
|
|
3
10
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/datasources/types.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/datasources/types.ts"],"names":[],"mappings":";;;AAUA,IAAY,4BAIX;AAJD,WAAY,4BAA4B;IACtC,yEAAyC,CAAA;IACzC,6DAA6B,CAAA;IAC7B,iEAAiC,CAAA;AACnC,CAAC,EAJW,4BAA4B,GAA5B,oCAA4B,KAA5B,oCAA4B,QAIvC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { GraphQLExecutionResult, GraphQLRequestContext } from 'apollo-server-types';
|
|
2
2
|
import { GraphQLFieldResolver } from 'graphql';
|
|
3
3
|
import { GraphQLDataSource } from './datasources/types';
|
|
4
|
-
import {
|
|
4
|
+
import { OperationContext } from './operationContext';
|
|
5
|
+
import { QueryPlan } from '@apollo/query-planner';
|
|
5
6
|
export declare type ServiceMap = {
|
|
6
7
|
[serviceName: string]: GraphQLDataSource;
|
|
7
8
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executeQueryPlan.d.ts","sourceRoot":"","sources":["../src/executeQueryPlan.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,
|
|
1
|
+
{"version":3,"file":"executeQueryPlan.d.ts","sourceRoot":"","sources":["../src/executeQueryPlan.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAKL,oBAAoB,EAIrB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,iBAAiB,EAAgC,MAAM,qBAAqB,CAAC;AACtF,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAGL,SAAS,EAKV,MAAM,uBAAuB,CAAC;AAO/B,oBAAY,UAAU,GAAG;IACvB,CAAC,WAAW,EAAE,MAAM,GAAG,iBAAiB,CAAC;CAC1C,CAAC;AAYF,wBAAsB,gBAAgB,CAAC,QAAQ,EAC7C,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,UAAU,EACtB,cAAc,EAAE,qBAAqB,CAAC,QAAQ,CAAC,EAC/C,gBAAgB,EAAE,gBAAgB,GACjC,OAAO,CAAC,sBAAsB,CAAC,CA+GjC;AA8aD,eAAO,MAAM,oCAAoC,EAAE,oBAAoB,CACrE,GAAG,EACH,GAAG,CAYJ,CAAC"}
|