1 | "use strict";
|
2 | var __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 | };
|
10 | var __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 | };
|
15 | var __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }
|
16 | var __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 | };
|
27 | Object.defineProperty(exports, "__esModule", { value: true });
|
28 | const resolvers_1 = require("../hooks/resolvers");
|
29 | const getTranspiler_1 = require("./getTranspiler");
|
30 | const context_1 = require("../api/context");
|
31 | const iterall_1 = require("iterall");
|
32 | let resolvers;
|
33 | function 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 | }
|
99 | resolvers_1.default.addFilter('executionContext', mapContextExecution);
|
100 | function 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 | }
|
109 | exports.getResolvers = getResolvers;
|
110 |
|
\ | No newline at end of file |