@apollo/gateway 2.4.4 → 2.4.5
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/__generated__/graphqlTypes.d.ts +160 -0
- package/dist/__generated__/graphqlTypes.d.ts.map +1 -0
- package/dist/__generated__/graphqlTypes.js +30 -0
- package/dist/__generated__/graphqlTypes.js.map +1 -0
- package/dist/config.d.ts +138 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +60 -0
- package/dist/config.js.map +1 -0
- package/dist/dataRewrites.d.ts +5 -0
- package/dist/dataRewrites.d.ts.map +1 -0
- package/dist/dataRewrites.js +103 -0
- package/dist/dataRewrites.js.map +1 -0
- package/dist/datasources/LocalGraphQLDataSource.d.ts +10 -0
- package/dist/datasources/LocalGraphQLDataSource.d.ts.map +1 -0
- package/dist/datasources/LocalGraphQLDataSource.js +31 -0
- package/dist/datasources/LocalGraphQLDataSource.js.map +1 -0
- package/dist/datasources/RemoteGraphQLDataSource.d.ts +24 -0
- package/dist/datasources/RemoteGraphQLDataSource.d.ts.map +1 -0
- package/dist/datasources/RemoteGraphQLDataSource.js +180 -0
- package/dist/datasources/RemoteGraphQLDataSource.js.map +1 -0
- package/dist/datasources/index.d.ts +4 -0
- package/dist/datasources/index.d.ts.map +1 -0
- package/dist/datasources/index.js +8 -0
- package/dist/datasources/index.js.map +1 -0
- 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 +23 -0
- package/dist/datasources/types.d.ts.map +1 -0
- package/dist/datasources/types.js +10 -0
- package/dist/datasources/types.js.map +1 -0
- package/dist/executeQueryPlan.d.ts +15 -0
- package/dist/executeQueryPlan.d.ts.map +1 -0
- package/dist/executeQueryPlan.js +539 -0
- package/dist/executeQueryPlan.js.map +1 -0
- package/dist/index.d.ts +113 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +590 -0
- package/dist/index.js.map +1 -0
- package/dist/logger.d.ts +3 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +15 -0
- package/dist/logger.js.map +1 -0
- package/dist/operationContext.d.ts +17 -0
- package/dist/operationContext.d.ts.map +1 -0
- package/dist/operationContext.js +38 -0
- package/dist/operationContext.js.map +1 -0
- package/dist/resultShaping.d.ts +12 -0
- package/dist/resultShaping.d.ts.map +1 -0
- package/dist/resultShaping.js +229 -0
- package/dist/resultShaping.js.map +1 -0
- package/dist/schema-helper/addExtensions.d.ts +3 -0
- package/dist/schema-helper/addExtensions.d.ts.map +1 -0
- package/dist/schema-helper/addExtensions.js +23 -0
- package/dist/schema-helper/addExtensions.js.map +1 -0
- package/dist/supergraphManagers/IntrospectAndCompose/index.d.ts +31 -0
- package/dist/supergraphManagers/IntrospectAndCompose/index.d.ts.map +1 -0
- package/dist/supergraphManagers/IntrospectAndCompose/index.js +112 -0
- package/dist/supergraphManagers/IntrospectAndCompose/index.js.map +1 -0
- package/dist/supergraphManagers/IntrospectAndCompose/loadServicesFromRemoteEndpoint.d.ts +12 -0
- package/dist/supergraphManagers/IntrospectAndCompose/loadServicesFromRemoteEndpoint.d.ts.map +1 -0
- package/dist/supergraphManagers/IntrospectAndCompose/loadServicesFromRemoteEndpoint.js +57 -0
- package/dist/supergraphManagers/IntrospectAndCompose/loadServicesFromRemoteEndpoint.js.map +1 -0
- package/dist/supergraphManagers/LegacyFetcher/index.d.ts +33 -0
- package/dist/supergraphManagers/LegacyFetcher/index.d.ts.map +1 -0
- package/dist/supergraphManagers/LegacyFetcher/index.js +149 -0
- package/dist/supergraphManagers/LegacyFetcher/index.js.map +1 -0
- package/dist/supergraphManagers/LocalCompose/index.d.ts +19 -0
- package/dist/supergraphManagers/LocalCompose/index.d.ts.map +1 -0
- package/dist/supergraphManagers/LocalCompose/index.js +55 -0
- package/dist/supergraphManagers/LocalCompose/index.js.map +1 -0
- package/dist/supergraphManagers/UplinkSupergraphManager/index.d.ts +63 -0
- package/dist/supergraphManagers/UplinkSupergraphManager/index.d.ts.map +1 -0
- package/dist/supergraphManagers/UplinkSupergraphManager/index.js +210 -0
- package/dist/supergraphManagers/UplinkSupergraphManager/index.js.map +1 -0
- package/dist/supergraphManagers/UplinkSupergraphManager/loadSupergraphSdlFromStorage.d.ts +30 -0
- package/dist/supergraphManagers/UplinkSupergraphManager/loadSupergraphSdlFromStorage.d.ts.map +1 -0
- package/dist/supergraphManagers/UplinkSupergraphManager/loadSupergraphSdlFromStorage.js +145 -0
- package/dist/supergraphManagers/UplinkSupergraphManager/loadSupergraphSdlFromStorage.js.map +1 -0
- package/dist/supergraphManagers/UplinkSupergraphManager/outOfBandReporter.d.ts +14 -0
- package/dist/supergraphManagers/UplinkSupergraphManager/outOfBandReporter.d.ts.map +1 -0
- package/dist/supergraphManagers/UplinkSupergraphManager/outOfBandReporter.js +85 -0
- package/dist/supergraphManagers/UplinkSupergraphManager/outOfBandReporter.js.map +1 -0
- package/dist/supergraphManagers/index.d.ts +6 -0
- package/dist/supergraphManagers/index.d.ts.map +1 -0
- package/dist/supergraphManagers/index.js +27 -0
- package/dist/supergraphManagers/index.js.map +1 -0
- package/dist/typings/graphql.d.ts +11 -0
- package/dist/typings/graphql.d.ts.map +1 -0
- package/dist/typings/graphql.js +3 -0
- package/dist/typings/graphql.js.map +1 -0
- package/dist/utilities/array.d.ts +5 -0
- package/dist/utilities/array.d.ts.map +1 -0
- package/dist/utilities/array.js +46 -0
- package/dist/utilities/array.js.map +1 -0
- 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/deepMerge.d.ts +2 -0
- package/dist/utilities/deepMerge.d.ts.map +1 -0
- package/dist/utilities/deepMerge.js +34 -0
- package/dist/utilities/deepMerge.js.map +1 -0
- package/dist/utilities/graphql.d.ts +5 -0
- package/dist/utilities/graphql.d.ts.map +1 -0
- package/dist/utilities/graphql.js +28 -0
- package/dist/utilities/graphql.js.map +1 -0
- 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/dist/utilities/predicates.d.ts +2 -0
- package/dist/utilities/predicates.d.ts.map +1 -0
- package/dist/utilities/predicates.js +11 -0
- package/dist/utilities/predicates.js.map +1 -0
- package/package.json +4 -4
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.RemoteGraphQLDataSource = void 0;
|
|
7
|
+
const predicates_1 = require("../utilities/predicates");
|
|
8
|
+
const types_1 = require("./types");
|
|
9
|
+
const utils_createhash_1 = require("@apollo/utils.createhash");
|
|
10
|
+
const parseCacheControlHeader_1 = require("./parseCacheControlHeader");
|
|
11
|
+
const make_fetch_happen_1 = __importDefault(require("make-fetch-happen"));
|
|
12
|
+
const node_fetch_1 = require("node-fetch");
|
|
13
|
+
const graphql_1 = require("graphql");
|
|
14
|
+
class RemoteGraphQLDataSource {
|
|
15
|
+
constructor(config) {
|
|
16
|
+
this.apq = false;
|
|
17
|
+
this.honorSubgraphCacheControlHeader = true;
|
|
18
|
+
this.fetcher = make_fetch_happen_1.default.defaults({
|
|
19
|
+
maxSockets: Infinity,
|
|
20
|
+
retry: false,
|
|
21
|
+
});
|
|
22
|
+
if (config) {
|
|
23
|
+
return Object.assign(this, config);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
async process(options) {
|
|
27
|
+
var _a;
|
|
28
|
+
const { request, context: originalContext } = options;
|
|
29
|
+
const pathInIncomingRequest = options.kind === types_1.GraphQLDataSourceRequestKind.INCOMING_OPERATION
|
|
30
|
+
? options.pathInIncomingRequest
|
|
31
|
+
: undefined;
|
|
32
|
+
const context = originalContext;
|
|
33
|
+
const headers = new node_fetch_1.Headers();
|
|
34
|
+
if ((_a = request.http) === null || _a === void 0 ? void 0 : _a.headers) {
|
|
35
|
+
for (const [name, value] of request.http.headers) {
|
|
36
|
+
headers.append(name, value);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
headers.set('Content-Type', 'application/json');
|
|
40
|
+
request.http = {
|
|
41
|
+
method: 'POST',
|
|
42
|
+
url: this.url,
|
|
43
|
+
headers,
|
|
44
|
+
};
|
|
45
|
+
if (this.willSendRequest) {
|
|
46
|
+
await this.willSendRequest(options);
|
|
47
|
+
}
|
|
48
|
+
if (!request.query) {
|
|
49
|
+
throw new Error('Missing query');
|
|
50
|
+
}
|
|
51
|
+
const { query, ...requestWithoutQuery } = request;
|
|
52
|
+
const overallCachePolicy = this.honorSubgraphCacheControlHeader &&
|
|
53
|
+
options.kind === types_1.GraphQLDataSourceRequestKind.INCOMING_OPERATION &&
|
|
54
|
+
options.incomingRequestContext.overallCachePolicy &&
|
|
55
|
+
'restrict' in options.incomingRequestContext.overallCachePolicy
|
|
56
|
+
? options.incomingRequestContext.overallCachePolicy
|
|
57
|
+
: null;
|
|
58
|
+
if (this.apq) {
|
|
59
|
+
const apqHash = (0, utils_createhash_1.createHash)('sha256').update(request.query).digest('hex');
|
|
60
|
+
requestWithoutQuery.extensions = {
|
|
61
|
+
...request.extensions,
|
|
62
|
+
persistedQuery: {
|
|
63
|
+
version: 1,
|
|
64
|
+
sha256Hash: apqHash,
|
|
65
|
+
},
|
|
66
|
+
};
|
|
67
|
+
const apqOptimisticResponse = await this.sendRequest(requestWithoutQuery, context);
|
|
68
|
+
if (!apqOptimisticResponse.errors ||
|
|
69
|
+
!apqOptimisticResponse.errors.find((error) => error.message === 'PersistedQueryNotFound')) {
|
|
70
|
+
return this.respond({
|
|
71
|
+
response: apqOptimisticResponse,
|
|
72
|
+
request: requestWithoutQuery,
|
|
73
|
+
context,
|
|
74
|
+
overallCachePolicy,
|
|
75
|
+
pathInIncomingRequest
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
const requestWithQuery = {
|
|
80
|
+
query,
|
|
81
|
+
...requestWithoutQuery,
|
|
82
|
+
};
|
|
83
|
+
const response = await this.sendRequest(requestWithQuery, context);
|
|
84
|
+
return this.respond({
|
|
85
|
+
response,
|
|
86
|
+
request: requestWithQuery,
|
|
87
|
+
context,
|
|
88
|
+
overallCachePolicy,
|
|
89
|
+
pathInIncomingRequest
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
async sendRequest(request, context) {
|
|
93
|
+
if (!request.http) {
|
|
94
|
+
throw new Error("Internal error: Only 'http' requests are supported.");
|
|
95
|
+
}
|
|
96
|
+
const { http, ...requestWithoutHttp } = request;
|
|
97
|
+
const stringifiedRequestWithoutHttp = JSON.stringify(requestWithoutHttp);
|
|
98
|
+
const requestInit = {
|
|
99
|
+
method: http.method,
|
|
100
|
+
headers: Object.fromEntries(http.headers),
|
|
101
|
+
body: stringifiedRequestWithoutHttp,
|
|
102
|
+
};
|
|
103
|
+
const fetchRequest = new node_fetch_1.Request(http.url, requestInit);
|
|
104
|
+
let fetchResponse;
|
|
105
|
+
try {
|
|
106
|
+
fetchResponse = await this.fetcher(http.url, requestInit);
|
|
107
|
+
if (!fetchResponse.ok) {
|
|
108
|
+
throw await this.errorFromResponse(fetchResponse);
|
|
109
|
+
}
|
|
110
|
+
const body = await this.parseBody(fetchResponse, fetchRequest, context);
|
|
111
|
+
if (!(0, predicates_1.isObject)(body)) {
|
|
112
|
+
throw new Error(`Expected JSON response body, but received: ${body}`);
|
|
113
|
+
}
|
|
114
|
+
return {
|
|
115
|
+
...body,
|
|
116
|
+
http: fetchResponse,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
this.didEncounterError(error, fetchRequest, fetchResponse, context);
|
|
121
|
+
throw error;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
async respond({ response, request, context, overallCachePolicy, pathInIncomingRequest }) {
|
|
125
|
+
var _a;
|
|
126
|
+
const processedResponse = typeof this.didReceiveResponse === 'function'
|
|
127
|
+
? await this.didReceiveResponse({ response, request, context, pathInIncomingRequest })
|
|
128
|
+
: response;
|
|
129
|
+
if (overallCachePolicy) {
|
|
130
|
+
const parsed = (0, parseCacheControlHeader_1.parseCacheControlHeader)((_a = response.http) === null || _a === void 0 ? void 0 : _a.headers.get('cache-control'));
|
|
131
|
+
const hint = { maxAge: 0 };
|
|
132
|
+
const maxAge = parsed['max-age'];
|
|
133
|
+
if (typeof maxAge === 'string' && maxAge.match(/^[0-9]+$/)) {
|
|
134
|
+
hint.maxAge = +maxAge;
|
|
135
|
+
}
|
|
136
|
+
if (parsed['private'] === true) {
|
|
137
|
+
hint.scope = 'PRIVATE';
|
|
138
|
+
}
|
|
139
|
+
if (parsed['public'] === true) {
|
|
140
|
+
hint.scope = 'PUBLIC';
|
|
141
|
+
}
|
|
142
|
+
overallCachePolicy.restrict(hint);
|
|
143
|
+
}
|
|
144
|
+
return processedResponse;
|
|
145
|
+
}
|
|
146
|
+
didEncounterError(error, _fetchRequest, _fetchResponse, _context) {
|
|
147
|
+
throw error;
|
|
148
|
+
}
|
|
149
|
+
parseBody(fetchResponse, _fetchRequest, _context) {
|
|
150
|
+
const contentType = fetchResponse.headers.get('Content-Type');
|
|
151
|
+
if (contentType && contentType.startsWith('application/json')) {
|
|
152
|
+
return fetchResponse.json();
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
return fetchResponse.text();
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
async errorFromResponse(response) {
|
|
159
|
+
const body = await this.parseBody(response);
|
|
160
|
+
const extensions = {
|
|
161
|
+
response: {
|
|
162
|
+
url: response.url,
|
|
163
|
+
status: response.status,
|
|
164
|
+
statusText: response.statusText,
|
|
165
|
+
body,
|
|
166
|
+
},
|
|
167
|
+
};
|
|
168
|
+
if (response.status === 401) {
|
|
169
|
+
extensions.code = 'UNAUTHENTICATED';
|
|
170
|
+
}
|
|
171
|
+
else if (response.status === 403) {
|
|
172
|
+
extensions.code = 'FORBIDDEN';
|
|
173
|
+
}
|
|
174
|
+
return new graphql_1.GraphQLError(`${response.status}: ${response.statusText}`, {
|
|
175
|
+
extensions,
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
exports.RemoteGraphQLDataSource = RemoteGraphQLDataSource;
|
|
180
|
+
//# sourceMappingURL=RemoteGraphQLDataSource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RemoteGraphQLDataSource.js","sourceRoot":"","sources":["../../src/datasources/RemoteGraphQLDataSource.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +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,+BAA+B,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RemoteGraphQLDataSource = exports.LocalGraphQLDataSource = void 0;
|
|
4
|
+
var LocalGraphQLDataSource_1 = require("./LocalGraphQLDataSource");
|
|
5
|
+
Object.defineProperty(exports, "LocalGraphQLDataSource", { enumerable: true, get: function () { return LocalGraphQLDataSource_1.LocalGraphQLDataSource; } });
|
|
6
|
+
var RemoteGraphQLDataSource_1 = require("./RemoteGraphQLDataSource");
|
|
7
|
+
Object.defineProperty(exports, "RemoteGraphQLDataSource", { enumerable: true, get: function () { return RemoteGraphQLDataSource_1.RemoteGraphQLDataSource; } });
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ResponsePath } from '@apollo/query-planner';
|
|
2
|
+
import { GatewayGraphQLResponse, GatewayGraphQLRequestContext } from '@apollo/server-gateway-interface';
|
|
3
|
+
export interface GraphQLDataSource<TContext extends Record<string, any> = Record<string, any>> {
|
|
4
|
+
process(options: GraphQLDataSourceProcessOptions<TContext>): Promise<GatewayGraphQLResponse>;
|
|
5
|
+
}
|
|
6
|
+
export declare enum GraphQLDataSourceRequestKind {
|
|
7
|
+
INCOMING_OPERATION = "incoming operation",
|
|
8
|
+
HEALTH_CHECK = "health check",
|
|
9
|
+
LOADING_SCHEMA = "loading schema"
|
|
10
|
+
}
|
|
11
|
+
export type GraphQLDataSourceProcessOptions<TContext extends Record<string, any> = Record<string, any>> = {
|
|
12
|
+
request: GatewayGraphQLRequestContext<TContext>['request'];
|
|
13
|
+
} & ({
|
|
14
|
+
kind: GraphQLDataSourceRequestKind.INCOMING_OPERATION;
|
|
15
|
+
incomingRequestContext: GatewayGraphQLRequestContext<TContext>;
|
|
16
|
+
context: GatewayGraphQLRequestContext<TContext>['context'];
|
|
17
|
+
document?: GatewayGraphQLRequestContext<TContext>['document'];
|
|
18
|
+
pathInIncomingRequest?: ResponsePath;
|
|
19
|
+
} | {
|
|
20
|
+
kind: GraphQLDataSourceRequestKind.HEALTH_CHECK | GraphQLDataSourceRequestKind.LOADING_SCHEMA;
|
|
21
|
+
context: Record<string, any>;
|
|
22
|
+
});
|
|
23
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/datasources/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,4BAA4B,EAAE,MAAM,kCAAkC,CAAC;AAExG,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,sBAAsB,CAAC,CAAC;CACpC;AAED,oBAAY,4BAA4B;IACtC,kBAAkB,uBAAuB;IACzC,YAAY,iBAAiB;IAC7B,cAAc,mBAAmB;CAClC;AAED,MAAM,MAAM,+BAA+B,CACzC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IACxD;IAIF,OAAO,EAAE,4BAA4B,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC;CAC5D,GAAG,CACA;IACE,IAAI,EAAE,4BAA4B,CAAC,kBAAkB,CAAC;IAMtD,sBAAsB,EAAE,4BAA4B,CAAC,QAAQ,CAAC,CAAC;IAS/D,OAAO,EAAE,4BAA4B,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC;IAQ3D,QAAQ,CAAC,EAAE,4BAA4B,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,CAAC;IAM9D,qBAAqB,CAAC,EAAE,YAAY,CAAC;CACtC,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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
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 = {}));
|
|
10
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/datasources/types.ts"],"names":[],"mappings":";;;AAWA,IAAY,4BAIX;AAJD,WAAY,4BAA4B;IACtC,yEAAyC,CAAA;IACzC,6DAA6B,CAAA;IAC7B,iEAAiC,CAAA;AACnC,CAAC,EAJW,4BAA4B,GAA5B,oCAA4B,KAA5B,oCAA4B,QAIvC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { GraphQLFieldResolver, GraphQLSchema } from 'graphql';
|
|
2
|
+
import { GraphQLDataSource } from './datasources/types';
|
|
3
|
+
import { OperationContext } from './operationContext';
|
|
4
|
+
import { QueryPlan, ResponsePath } from '@apollo/query-planner';
|
|
5
|
+
import { Schema } from '@apollo/federation-internals';
|
|
6
|
+
import { GatewayGraphQLRequestContext, GatewayExecutionResult } from '@apollo/server-gateway-interface';
|
|
7
|
+
export type ServiceMap = {
|
|
8
|
+
[serviceName: string]: GraphQLDataSource;
|
|
9
|
+
};
|
|
10
|
+
type ResultMap = Record<string, any>;
|
|
11
|
+
export declare function executeQueryPlan(queryPlan: QueryPlan, serviceMap: ServiceMap, requestContext: GatewayGraphQLRequestContext, operationContext: OperationContext, supergraphSchema: GraphQLSchema, apiSchema: Schema): Promise<GatewayExecutionResult>;
|
|
12
|
+
export declare function generateHydratedPaths(parent: ResponsePath, path: ResponsePath, data: ResultMap | null, result: ResponsePath[]): void;
|
|
13
|
+
export declare const defaultFieldResolverWithAliasSupport: GraphQLFieldResolver<any, any>;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=executeQueryPlan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executeQueryPlan.d.ts","sourceRoot":"","sources":["../src/executeQueryPlan.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,oBAAoB,EAEpB,aAAa,EASd,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,iBAAiB,EAAgC,MAAM,qBAAqB,CAAC;AACtF,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAGL,SAAS,EACT,YAAY,EAKb,MAAM,uBAAuB,CAAC;AAK/B,OAAO,EAAmF,MAAM,EAAE,MAAM,8BAA8B,CAAC;AACvI,OAAO,EAAE,4BAA4B,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAIxG,MAAM,MAAM,UAAU,GAAG;IACvB,CAAC,WAAW,EAAE,MAAM,GAAG,iBAAiB,CAAC;CAC1C,CAAC;AAEF,KAAK,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAsFrC,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,UAAU,EACtB,cAAc,EAAE,4BAA4B,EAC5C,gBAAgB,EAAE,gBAAgB,EAClC,gBAAgB,EAAE,aAAa,EAC/B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,sBAAsB,CAAC,CA8JjC;AA4ZD,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,YAAY,EAClB,IAAI,EAAE,SAAS,GAAG,IAAI,EACtB,MAAM,EAAE,YAAY,EAAE,QAmCvB;AAuID,eAAO,MAAM,oCAAoC,EAAE,oBAAoB,CACrE,GAAG,EACH,GAAG,CAYJ,CAAC"}
|