UNPKG

@zuu/owl

Version:

Zuu's Experimental GraphQL Implementation

60 lines 3.85 kB
"use strict"; 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