/**
 * Minified by jsDelivr using Terser v5.37.0.
 * Original file: /npm/grasshopper-framework@0.0.0-alpha.5/index.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
"use strict";const HTTP_METHODS=["get","head","post","put","delete","trace"],_=require("lodash"),defaultPort=3e3,errors=require("./lib/errors"),express=require("express"),EventEmitter=require("events"),getSetter=require("get-setter"),logger=require("./lib/logger"),path=require("path"),pkg=require("./package.json"),setupMongo=require("./lib/setupMongo"),startExpress=require("./lib/startExpress"),startGrasshopper=require("./lib/startGrasshopper"),staticMiddlewares=require("./middlewares"),useDefaultMiddlewares=require("./lib/useDefaultMiddlewares");require("bluebird").config({longStackTraces:!0});var storage={configs:null,express:null,expressApp:null,middlewares:null,options:null,verbose:!1,version:pkg.version},ghf={addMiddleware:addMiddleware,events:new EventEmitter,grasshopper:null,grasshopperRequest:null,initialize:initialize,log:null,mongoDb:null,server:null,setConfigs:setConfigs,start:start,staticMiddlewares:staticMiddlewares,get:getSetter.get.bind(storage),set:getSetter.set.bind(storage)};function setConfigs(e){return e.port=e.port||3e3,e.verbose=!!e.verbose,e.verbose&&console.log(e),ghf.set("options",e),ghf.set("express",e.express||express),ghf.set("expressApp",e.app||ghf.get("express")()),ghf.log=logger(ghf),ghf.get("expressApp").set("view engine","pug"),ghf.get("options").verbose&&ghf.log.debug("> Setup pug template engine"),ghf}function initialize(){return errors(ghf),ghf}function addMiddleware(e){var r=ghf.get("middlewares")||[];return r.push(e),ghf.set("middlewares",r),ghf}function start(){setupMongo(ghf).then(startGrasshopper.bind(null,ghf)).then(useDefaultMiddlewares.bind(null,ghf)).then(useMiddlewares).then((function(){ghf.server=startExpress(ghf)})).catch((function(e){ghf.log.error(e),console.log(e.stack),console.trace()}))}function useMiddlewares(){var e=ghf.get("expressApp"),r=ghf.get("middlewares");ghf.get("options.verbose")&&console.log("middlewares",r),_.forEach(r,(function(r){_.isFunction(r)?e.use(r):e.use(r.route||"/",loadRouter(r))}))}function loadRouter(e){var r=ghf.get("express").Router();return e.params&&_.each(e.params,(function(e){r.param(e)})),e.middlewares&&_.forEach(e.middlewares,(function(e){r.use(e)})),_.forEach(HTTP_METHODS,(function(t){e[t]&&loadVerb(t,e[t],r)})),r}function loadVerb(e,r,t){r.middlewares&&_.forEach(r.middlewares,(function(e){t.use(r.route,e)})),t[e](r.route,loadVerbCallback(r))}function loadVerbCallback(e){return e.view&&e.viewData?function(r,t,s){e.viewData(ghf,r).then((function(r){ghf.get("options.verbose")&&console.log("viewData: ",r),t.render(e.view,r)})).catch((function(e){console.log("router error"),console.log(e),s()}))}:e.view?function(r,t,s){t.render(e.view)}:e.callback.bind(null,ghf)}_.extend(storage,ghf),module.exports=ghf;
//# sourceMappingURL=/sm/c4ee750b4e18c8a532d7157bf4deef336cd231beb37923da1f3573ad042cf3d0.map