UNPKG

5.59 kBJavaScriptView Raw
1"use strict";
2var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3 return new (P || (P = Promise))(function (resolve, reject) {
4 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6 function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
7 step((generator = generator.apply(thisArg, _arguments || [])).next());
8 });
9};
10var __asyncValues = (this && this.__asyncValues) || function (o) {
11 if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
12 var m = o[Symbol.asyncIterator];
13 return m ? m.call(o) : typeof __values === "function" ? __values(o) : o[Symbol.iterator]();
14};
15var __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }
16var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {
17 if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
18 var g = generator.apply(thisArg, _arguments || []), i, q = [];
19 return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
20 function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
21 function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
22 function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
23 function fulfill(value) { resume("next", value); }
24 function reject(value) { resume("throw", value); }
25 function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
26};
27Object.defineProperty(exports, "__esModule", { value: true });
28const resolvers_1 = require("../hooks/resolvers");
29const getTranspiler_1 = require("./getTranspiler");
30const context_1 = require("../api/context");
31const iterall_1 = require("iterall");
32let resolvers;
33function mapContextExecution(resolvers) {
34 const newResolvers = {};
35 const mapResolver = (resolver) => ((rootValue, args, context, info) => __awaiter(this, void 0, void 0, function* () {
36 const execution = yield context_1.createExecutionContext(context, info);
37 try {
38 const result = yield resolver(rootValue, args, execution, info);
39 if (iterall_1.isAsyncIterable(result)) {
40 return (function () {
41 return __asyncGenerator(this, arguments, function* () {
42 try {
43 try {
44 for (var result_1 = __asyncValues(result), result_1_1; result_1_1 = yield __await(result_1.next()), !result_1_1.done;) {
45 const data = yield __await(result_1_1.value);
46 yield data;
47 }
48 }
49 catch (e_1_1) { e_1 = { error: e_1_1 }; }
50 finally {
51 try {
52 if (result_1_1 && !result_1_1.done && (_a = result_1.return)) yield __await(_a.call(result_1));
53 }
54 finally { if (e_1) throw e_1.error; }
55 }
56 }
57 catch (error) {
58 if (!execution.completed) {
59 execution.end(error);
60 }
61 throw error;
62 }
63 var e_1, _a;
64 });
65 })();
66 }
67 return result;
68 }
69 catch (error) {
70 if (!execution.completed) {
71 execution.end(error);
72 }
73 throw error;
74 }
75 }));
76 for (const key in resolvers) {
77 const resolver = resolvers[key];
78 if (typeof resolver === 'object' && resolver != null) {
79 newResolvers[key] = {};
80 for (const field in resolver) {
81 const fieldResolver = resolver[field];
82 if (typeof fieldResolver === 'function') {
83 newResolvers[key][field] = mapResolver(fieldResolver);
84 }
85 else {
86 newResolvers[key][field] = Object.assign({}, fieldResolver);
87 if (typeof fieldResolver.subscribe === 'function') {
88 newResolvers[key][field].subscribe = mapResolver(fieldResolver.subscribe);
89 }
90 if (typeof fieldResolver.resolve === 'function') {
91 newResolvers[key][field].resolve = mapResolver(fieldResolver.resolve);
92 }
93 }
94 }
95 }
96 }
97 return newResolvers;
98}
99resolvers_1.default.addFilter('executionContext', mapContextExecution);
100function getResolvers(schema) {
101 if (resolvers !== undefined) {
102 return resolvers;
103 }
104 const transpiler = getTranspiler_1.getTranspiler();
105 resolvers = transpiler.getResolvers(schema);
106 resolvers = resolvers_1.default.filter(resolvers, {});
107 return resolvers;
108}
109exports.getResolvers = getResolvers;
110//# sourceMappingURL=getResolvers.js.map
\No newline at end of file