@zuu/owl
Version:
Zuu's Experimental GraphQL Implementation
60 lines • 3.85 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const container_1 = require("../utils/container");
const helpers_1 = require("./helpers");
const types_1 = require("../helpers/types");
const build_context_1 = require("../schema/build-context");
function createHandlerResolver(resolverMetadata) {
const { validate: globalValidate, authChecker, authMode, pubSub, globalMiddlewares, } = build_context_1.BuildContext;
const middlewares = globalMiddlewares.concat(resolverMetadata.middlewares);
helpers_1.applyAuthChecker(middlewares, authMode, authChecker, resolverMetadata.roles);
return (root, args, context, info) => __awaiter(this, void 0, void 0, function* () {
const targetInstance = container_1.IOCContainer.getInstance(resolverMetadata.target);
const resolverData = { root, args, context, info };
return helpers_1.applyMiddlewares(resolverData, middlewares, () => __awaiter(this, void 0, void 0, function* () {
const params = yield helpers_1.getParams(resolverMetadata.params, resolverData, globalValidate, pubSub);
return resolverMetadata.handler.apply(targetInstance, params);
}));
});
}
exports.createHandlerResolver = createHandlerResolver;
function createAdvancedFieldResolver(fieldResolverMetadata) {
if (fieldResolverMetadata.kind === "external") {
return createHandlerResolver(fieldResolverMetadata);
}
const targetType = fieldResolverMetadata.getObjectType();
const { validate: globalValidate, authChecker, authMode, pubSub, globalMiddlewares, } = build_context_1.BuildContext;
const middlewares = globalMiddlewares.concat(fieldResolverMetadata.middlewares);
helpers_1.applyAuthChecker(middlewares, authMode, authChecker, fieldResolverMetadata.roles);
return (root, args, context, info) => __awaiter(this, void 0, void 0, function* () {
const resolverData = { root, args, context, info };
const targetInstance = types_1.convertToType(targetType, root);
return helpers_1.applyMiddlewares(resolverData, middlewares, () => __awaiter(this, void 0, void 0, function* () {
if (fieldResolverMetadata.handler) {
const params = yield helpers_1.getParams(fieldResolverMetadata.params, resolverData, globalValidate, pubSub);
return fieldResolverMetadata.handler.apply(targetInstance, params);
}
return targetInstance[fieldResolverMetadata.methodName];
}));
});
}
exports.createAdvancedFieldResolver = createAdvancedFieldResolver;
function createSimpleFieldResolver(fieldMetadata) {
const { authChecker, authMode, globalMiddlewares } = build_context_1.BuildContext;
const middlewares = globalMiddlewares.concat(fieldMetadata.middlewares);
helpers_1.applyAuthChecker(middlewares, authMode, authChecker, fieldMetadata.roles);
return (root, args, context, info) => __awaiter(this, void 0, void 0, function* () {
const resolverData = { root, args, context, info };
return yield helpers_1.applyMiddlewares(resolverData, middlewares, () => root[fieldMetadata.name]);
});
}
exports.createSimpleFieldResolver = createSimpleFieldResolver;
//# sourceMappingURL=create.js.map