UNPKG

@zuu/owl

Version:

Zuu's Experimental GraphQL Implementation

88 lines 4.41 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 types_1 = require("../helpers/types"); const validate_arg_1 = require("./validate-arg"); const container_1 = require("../utils/container"); const auth_middleware_1 = require("../helpers/auth-middleware"); function getParams(params, { root, args, context, info }, globalValidate, pubSub) { return __awaiter(this, void 0, void 0, function* () { return Promise.all(params.sort((a, b) => a.index - b.index).map((paramInfo) => __awaiter(this, void 0, void 0, function* () { switch (paramInfo.kind) { case "args": return yield validate_arg_1.validateArg(types_1.convertToType(paramInfo.getType(), args), globalValidate, paramInfo.validate); case "arg": return yield validate_arg_1.validateArg(types_1.convertToType(paramInfo.getType(), args[paramInfo.name]), globalValidate, paramInfo.validate); case "context": if (paramInfo.propertyName) { return context[paramInfo.propertyName]; } return context; case "root": const rootValue = paramInfo.propertyName ? root[paramInfo.propertyName] : root; if (!paramInfo.getType) { return rootValue; } return types_1.convertToType(paramInfo.getType(), rootValue); case "info": return info; case "pubSub": if (paramInfo.triggerKey) { return (payload) => pubSub.publish(paramInfo.triggerKey, payload); } return pubSub; } }))); }); } exports.getParams = getParams; function applyAuthChecker(middlewares, authMode, authChecker, roles) { if (authChecker && roles) { middlewares.unshift(auth_middleware_1.AuthMiddleware(authChecker, authMode, roles)); } } exports.applyAuthChecker = applyAuthChecker; function applyMiddlewares(resolverData, middlewares, resolverHandlerFunction) { return __awaiter(this, void 0, void 0, function* () { let middlewaresIndex = -1; function dispatchHandler(currentIndex) { return __awaiter(this, void 0, void 0, function* () { if (currentIndex <= middlewaresIndex) { throw new Error("next() called multiple times"); } middlewaresIndex = currentIndex; let handlerFn; if (currentIndex === middlewares.length) { handlerFn = resolverHandlerFunction; } else { const currentMiddleware = middlewares[currentIndex]; // arrow function or class if (currentMiddleware.prototype !== undefined) { const middlewareClassInstance = container_1.IOCContainer.getInstance(currentMiddleware); handlerFn = middlewareClassInstance.use.bind(middlewareClassInstance); } else { handlerFn = currentMiddleware; } } let nextResult; const result = yield handlerFn(resolverData, () => __awaiter(this, void 0, void 0, function* () { nextResult = yield dispatchHandler(currentIndex + 1); return nextResult; })); return result !== undefined ? result : nextResult; }); } return dispatchHandler(0); }); } exports.applyMiddlewares = applyMiddlewares; //# sourceMappingURL=helpers.js.map