1 | Object.defineProperty(exports, "__esModule", { value: true });
|
2 | var delegateToSchema_1 = require("./delegateToSchema");
|
3 | function generateProxyingResolvers(targetSchema, transforms, mapping) {
|
4 | var result = {};
|
5 | Object.keys(mapping).forEach(function (name) {
|
6 | result[name] = {};
|
7 | var innerMapping = mapping[name];
|
8 | Object.keys(innerMapping).forEach(function (from) {
|
9 | var _a;
|
10 | var to = innerMapping[from];
|
11 | var resolverType = to.operation === 'subscription' ? 'subscribe' : 'resolve';
|
12 | result[name][from] = (_a = {},
|
13 | _a[resolverType] = createProxyingResolver(targetSchema, to.operation, to.name, transforms),
|
14 | _a);
|
15 | });
|
16 | });
|
17 | return result;
|
18 | }
|
19 | exports.generateProxyingResolvers = generateProxyingResolvers;
|
20 | function generateSimpleMapping(targetSchema) {
|
21 | var query = targetSchema.getQueryType();
|
22 | var mutation = targetSchema.getMutationType();
|
23 | var subscription = targetSchema.getSubscriptionType();
|
24 | var result = {};
|
25 | if (query) {
|
26 | result[query.name] = generateMappingFromObjectType(query, 'query');
|
27 | }
|
28 | if (mutation) {
|
29 | result[mutation.name] = generateMappingFromObjectType(mutation, 'mutation');
|
30 | }
|
31 | if (subscription) {
|
32 | result[subscription.name] = generateMappingFromObjectType(subscription, 'subscription');
|
33 | }
|
34 | return result;
|
35 | }
|
36 | exports.generateSimpleMapping = generateSimpleMapping;
|
37 | function generateMappingFromObjectType(type, operation) {
|
38 | var result = {};
|
39 | var fields = type.getFields();
|
40 | Object.keys(fields).forEach(function (fieldName) {
|
41 | result[fieldName] = {
|
42 | name: fieldName,
|
43 | operation: operation,
|
44 | };
|
45 | });
|
46 | return result;
|
47 | }
|
48 | exports.generateMappingFromObjectType = generateMappingFromObjectType;
|
49 | function createProxyingResolver(schema, operation, fieldName, transforms) {
|
50 | return function (parent, args, context, info) { return delegateToSchema_1.default({
|
51 | schema: schema,
|
52 | operation: operation,
|
53 | fieldName: fieldName,
|
54 | args: {},
|
55 | context: context,
|
56 | info: info,
|
57 | transforms: transforms,
|
58 | }); };
|
59 | }
|
60 |
|
\ | No newline at end of file |