@apollo/gateway 2.0.0-alpha.2 → 2.0.0-alpha.6
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 +43 -15
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +28 -18
- package/dist/config.js.map +1 -1
- package/dist/datasources/LocalGraphQLDataSource.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 +2 -2
- package/dist/executeQueryPlan.js.map +1 -1
- package/dist/index.d.ts +37 -22
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +199 -283
- package/dist/index.js.map +1 -1
- package/dist/schema-helper/addResolversToSchema.d.ts +4 -0
- package/dist/schema-helper/addResolversToSchema.d.ts.map +1 -0
- package/dist/schema-helper/addResolversToSchema.js +62 -0
- package/dist/schema-helper/addResolversToSchema.js.map +1 -0
- package/dist/schema-helper/error.d.ts +6 -0
- package/dist/schema-helper/error.d.ts.map +1 -0
- package/dist/schema-helper/error.js +14 -0
- package/dist/schema-helper/error.js.map +1 -0
- package/dist/schema-helper/index.d.ts +4 -0
- package/dist/schema-helper/index.d.ts.map +1 -0
- package/dist/schema-helper/index.js +16 -0
- package/dist/schema-helper/index.js.map +1 -0
- package/dist/schema-helper/resolverMap.d.ts +16 -0
- package/dist/schema-helper/resolverMap.d.ts.map +1 -0
- package/dist/schema-helper/resolverMap.js +3 -0
- package/dist/schema-helper/resolverMap.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/{loadServicesFromRemoteEndpoint.js → supergraphManagers/IntrospectAndCompose/loadServicesFromRemoteEndpoint.js} +6 -6
- 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/UplinkFetcher/index.d.ts +33 -0
- package/dist/supergraphManagers/UplinkFetcher/index.d.ts.map +1 -0
- package/dist/supergraphManagers/UplinkFetcher/index.js +98 -0
- package/dist/supergraphManagers/UplinkFetcher/index.js.map +1 -0
- package/dist/supergraphManagers/UplinkFetcher/loadSupergraphSdlFromStorage.d.ts +25 -0
- package/dist/supergraphManagers/UplinkFetcher/loadSupergraphSdlFromStorage.d.ts.map +1 -0
- package/dist/{loadSupergraphSdlFromStorage.js → supergraphManagers/UplinkFetcher/loadSupergraphSdlFromStorage.js} +40 -15
- package/dist/supergraphManagers/UplinkFetcher/loadSupergraphSdlFromStorage.js.map +1 -0
- package/dist/supergraphManagers/UplinkFetcher/outOfBandReporter.d.ts +13 -0
- package/dist/supergraphManagers/UplinkFetcher/outOfBandReporter.d.ts.map +1 -0
- package/dist/supergraphManagers/UplinkFetcher/outOfBandReporter.js +85 -0
- package/dist/supergraphManagers/UplinkFetcher/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 +14 -0
- package/dist/supergraphManagers/index.js.map +1 -0
- package/dist/utilities/createHash.d.ts +2 -0
- package/dist/utilities/createHash.d.ts.map +1 -0
- package/dist/utilities/createHash.js +15 -0
- package/dist/utilities/createHash.js.map +1 -0
- package/dist/utilities/isNodeLike.d.ts +3 -0
- package/dist/utilities/isNodeLike.d.ts.map +1 -0
- package/dist/utilities/isNodeLike.js +8 -0
- package/dist/utilities/isNodeLike.js.map +1 -0
- package/package.json +9 -7
- package/src/__mocks__/make-fetch-happen-fetcher.ts +3 -1
- package/src/__tests__/build-query-plan.feature +52 -0
- package/src/__tests__/executeQueryPlan.test.ts +599 -1
- package/src/__tests__/execution-utils.ts +3 -3
- package/src/__tests__/gateway/buildService.test.ts +3 -3
- package/src/__tests__/gateway/endToEnd.test.ts +1 -1
- package/src/__tests__/gateway/executor.test.ts +1 -1
- package/src/__tests__/gateway/lifecycle-hooks.test.ts +59 -125
- package/src/__tests__/gateway/opentelemetry.test.ts +8 -4
- package/src/__tests__/gateway/queryPlanCache.test.ts +25 -12
- package/src/__tests__/gateway/reporting.test.ts +42 -13
- package/src/__tests__/gateway/supergraphSdl.test.ts +397 -0
- package/src/__tests__/integration/aliases.test.ts +9 -4
- package/src/__tests__/integration/configuration.test.ts +146 -9
- package/src/__tests__/integration/logger.test.ts +1 -1
- package/src/__tests__/integration/networkRequests.test.ts +99 -147
- package/src/__tests__/integration/nockMocks.ts +30 -16
- package/src/__tests__/nockAssertions.ts +20 -0
- package/src/config.ts +149 -38
- package/src/datasources/LocalGraphQLDataSource.ts +1 -1
- package/src/datasources/RemoteGraphQLDataSource.ts +8 -2
- package/src/datasources/__tests__/LocalGraphQLDataSource.test.ts +1 -1
- package/src/datasources/__tests__/RemoteGraphQLDataSource.test.ts +4 -4
- package/src/executeQueryPlan.ts +14 -2
- package/src/index.ts +325 -452
- package/src/schema-helper/addResolversToSchema.ts +83 -0
- package/src/schema-helper/error.ts +11 -0
- package/src/schema-helper/index.ts +3 -0
- package/src/schema-helper/resolverMap.ts +23 -0
- package/src/supergraphManagers/IntrospectAndCompose/__tests__/IntrospectAndCompose.test.ts +370 -0
- package/src/{__tests__ → supergraphManagers/IntrospectAndCompose/__tests__}/loadServicesFromRemoteEndpoint.test.ts +5 -5
- package/src/supergraphManagers/IntrospectAndCompose/__tests__/tsconfig.json +8 -0
- package/src/supergraphManagers/IntrospectAndCompose/index.ts +160 -0
- package/src/{loadServicesFromRemoteEndpoint.ts → supergraphManagers/IntrospectAndCompose/loadServicesFromRemoteEndpoint.ts} +6 -6
- package/src/supergraphManagers/LegacyFetcher/index.ts +226 -0
- package/src/supergraphManagers/LocalCompose/index.ts +79 -0
- package/src/supergraphManagers/UplinkFetcher/__tests__/loadSupergraphSdlFromStorage.test.ts +397 -0
- package/src/supergraphManagers/UplinkFetcher/__tests__/tsconfig.json +8 -0
- package/src/supergraphManagers/UplinkFetcher/index.ts +130 -0
- package/src/{loadSupergraphSdlFromStorage.ts → supergraphManagers/UplinkFetcher/loadSupergraphSdlFromStorage.ts} +68 -17
- package/src/supergraphManagers/UplinkFetcher/outOfBandReporter.ts +126 -0
- package/src/supergraphManagers/index.ts +5 -0
- package/src/utilities/__tests__/cleanErrorOfInaccessibleElements.test.ts +12 -9
- package/src/utilities/createHash.ts +10 -0
- package/src/utilities/isNodeLike.ts +11 -0
- package/dist/loadServicesFromRemoteEndpoint.d.ts +0 -13
- package/dist/loadServicesFromRemoteEndpoint.d.ts.map +0 -1
- package/dist/loadServicesFromRemoteEndpoint.js.map +0 -1
- package/dist/loadSupergraphSdlFromStorage.d.ts +0 -13
- package/dist/loadSupergraphSdlFromStorage.d.ts.map +0 -1
- package/dist/loadSupergraphSdlFromStorage.js.map +0 -1
- package/dist/outOfBandReporter.d.ts +0 -15
- package/dist/outOfBandReporter.d.ts.map +0 -1
- package/dist/outOfBandReporter.js +0 -88
- package/dist/outOfBandReporter.js.map +0 -1
- package/src/__tests__/gateway/composedSdl.test.ts +0 -44
- package/src/__tests__/loadSupergraphSdlFromStorage.test.ts +0 -694
- package/src/outOfBandReporter.ts +0 -128
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outOfBandReporter.js","sourceRoot":"","sources":["../../../src/supergraphManagers/UplinkFetcher/outOfBandReporter.ts"],"names":[],"mappings":";;;AAEA,mEAI0C;AAG7B,QAAA,0BAA0B,GAAgB;;;;CAItD,CAAC;AAEF,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;AAepD,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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { LocalCompose } from './LocalCompose';
|
|
2
|
+
export { LegacyFetcher } from './LegacyFetcher';
|
|
3
|
+
export { IntrospectAndCompose } from './IntrospectAndCompose';
|
|
4
|
+
export { UplinkFetcher } from './UplinkFetcher';
|
|
5
|
+
export { UplinkFetcherError } from './UplinkFetcher/loadSupergraphSdlFromStorage';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +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;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UplinkFetcherError = exports.UplinkFetcher = exports.IntrospectAndCompose = exports.LegacyFetcher = exports.LocalCompose = void 0;
|
|
4
|
+
var LocalCompose_1 = require("./LocalCompose");
|
|
5
|
+
Object.defineProperty(exports, "LocalCompose", { enumerable: true, get: function () { return LocalCompose_1.LocalCompose; } });
|
|
6
|
+
var LegacyFetcher_1 = require("./LegacyFetcher");
|
|
7
|
+
Object.defineProperty(exports, "LegacyFetcher", { enumerable: true, get: function () { return LegacyFetcher_1.LegacyFetcher; } });
|
|
8
|
+
var IntrospectAndCompose_1 = require("./IntrospectAndCompose");
|
|
9
|
+
Object.defineProperty(exports, "IntrospectAndCompose", { enumerable: true, get: function () { return IntrospectAndCompose_1.IntrospectAndCompose; } });
|
|
10
|
+
var UplinkFetcher_1 = require("./UplinkFetcher");
|
|
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; } });
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +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;AACtB,6FAAiF;AAAxE,kIAAA,kBAAkB,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createHash.d.ts","sourceRoot":"","sources":["../../src/utilities/createHash.ts"],"names":[],"mappings":"AAEA,wBAAgB,UAAU,CAAE,IAAI,EAAE,MAAM,GAAG,OAAO,QAAQ,EAAE,IAAI,CAO/D"}
|
|
@@ -0,0 +1,15 @@
|
|
|
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.createHash = void 0;
|
|
7
|
+
const isNodeLike_1 = __importDefault(require("./isNodeLike"));
|
|
8
|
+
function createHash(kind) {
|
|
9
|
+
if (isNodeLike_1.default) {
|
|
10
|
+
return module.require('crypto').createHash(kind);
|
|
11
|
+
}
|
|
12
|
+
return require('sha.js')(kind);
|
|
13
|
+
}
|
|
14
|
+
exports.createHash = createHash;
|
|
15
|
+
//# sourceMappingURL=createHash.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createHash.js","sourceRoot":"","sources":["../../src/utilities/createHash.ts"],"names":[],"mappings":";;;;;;AAAA,8DAAsC;AAEtC,SAAgB,UAAU,CAAE,IAAY;IACtC,IAAI,oBAAU,EAAE;QAGd,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;KAClD;IACD,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC;AAPD,gCAOC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isNodeLike.d.ts","sourceRoot":"","sources":["../../src/utilities/isNodeLike.ts"],"names":[],"mappings":";AAAA,wBAU4C"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.default = typeof process === 'object' &&
|
|
4
|
+
process &&
|
|
5
|
+
process.release &&
|
|
6
|
+
process.versions &&
|
|
7
|
+
typeof process.versions.node === 'string';
|
|
8
|
+
//# sourceMappingURL=isNodeLike.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isNodeLike.js","sourceRoot":"","sources":["../../src/utilities/isNodeLike.ts"],"names":[],"mappings":";;AAAA,kBAAe,OAAO,OAAO,KAAK,QAAQ;IACxC,OAAO;IAKP,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,QAAQ;IAGhB,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC"}
|
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.6",
|
|
4
4
|
"description": "Apollo Gateway",
|
|
5
5
|
"author": "Apollo <packages@apollographql.com>",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -25,12 +25,12 @@
|
|
|
25
25
|
"access": "public"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@apollo/composition": "^2.0.0-alpha.
|
|
28
|
+
"@apollo/composition": "^2.0.0-alpha.6",
|
|
29
29
|
"@apollo/core-schema": "^0.2.0",
|
|
30
|
-
"@apollo/query-planner": "^2.0.0-alpha.
|
|
30
|
+
"@apollo/query-planner": "^2.0.0-alpha.6",
|
|
31
|
+
"@josephg/resolvable": "^1.0.1",
|
|
31
32
|
"@opentelemetry/api": "^1.0.1",
|
|
32
33
|
"@types/node-fetch": "2.5.12",
|
|
33
|
-
"apollo-graphql": "^0.9.5",
|
|
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,12 +38,14 @@
|
|
|
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
|
-
"pretty-format": "^27.0.0"
|
|
44
|
+
"pretty-format": "^27.0.0",
|
|
45
|
+
"sha.js": "^2.4.11"
|
|
44
46
|
},
|
|
45
47
|
"peerDependencies": {
|
|
46
|
-
"graphql": "^
|
|
48
|
+
"graphql": "^16.0.0"
|
|
47
49
|
},
|
|
48
|
-
"gitHead": "
|
|
50
|
+
"gitHead": "ee84b3fd9df161c3a94ae3d70e82a14dba5794ba"
|
|
49
51
|
}
|
|
@@ -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);
|
|
@@ -27,6 +27,7 @@ Scenario: should not confuse union types with overlapping field names
|
|
|
27
27
|
"kind": "Fetch",
|
|
28
28
|
"serviceName": "documents",
|
|
29
29
|
"variableUsages": [],
|
|
30
|
+
"operationKind": "query",
|
|
30
31
|
"operation": "{body{__typename ...on Image{attributes{url}}...on Text{attributes{bold text}}}}"
|
|
31
32
|
}
|
|
32
33
|
}
|
|
@@ -51,6 +52,7 @@ Scenario: should use a single fetch when requesting a root field from one servic
|
|
|
51
52
|
"kind": "Fetch",
|
|
52
53
|
"serviceName": "accounts",
|
|
53
54
|
"variableUsages": [],
|
|
55
|
+
"operationKind": "query",
|
|
54
56
|
"operation": "{me{name{first}}}"
|
|
55
57
|
}
|
|
56
58
|
}
|
|
@@ -81,6 +83,7 @@ Scenario: should use two independent fetches when requesting root fields from tw
|
|
|
81
83
|
"kind": "Fetch",
|
|
82
84
|
"serviceName": "accounts",
|
|
83
85
|
"variableUsages": [],
|
|
86
|
+
"operationKind": "query",
|
|
84
87
|
"operation": "{me{name{first}}}"
|
|
85
88
|
},
|
|
86
89
|
{
|
|
@@ -90,6 +93,7 @@ Scenario: should use two independent fetches when requesting root fields from tw
|
|
|
90
93
|
"kind": "Fetch",
|
|
91
94
|
"serviceName": "product",
|
|
92
95
|
"variableUsages": [],
|
|
96
|
+
"operationKind": "query",
|
|
93
97
|
"operation": "{topProducts{__typename ...on Book{__typename isbn}...on Furniture{name}}}"
|
|
94
98
|
},
|
|
95
99
|
{
|
|
@@ -109,6 +113,7 @@ Scenario: should use two independent fetches when requesting root fields from tw
|
|
|
109
113
|
}
|
|
110
114
|
],
|
|
111
115
|
"variableUsages": [],
|
|
116
|
+
"operationKind": "query",
|
|
112
117
|
"operation": "query($representations:[_Any!]!){_entities(representations:$representations){...on Book{title year}}}"
|
|
113
118
|
}
|
|
114
119
|
},
|
|
@@ -131,6 +136,7 @@ Scenario: should use two independent fetches when requesting root fields from tw
|
|
|
131
136
|
}
|
|
132
137
|
],
|
|
133
138
|
"variableUsages": [],
|
|
139
|
+
"operationKind": "query",
|
|
134
140
|
"operation": "query($representations:[_Any!]!){_entities(representations:$representations){...on Book{name}}}"
|
|
135
141
|
}
|
|
136
142
|
}
|
|
@@ -164,6 +170,7 @@ Scenario: should use a single fetch when requesting multiple root fields from th
|
|
|
164
170
|
"kind": "Fetch",
|
|
165
171
|
"serviceName": "product",
|
|
166
172
|
"variableUsages": [],
|
|
173
|
+
"operationKind": "query",
|
|
167
174
|
"operation": "{topProducts{__typename ...on Book{__typename isbn}...on Furniture{name}}product(upc:\"1\"){__typename ...on Book{__typename isbn}...on Furniture{name}}}"
|
|
168
175
|
},
|
|
169
176
|
{
|
|
@@ -189,6 +196,7 @@ Scenario: should use a single fetch when requesting multiple root fields from th
|
|
|
189
196
|
}
|
|
190
197
|
],
|
|
191
198
|
"variableUsages": [],
|
|
199
|
+
"operationKind": "query",
|
|
192
200
|
"operation": "query($representations:[_Any!]!){_entities(representations:$representations){...on Book{title year}}}"
|
|
193
201
|
}
|
|
194
202
|
},
|
|
@@ -211,6 +219,7 @@ Scenario: should use a single fetch when requesting multiple root fields from th
|
|
|
211
219
|
}
|
|
212
220
|
],
|
|
213
221
|
"variableUsages": [],
|
|
222
|
+
"operationKind": "query",
|
|
214
223
|
"operation": "query($representations:[_Any!]!){_entities(representations:$representations){...on Book{name}}}"
|
|
215
224
|
}
|
|
216
225
|
}
|
|
@@ -236,6 +245,7 @@ Scenario: should use a single fetch when requesting multiple root fields from th
|
|
|
236
245
|
}
|
|
237
246
|
],
|
|
238
247
|
"variableUsages": [],
|
|
248
|
+
"operationKind": "query",
|
|
239
249
|
"operation": "query($representations:[_Any!]!){_entities(representations:$representations){...on Book{title year}}}"
|
|
240
250
|
}
|
|
241
251
|
},
|
|
@@ -258,6 +268,7 @@ Scenario: should use a single fetch when requesting multiple root fields from th
|
|
|
258
268
|
}
|
|
259
269
|
],
|
|
260
270
|
"variableUsages": [],
|
|
271
|
+
"operationKind": "query",
|
|
261
272
|
"operation": "query($representations:[_Any!]!){_entities(representations:$representations){...on Book{name}}}"
|
|
262
273
|
}
|
|
263
274
|
}
|
|
@@ -292,6 +303,7 @@ Scenario: should use a single fetch when requesting relationship subfields from
|
|
|
292
303
|
"kind": "Fetch",
|
|
293
304
|
"serviceName": "reviews",
|
|
294
305
|
"variableUsages": [],
|
|
306
|
+
"operationKind": "query",
|
|
295
307
|
"operation": "{topReviews{body author{reviews{body}}}}"
|
|
296
308
|
}
|
|
297
309
|
}
|
|
@@ -320,6 +332,7 @@ Scenario: should use a single fetch when requesting relationship subfields and p
|
|
|
320
332
|
"kind": "Fetch",
|
|
321
333
|
"serviceName": "reviews",
|
|
322
334
|
"variableUsages": [],
|
|
335
|
+
"operationKind": "query",
|
|
323
336
|
"operation": "{topReviews{body author{id reviews{body}}}}"
|
|
324
337
|
}
|
|
325
338
|
}
|
|
@@ -350,6 +363,7 @@ Scenario: when requesting an extension field from another service, it should add
|
|
|
350
363
|
"kind": "Fetch",
|
|
351
364
|
"serviceName": "accounts",
|
|
352
365
|
"variableUsages": [],
|
|
366
|
+
"operationKind": "query",
|
|
353
367
|
"operation": "{me{__typename id name{first}}}"
|
|
354
368
|
},
|
|
355
369
|
{
|
|
@@ -369,6 +383,7 @@ Scenario: when requesting an extension field from another service, it should add
|
|
|
369
383
|
}
|
|
370
384
|
],
|
|
371
385
|
"variableUsages": [],
|
|
386
|
+
"operationKind": "query",
|
|
372
387
|
"operation": "query($representations:[_Any!]!){_entities(representations:$representations){...on User{reviews{body}}}}"
|
|
373
388
|
}
|
|
374
389
|
}
|
|
@@ -399,6 +414,7 @@ Scenario: when requesting an extension field from another service, when the pare
|
|
|
399
414
|
"kind": "Fetch",
|
|
400
415
|
"serviceName": "accounts",
|
|
401
416
|
"variableUsages": [],
|
|
417
|
+
"operationKind": "query",
|
|
402
418
|
"operation": "{me{__typename id}}"
|
|
403
419
|
},
|
|
404
420
|
{
|
|
@@ -418,6 +434,7 @@ Scenario: when requesting an extension field from another service, when the pare
|
|
|
418
434
|
}
|
|
419
435
|
],
|
|
420
436
|
"variableUsages": [],
|
|
437
|
+
"operationKind": "query",
|
|
421
438
|
"operation": "query($representations:[_Any!]!){_entities(representations:$representations){...on User{reviews{body}}}}"
|
|
422
439
|
}
|
|
423
440
|
}
|
|
@@ -449,6 +466,7 @@ Scenario: when requesting an extension field from another service, should only a
|
|
|
449
466
|
"kind": "Fetch",
|
|
450
467
|
"serviceName": "accounts",
|
|
451
468
|
"variableUsages": [],
|
|
469
|
+
"operationKind": "query",
|
|
452
470
|
"operation": "{me{__typename id}}"
|
|
453
471
|
},
|
|
454
472
|
{
|
|
@@ -468,6 +486,7 @@ Scenario: when requesting an extension field from another service, should only a
|
|
|
468
486
|
}
|
|
469
487
|
],
|
|
470
488
|
"variableUsages": [],
|
|
489
|
+
"operationKind": "query",
|
|
471
490
|
"operation": "query($representations:[_Any!]!){_entities(representations:$representations){...on User{reviews{body}numberOfReviews}}}"
|
|
472
491
|
}
|
|
473
492
|
}
|
|
@@ -501,6 +520,7 @@ Scenario: when requesting a composite field with subfields from another service,
|
|
|
501
520
|
"kind": "Fetch",
|
|
502
521
|
"serviceName": "reviews",
|
|
503
522
|
"variableUsages": [],
|
|
523
|
+
"operationKind": "query",
|
|
504
524
|
"operation": "{topReviews{body author{__typename id}}}"
|
|
505
525
|
},
|
|
506
526
|
{
|
|
@@ -520,6 +540,7 @@ Scenario: when requesting a composite field with subfields from another service,
|
|
|
520
540
|
}
|
|
521
541
|
],
|
|
522
542
|
"variableUsages": [],
|
|
543
|
+
"operationKind": "query",
|
|
523
544
|
"operation": "query($representations:[_Any!]!){_entities(representations:$representations){...on User{name{first}}}}"
|
|
524
545
|
}
|
|
525
546
|
}
|
|
@@ -548,6 +569,7 @@ Scenario: when requesting a composite field with subfields from another service,
|
|
|
548
569
|
"kind": "Fetch",
|
|
549
570
|
"serviceName": "product",
|
|
550
571
|
"variableUsages": [],
|
|
572
|
+
"operationKind": "query",
|
|
551
573
|
"operation": "{topCars{__typename id price}}"
|
|
552
574
|
},
|
|
553
575
|
{
|
|
@@ -568,6 +590,7 @@ Scenario: when requesting a composite field with subfields from another service,
|
|
|
568
590
|
}
|
|
569
591
|
],
|
|
570
592
|
"variableUsages": [],
|
|
593
|
+
"operationKind": "query",
|
|
571
594
|
"operation": "query($representations:[_Any!]!){_entities(representations:$representations){...on Car{retailPrice}}}"
|
|
572
595
|
}
|
|
573
596
|
}
|
|
@@ -600,6 +623,7 @@ Scenario: when requesting a composite field with subfields from another service,
|
|
|
600
623
|
"kind": "Fetch",
|
|
601
624
|
"serviceName": "reviews",
|
|
602
625
|
"variableUsages": [],
|
|
626
|
+
"operationKind": "query",
|
|
603
627
|
"operation": "{topReviews{author{__typename id}}}"
|
|
604
628
|
},
|
|
605
629
|
{
|
|
@@ -619,6 +643,7 @@ Scenario: when requesting a composite field with subfields from another service,
|
|
|
619
643
|
}
|
|
620
644
|
],
|
|
621
645
|
"variableUsages": [],
|
|
646
|
+
"operationKind": "query",
|
|
622
647
|
"operation": "query($representations:[_Any!]!){_entities(representations:$representations){...on User{name{first}}}}"
|
|
623
648
|
}
|
|
624
649
|
}
|
|
@@ -649,6 +674,7 @@ Scenario: when requesting a relationship field with extension subfields from a d
|
|
|
649
674
|
"kind": "Fetch",
|
|
650
675
|
"serviceName": "reviews",
|
|
651
676
|
"variableUsages": [],
|
|
677
|
+
"operationKind": "query",
|
|
652
678
|
"operation": "{topReviews{author{__typename id}}}"
|
|
653
679
|
},
|
|
654
680
|
{
|
|
@@ -668,6 +694,7 @@ Scenario: when requesting a relationship field with extension subfields from a d
|
|
|
668
694
|
}
|
|
669
695
|
],
|
|
670
696
|
"variableUsages": [],
|
|
697
|
+
"operationKind": "query",
|
|
671
698
|
"operation": "query($representations:[_Any!]!){_entities(representations:$representations){...on User{birthDate}}}"
|
|
672
699
|
}
|
|
673
700
|
}
|
|
@@ -693,6 +720,7 @@ Scenario: for abstract types, it should add __typename when fetching objects of
|
|
|
693
720
|
"kind": "Fetch",
|
|
694
721
|
"serviceName": "product",
|
|
695
722
|
"variableUsages": [],
|
|
723
|
+
"operationKind": "query",
|
|
696
724
|
"operation": "{topProducts{__typename price}}"
|
|
697
725
|
}
|
|
698
726
|
}
|
|
@@ -721,6 +749,7 @@ Scenario: should break up when traversing an extension field on an interface typ
|
|
|
721
749
|
"kind": "Fetch",
|
|
722
750
|
"serviceName": "product",
|
|
723
751
|
"variableUsages": [],
|
|
752
|
+
"operationKind": "query",
|
|
724
753
|
"operation": "{topProducts{__typename price ...on Book{__typename isbn}...on Furniture{__typename upc}}}"
|
|
725
754
|
},
|
|
726
755
|
{
|
|
@@ -748,6 +777,7 @@ Scenario: should break up when traversing an extension field on an interface typ
|
|
|
748
777
|
}
|
|
749
778
|
],
|
|
750
779
|
"variableUsages": [],
|
|
780
|
+
"operationKind": "query",
|
|
751
781
|
"operation": "query($representations:[_Any!]!){_entities(representations:$representations){...on Book{reviews{body}}...on Furniture{reviews{body}}}}"
|
|
752
782
|
}
|
|
753
783
|
}
|
|
@@ -781,6 +811,7 @@ Scenario: interface fragments should expand into possible types only
|
|
|
781
811
|
"kind": "Fetch",
|
|
782
812
|
"serviceName": "books",
|
|
783
813
|
"variableUsages": [],
|
|
814
|
+
"operationKind": "query",
|
|
784
815
|
"operation": "{books{__typename isbn title year}}"
|
|
785
816
|
},
|
|
786
817
|
{
|
|
@@ -802,6 +833,7 @@ Scenario: interface fragments should expand into possible types only
|
|
|
802
833
|
}
|
|
803
834
|
],
|
|
804
835
|
"variableUsages": [],
|
|
836
|
+
"operationKind": "query",
|
|
805
837
|
"operation": "query($representations:[_Any!]!){_entities(representations:$representations){...on Book{name}}}"
|
|
806
838
|
}
|
|
807
839
|
}
|
|
@@ -829,6 +861,7 @@ Scenario: interface inside interface should expand into possible types only
|
|
|
829
861
|
"kind": "Fetch",
|
|
830
862
|
"serviceName": "product",
|
|
831
863
|
"variableUsages": [],
|
|
864
|
+
"operationKind": "query",
|
|
832
865
|
"operation": "{product(upc:\"\"){__typename details{__typename country}}}"
|
|
833
866
|
}
|
|
834
867
|
}
|
|
@@ -870,6 +903,7 @@ Scenario: should properly expand nested unions with inline fragments
|
|
|
870
903
|
"kind": "Fetch",
|
|
871
904
|
"serviceName": "documents",
|
|
872
905
|
"variableUsages": [],
|
|
906
|
+
"operationKind": "query",
|
|
873
907
|
"operation": "{body{__typename ...on Image{attributes{url}}...on Text{attributes{bold}}}}"
|
|
874
908
|
}
|
|
875
909
|
}
|
|
@@ -912,6 +946,7 @@ Scenario: deduplicates fields / selections regardless of adjacency and type cond
|
|
|
912
946
|
"kind": "Fetch",
|
|
913
947
|
"serviceName": "documents",
|
|
914
948
|
"variableUsages": [],
|
|
949
|
+
"operationKind": "query",
|
|
915
950
|
"operation": "{body{__typename ...on Text{attributes{bold text}}}}"
|
|
916
951
|
}
|
|
917
952
|
}
|
|
@@ -947,6 +982,7 @@ Scenario: deduplicates fields / selections regardless of adjacency and type cond
|
|
|
947
982
|
"kind": "Fetch",
|
|
948
983
|
"serviceName": "documents",
|
|
949
984
|
"variableUsages": [],
|
|
985
|
+
"operationKind": "query",
|
|
950
986
|
"operation": "{body{__typename ...on Text{attributes{bold text}}}}"
|
|
951
987
|
}
|
|
952
988
|
}
|
|
@@ -972,6 +1008,7 @@ Scenario: supports basic, single-service mutation
|
|
|
972
1008
|
"username",
|
|
973
1009
|
"password"
|
|
974
1010
|
],
|
|
1011
|
+
"operationKind": "mutation",
|
|
975
1012
|
"operation": "mutation($username:String!$password:String!){login(username:$username password:$password){id}}"
|
|
976
1013
|
}
|
|
977
1014
|
}
|
|
@@ -1005,6 +1042,7 @@ Scenario: supports mutations with a cross-service request
|
|
|
1005
1042
|
"username",
|
|
1006
1043
|
"password"
|
|
1007
1044
|
],
|
|
1045
|
+
"operationKind": "mutation",
|
|
1008
1046
|
"operation": "mutation($username:String!$password:String!){login(username:$username password:$password){__typename id}}"
|
|
1009
1047
|
},
|
|
1010
1048
|
{
|
|
@@ -1032,6 +1070,7 @@ Scenario: supports mutations with a cross-service request
|
|
|
1032
1070
|
}
|
|
1033
1071
|
],
|
|
1034
1072
|
"variableUsages": [],
|
|
1073
|
+
"operationKind": "query",
|
|
1035
1074
|
"operation": "query($representations:[_Any!]!){_entities(representations:$representations){...on User{reviews{product{__typename ...on Book{__typename isbn}...on Furniture{upc}}}}}}"
|
|
1036
1075
|
}
|
|
1037
1076
|
},
|
|
@@ -1063,6 +1102,7 @@ Scenario: supports mutations with a cross-service request
|
|
|
1063
1102
|
}
|
|
1064
1103
|
],
|
|
1065
1104
|
"variableUsages": [],
|
|
1105
|
+
"operationKind": "query",
|
|
1066
1106
|
"operation": "query($representations:[_Any!]!){_entities(representations:$representations){...on Book{upc}}}"
|
|
1067
1107
|
}
|
|
1068
1108
|
}
|
|
@@ -1097,6 +1137,7 @@ Scenario: returning across service boundaries
|
|
|
1097
1137
|
"upc",
|
|
1098
1138
|
"body"
|
|
1099
1139
|
],
|
|
1140
|
+
"operationKind": "mutation",
|
|
1100
1141
|
"operation": "mutation($upc:String!$body:String!){reviewProduct(input:{upc:$upc body:$body}){__typename ...on Furniture{__typename upc}}}"
|
|
1101
1142
|
},
|
|
1102
1143
|
{
|
|
@@ -1124,6 +1165,7 @@ Scenario: returning across service boundaries
|
|
|
1124
1165
|
}
|
|
1125
1166
|
],
|
|
1126
1167
|
"variableUsages": [],
|
|
1168
|
+
"operationKind": "query",
|
|
1127
1169
|
"operation": "query($representations:[_Any!]!){_entities(representations:$representations){...on Furniture{name}}}"
|
|
1128
1170
|
}
|
|
1129
1171
|
}
|
|
@@ -1170,6 +1212,7 @@ Scenario: supports multiple root mutations
|
|
|
1170
1212
|
"username",
|
|
1171
1213
|
"password"
|
|
1172
1214
|
],
|
|
1215
|
+
"operationKind": "mutation",
|
|
1173
1216
|
"operation": "mutation($username:String!$password:String!){login(username:$username password:$password){__typename id}}"
|
|
1174
1217
|
},
|
|
1175
1218
|
{
|
|
@@ -1197,6 +1240,7 @@ Scenario: supports multiple root mutations
|
|
|
1197
1240
|
}
|
|
1198
1241
|
],
|
|
1199
1242
|
"variableUsages": [],
|
|
1243
|
+
"operationKind": "query",
|
|
1200
1244
|
"operation": "query($representations:[_Any!]!){_entities(representations:$representations){...on User{reviews{product{__typename ...on Book{__typename isbn}...on Furniture{upc}}}}}}"
|
|
1201
1245
|
}
|
|
1202
1246
|
},
|
|
@@ -1228,6 +1272,7 @@ Scenario: supports multiple root mutations
|
|
|
1228
1272
|
}
|
|
1229
1273
|
],
|
|
1230
1274
|
"variableUsages": [],
|
|
1275
|
+
"operationKind": "query",
|
|
1231
1276
|
"operation": "query($representations:[_Any!]!){_entities(representations:$representations){...on Book{upc}}}"
|
|
1232
1277
|
}
|
|
1233
1278
|
},
|
|
@@ -1238,6 +1283,7 @@ Scenario: supports multiple root mutations
|
|
|
1238
1283
|
"upc",
|
|
1239
1284
|
"body"
|
|
1240
1285
|
],
|
|
1286
|
+
"operationKind": "mutation",
|
|
1241
1287
|
"operation": "mutation($upc:String!$body:String!){reviewProduct(input:{upc:$upc body:$body}){__typename ...on Furniture{__typename upc}}}"
|
|
1242
1288
|
},
|
|
1243
1289
|
{
|
|
@@ -1265,6 +1311,7 @@ Scenario: supports multiple root mutations
|
|
|
1265
1311
|
}
|
|
1266
1312
|
],
|
|
1267
1313
|
"variableUsages": [],
|
|
1314
|
+
"operationKind": "query",
|
|
1268
1315
|
"operation": "query($representations:[_Any!]!){_entities(representations:$representations){...on Furniture{name}}}"
|
|
1269
1316
|
}
|
|
1270
1317
|
}
|
|
@@ -1319,6 +1366,7 @@ Scenario: multiple root mutations with correct service order
|
|
|
1319
1366
|
"body",
|
|
1320
1367
|
"updatedReview"
|
|
1321
1368
|
],
|
|
1369
|
+
"operationKind": "mutation",
|
|
1322
1370
|
"operation": "mutation($upc:String!$body:String!$updatedReview:UpdateReviewInput!){reviewProduct(input:{upc:$upc body:$body}){__typename ...on Furniture{upc}}updateReview(review:$updatedReview){id body}}"
|
|
1323
1371
|
},
|
|
1324
1372
|
{
|
|
@@ -1328,6 +1376,7 @@ Scenario: multiple root mutations with correct service order
|
|
|
1328
1376
|
"username",
|
|
1329
1377
|
"password"
|
|
1330
1378
|
],
|
|
1379
|
+
"operationKind": "mutation",
|
|
1331
1380
|
"operation": "mutation($username:String!$password:String!){login(username:$username password:$password){__typename id}}"
|
|
1332
1381
|
},
|
|
1333
1382
|
{
|
|
@@ -1355,6 +1404,7 @@ Scenario: multiple root mutations with correct service order
|
|
|
1355
1404
|
}
|
|
1356
1405
|
],
|
|
1357
1406
|
"variableUsages": [],
|
|
1407
|
+
"operationKind": "query",
|
|
1358
1408
|
"operation": "query($representations:[_Any!]!){_entities(representations:$representations){...on User{reviews{product{__typename ...on Book{__typename isbn}...on Furniture{upc}}}}}}"
|
|
1359
1409
|
}
|
|
1360
1410
|
},
|
|
@@ -1386,6 +1436,7 @@ Scenario: multiple root mutations with correct service order
|
|
|
1386
1436
|
}
|
|
1387
1437
|
],
|
|
1388
1438
|
"variableUsages": [],
|
|
1439
|
+
"operationKind": "query",
|
|
1389
1440
|
"operation": "query($representations:[_Any!]!){_entities(representations:$representations){...on Book{upc}}}"
|
|
1390
1441
|
}
|
|
1391
1442
|
},
|
|
@@ -1395,6 +1446,7 @@ Scenario: multiple root mutations with correct service order
|
|
|
1395
1446
|
"variableUsages": [
|
|
1396
1447
|
"reviewId"
|
|
1397
1448
|
],
|
|
1449
|
+
"operationKind": "mutation",
|
|
1398
1450
|
"operation": "mutation($reviewId:ID!){deleteReview(id:$reviewId)}"
|
|
1399
1451
|
}
|
|
1400
1452
|
]
|