UNPKG

vue-express-mongo-boilerplate

Version:

Express NodeJS application server boilerplate with Mongo and VueJS

2 lines 115 kB
!function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=149)}([function(e,t,n){"use strict";(function(t){var r=n(6),o=n(10),i=n(2),s=n(8),a=n(14);global.rootPath=r.normalize(r.join(t,"..","..")),console.log("process.argv: "+process.argv);var u=void 0;u=process.argv.length>0?process.argv[1]:process.cwd(),global.rootPath=r.normalize(r.join(r.dirname(u),"..")),console.log("Application root path: "+global.rootPath),e.exports={isDevMode:function(){return!process.env.NODE_ENV||"development"===process.env.NODE_ENV},isProductionMode:function(){return"production"===process.env.NODE_ENV},isTestMode:function(){return"test"===process.env.NODE_ENV}};var c={},l=r.join(global.rootPath,"config.js");try{if(!o.existsSync(l)){console.warn(s.yellow.bold("External production configuration not found!. Create a default `config.js` file..."));var d=void 0;d=n(95),i.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var f=i.template(d),p={hashSecret:a(),sessionSecret:a()};o.writeFileSync(l,f(p)),console.warn(s.green.bold("The `config.js` file created! Please update the settings in the file!"))}c=n(99)}catch(e){console.warn(s.red.bold("\r\n==============================================")),console.warn(s.red.bold(" Unable to load external `config.js` file!")),console.warn(s.red.bold(" ",e)),console.warn(s.red.bold("==============================================\r\n")),process.exit(1)}var m=n(67),v={};e.exports.isTestMode()?(console.log("Load test config..."),v=n(69),c={}):e.exports.isProductionMode()&&(console.log("Load production config..."),v=n(68)),e.exports=i.defaultsDeep(c,v,m,e.exports)}).call(t,"server\\config")},function(e,t,n){"use strict";var r=n(142),o=n(6),i=n(10),s=n(44),a=n(0),u=[];if(u.push(new r.transports.Console({level:a.logging.console.level,colorize:!0,prettyPrint:!0,handleExceptions:"production"===process.env.NODE_ENV})),a.logging.logentries.enabled&&a.logging.logentries.token){console.log("Logentries log transport enabled!");n(121);u.push(new r.transports.Logentries({level:"debug",token:a.logging.logentries.token}))}if(a.logging.papertrail.enabled){console.log("Papertrail log transport enabled!"),n(148).Papertrail;var c=new r.transports.Papertrail(a.logging.papertrail);u.push(c)}if(a.logging.file.enabled){var l=a.logging.file.path;i.existsSync(l)||s(l),u.push(new(n(143))({filename:o.join(l,"server.log"),level:a.logging.file.level||"info",timestamp:!0,json:a.logging.file.json||!1,handleExceptions:!0})),a.logging.file.exceptionFile&&u.push(new r.transports.File({filename:o.join(l,"exceptions.log"),level:"error",timestamp:!0,json:a.logging.file.json||!1,prettyPrint:!0,handleExceptions:!0,humanReadableUnhandledException:!0}))}var d=new r.Logger({level:"debug",transports:u,exitOnError:!1});if(a.logging.loggly.enabled&&a.logging.loggly.token){console.log("Loggly log transport enabled!");n(145);d.add(r.transports.Loggly,{inputToken:a.logging.loggly.token,subdomain:a.logging.loggly.subdomain,tags:["vem-server"],json:!0})}if(a.logging.logsene.enabled&&a.logging.logsene.token){console.log("Logsene log transport enabled!");var f=n(146);d.add(f,{type:"vem-server",token:a.logging.logsene.token})}if(a.logging.logzio.enabled&&a.logging.logzio.token){console.log("Logz.io log transport enabled!");var p=n(147);d.add(p,{token:a.logging.logzio.token})}if(a.logging.graylog.enabled){console.log("Graylog log transport enabled! Servers: "+JSON.stringify(a.logging.graylog.servers));var m=n(144);d.add(m,{name:"Graylog",level:"debug",graylog:{servers:a.logging.graylog.servers,facility:"vem"}})}e.exports=d},function(e,t){e.exports=require("lodash")},function(e,t,n){"use strict";var r=(n(0),n(1),n(4)),o=(n(10),n(6),n(2),n(23)),i=n(102),s=(n(15),n(11)),a=s.Schema,u=n(20)("users"),c=n(19),l={timestamps:!0,toObject:{virtuals:!0},toJSON:{virtuals:!0}},d=function(e){return"local"!==this.provider&&!this.updated||e.length},f=function(e){return"local"!==this.provider||e&&e.length>=6},p=new a({fullName:{type:String,trim:!0,default:"",validate:[d,"Please fill in your full name"]},email:{type:String,trim:!0,unique:!0,index:!0,lowercase:!0,default:"",validate:[d,"Please fill in your email"],match:[/.+\@.+\..+/,"Please fill a valid email address"]},username:{type:String,unique:!0,index:!0,lowercase:!0,required:"Please fill in a username",trim:!0,match:[/^[\w][\w\-\._\@]*[\w]$/,"Please fill a valid username"]},password:{type:String,default:"",validate:[f,"Password should be longer"]},passwordLess:{type:Boolean,default:!1},passwordLessToken:{type:String},provider:{type:String,default:"local"},profile:{name:{type:String},gender:{type:String},picture:{type:String},location:{type:String}},socialLinks:{facebook:{type:String,unique:!0,sparse:!0},twitter:{type:String,unique:!0,sparse:!0},google:{type:String,unique:!0,sparse:!0},github:{type:String,unique:!0,sparse:!0}},roles:{type:[{type:String,enum:[r.ROLE_ADMIN,r.ROLE_USER,r.ROLE_GUEST]}],default:[r.ROLE_USER]},resetPasswordToken:String,resetPasswordExpires:Date,verified:{type:Boolean,default:!1},verifyToken:{type:String},apiKey:{type:String,unique:!0,index:!0,sparse:!0},lastLogin:{type:Date},locale:{type:String},status:{type:Number,default:1},metadata:{}},l);p.virtual("code").get(function(){return this.encodeID()}),p.plugin(c.plugin,{model:"User",startAt:1}),p.pre("save",function(e){var t=this;return t.isModified("password")?void i.genSalt(10,function(n,r){i.hash(t.password,r,null,function(n,r){t.password=r,e()})}):e()}),p.methods.comparePassword=function(e,t){i.compare(e,this.password,function(e,n){t(e,n)})},p.virtual("avatar").get(function(){if(this.profile&&this.profile.picture)return this.profile.picture;if(!this.email)return"https://gravatar.com/avatar/?s=64&d=wavatar";var e=o.createHash("md5").update(this.email).digest("hex");return"https://gravatar.com/avatar/"+e+"?s=64&d=wavatar"}),p.methods.encodeID=function(){return u.encodeHex(this._id)},p.methods.decodeID=function(e){return u.decodeHex(e)};var m=s.model("User",p);e.exports=m},function(e,t,n){"use strict";var r={};r.append=function(e,t){e.forEach(function(e){var n=e.toUpperCase();t&&(n=t+"_"+n),r[n]=e})},r.append(["admin","user","guest"],"ROLE"),r.append(["admin","owner","loggedIn","public"],"PERM"),r.append(["VALIDATION_ERROR","INVALID_CODE","MODEL_NOT_FOUND","ONLY_OWNER_CAN_EDIT_AND_DELETE"],"ERR"),e.exports=r},function(e,t){e.exports=require("passport")},function(e,t){e.exports=require("path")},function(e,t,n){"use strict";(function(t){function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function i(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),a=n(1),u=(n(0),n(108).EventEmitter),c=n(6),l=(n(10),n(137),n(2)),d=n(8),f=n(18),p=(n(4),n(80)),m=n(9),v=n(12),h=n(110),g=(n(104),n(112).GraphQLScalarType,n(31).Kind),y=n(81),E=function(e){function u(){r(this,u);var e=o(this,(u.__proto__||Object.getPrototypeOf(u)).call(this));return e.setMaxListeners(0),e.app=null,e.db=null,e.services={},e}return i(u,e),s(u,[{key:"loadServices",value:function(e,r){var o=this;o.app=e,o.db=r;var i=function(t){var n=new y(t,e,r);o.services[n.name]=n};!function(){a.info(""),a.info(d.bold("Search built-in services..."));var e=n(98);e&&e.keys().map(function(n){a.info(" Load",c.relative(c.join(t,"..","services"),n),"service..."),i(e(n))})}(),!function(){a.info(""),a.info(d.bold("Search applogic services..."));var e=n(96);e&&e.keys().map(function(n){a.info(" Load",c.relative(c.join(t,"..","applogic","modules"),n),"service..."),i(e(n))})}(),l.forIn(o.services,function(e){l.isFunction(e.$schema.init)&&e.$schema.init.call(e,p.CreateToServiceInit(e))})}},{key:"registerRoutes",value:function(e){var t=this;l.forIn(this.services,function(n,r){n.$settings.rest!==!1&&n.actions&&!function(){var r=f.Router();r.use(m.tryAuthenticateWithApiKey);var o=n.$settings.idParamName||"id",i=[];l.forIn(n.actions,function(s,u){var c=s.settings;if(c.handler=s,!l.isFunction(c.handler))throw new Error("Missing handler function in '"+u+"' action in '"+n.name+"' service!");var d=function(r,o){var i=p.CreateFromREST(n,c,e,r,o);a.debug("Request via REST '"+n.namespace+"/"+c.name+"' (ID: "+i.id+")",i.params),console.time("REST request"),t.emit("request",i);n.getCacheKey(c.name,i.params);Promise.resolve().then(function(){return i.resolveModel()}).then(function(){return i.checkPermission()}).then(function(){return c.handler(i)}).then(function(e){o.append("Request-Id",i.id),v.json(o,e)}).catch(function(e){a.error(e),v.json(o,null,e)}).then(function(){t.emit("response",i),console.timeEnd("REST request")})};switch(r.get("/"+u,d),r.post("/"+u,d),r.get("/:"+o+"/"+u,d),r.post("/:"+o+"/"+u,d),u){case"find":r.get("/",d);break;case"get":i.push({method:"get",path:"/:"+o,handler:d});break;case"create":i.push({method:"post",path:"/:"+o,handler:d}),r.post("/",d);break;case"update":i.push({method:"put",path:"/:"+o,handler:d}),i.push({method:"patch",path:"/:"+o,handler:d}),r.put("/",d),r.patch("/",d);break;case"remove":i.push({method:"delete",path:"/:"+o,handler:d}),r.delete("/",d)}}),i.forEach(function(e){r[e.method](e.path,e.handler)}),e.use("/api/"+n.namespace,r),n.version&&e.use("/api/v"+n.version+"/"+n.namespace,r)}()})}},{key:"registerSockets",value:function(e,t){var n=this;l.forIn(this.services,function(r,o){r.ws!==!1&&!function(){r.socket=r.socket||{};var o=void 0;o=r.socket.nsp&&"/"!==r.socket.nsp?t.addNameSpace(r.socket.nsp,r.role):e,r.io=o,o.on("connection",function(e){l.isFunction(r.socket.afterConnection)&&r.socket.afterConnection.call(r,e,o),l.forIn(r.actions,function(t,o){var i=t.settings;if(i.handler=t,!l.isFunction(i.handler))throw new Error("Missing handler function in '"+o+"' action in '"+r.name+"' service!");var s="/"+r.namespace+"/"+i.name,u=function(t,o){var s=p.CreateFromSocket(r,i,n.app,e,t);a.debug("Request via WebSocket '"+r.namespace+"/"+i.name+"'",s.params),console.time("SOCKET request"),n.emit("request",s);r.getCacheKey(i.name,s.params);Promise.resolve().then(function(){return s.resolveModel()}).then(function(){return s.checkPermission()}).then(function(){return i.handler(s)}).then(function(e){l.isFunction(o)&&o(v.json(null,e))}).catch(function(e){a.error(e),l.isFunction(o)&&o(v.json(null,null,e))}).then(function(){n.emit("response",s),console.timeEnd("SOCKET request")})};e.on(s,u),r.version&&e.on("/v"+r.version+s,u)})})}()})}},{key:"registerGraphQLSchema",value:function(){var e=this,t={queries:[],types:[],mutations:[],resolvers:[]};if(l.forIn(this.services,function(n,r){if(n.$settings.graphql!==!1&&l.isObject(n.$schema.graphql)){var o=n.$schema.graphql;o.resolvers=o.resolvers||{};var i=function(t){l.forIn(t,function(r,o){if(l.isString(r)&&n.actions[r]){var i=function(t,i,s){var u=n.actions[r],c=u.settings;if(c.handler=u,!l.isFunction(c.handler))throw new Error("Missing handler function in '"+o+"' action in '"+n.name+"' service!");var d=p.CreateFromGraphQL(n,c,t,i,s);a.debug("Request via GraphQL",d.params,s.query),console.time("GRAPHQL request"),e.emit("request",d);n.getCacheKey(c.name,d.params);return Promise.resolve().then(function(){return d.resolveModel()}).then(function(){return d.checkPermission()}).then(function(){return c.handler(d)}).catch(function(e){throw a.error(e),e}).then(function(t){return e.emit("response",d),console.timeEnd("GRAPHQL request"),t})};t[o]=i}})};o.resolvers.Query&&i(o.resolvers.Query),o.resolvers.Mutation&&i(o.resolvers.Mutation),t.queries.push(o.query),t.types.push(o.types),t.mutations.push(o.mutation),t.resolvers.push(o.resolvers)}}),0==t.queries.length)return null;var n="\n\n\t\t\tscalar Timestamp\n\n\t\t\ttype Query {\n\t\t\t\t"+t.queries.join("\n")+"\n\t\t\t}\n\n\t\t\t"+t.types.join("\n")+"\n\n\t\t\ttype Mutation {\n\t\t\t\t"+t.mutations.join("\n")+"\n\t\t\t}\n\n\t\t\tschema {\n\t\t\t\tquery: Query\n\t\t\t\tmutation: Mutation\n\t\t\t}\n\t\t",r=function(e){return t.resolvers.forEach(function(t){e=l.merge(e,t)}),e};return{schema:[n],resolvers:r({Timestamp:{__parseValue:function(e){return new Date(e)},__serialize:function(e){return e.getTime()},__parseLiteral:function(e){return e.kind===g.INT?parseInt(e.value,10):null}}})}}},{key:"get",value:function(e){return this.services[e]}},{key:"printServicesInfo",value:function(){h(this.app)}}]),u}(u);e.exports=new E}).call(t,"server\\core")},function(e,t){e.exports=require("chalk")},function(e,t,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=n(1),i=n(0),s=n(5),a=n(3);e.exports.isAuthenticated=function(e,t,n){return e.isAuthenticated()?n():t.sendStatus(401)},e.exports.tryAuthenticateWithApiKey=function(e,t,n){e.isAuthenticated()?n():e.headers.apikey||e.query.apikey||e.body.apikey?s.authenticate("localapikey",function(t,r,i){r?e.login(r,function(e){n()}):(o.warn("Apikey error:",i),n())})(e,t,n):n()},e.exports.isAuthenticatedOrApiKey=function(e,t,n){return e.isAuthenticated()?n():e.headers.apikey||e.query.apikey||e.body.apikey?void s.authenticate("localapikey",function(r,o,i){return r?t.sendStatus(500):o?void e.login(o,function(e){return e?t.sendStatus(500):n()}):t.status(401).send(i.message||"")})(e,t,n):t.sendStatus(401)},e.exports.hasRole=function(t){if(!t)throw new Error("Required role needs to be set");return function(n,r,o){return e.exports.isAuthenticated(n,r,function(){n.user&&n.user.roles&&n.user.roles.indexOf(t)!==-1?o():r.sendStatus(403)})}},e.exports.hasAdminRole=function(){return e.exports.hasRole("admin")},e.exports.linkToSocialAccount=function(e){var t=e.req,n=(e.accessToken,e.refreshToken,e.profile),o=e.done,s=e.provider,u=(e.username,e.email),c=e.userData;if(t.user){var l={};l["socialLinks."+s]=n.id,a.findOne(l,function(e,r){return r?r._id!=t.user._id?(t.flash("error",{msg:t.t("SocialIDLinkedToOtherAccount")}),o(e)):o(e,r):void a.findById(t.user.id,function(e,r){r.socialLinks=r.socialLinks||{},r.socialLinks[s]=n.id,r.profile=r.profile||{},r.profile.name=r.profile.name||c.name,r.profile.gender=r.profile.gender||c.gender,r.profile.picture=r.profile.picture||c.picture,r.profile.location=r.profile.location||c.location,r.save(function(e){t.flash("info",{msg:t.t("AccountHasBeenLinked")}),o(e,r)})})})}else{var d={};d["socialLinks."+s]=n.id,a.findOne(d,function(e,l){return l?1!==l.status?(t.flash("error",{msg:t.t("UserDisabledOrDeleted")}),o()):o(e,l):u?void a.findOne({email:u},function(e,l){if(l){var d=function(){if(1!==l.status)return t.flash("error",{msg:t.t("UserDisabledOrDeleted")}),{v:o()};var e=l;return e.socialLinks=e.socialLinks||{},e.socialLinks[s]=n.id,e.profile=e.profile||{},e.profile.name=e.profile.name||c.name,e.profile.gender=e.profile.gender||c.gender,e.profile.picture=e.profile.picture||c.picture,e.profile.location=e.profile.location||c.location,e.save(function(n){t.flash("info",{msg:t.t("AccountHasBeenLinked")}),o(n,e)}),{v:void 0}}();if("object"===("undefined"==typeof d?"undefined":r(d)))return d.v}if(i.features.disableSignUp===!0)return t.flash("error",{msg:t.t("SignUpDisabledPleaseLogin")}),o();var f=new a;f.fullName=c.name,f.email=u,f.username=u,f.provider=s,f.verified=!0,f.passwordLess=!0,f.socialLinks={},f.socialLinks[s]=n.id,f.profile=c,f.save(function(e){o(e,f)})}):(t.flash("error",{msg:t.t("SocialMissingEmailAddress")}),o())})}}},function(e,t){e.exports=require("fs")},function(e,t){e.exports=require("mongoose")},function(e,t,n){"use strict";e.exports={BAD_REQUEST:{status:400,type:"BAD_REQUEST",message:"Invalid request"},UNAUTHORIZED:{status:401,type:"UNAUTHORIZED",message:"Unauthorized. Please login first!"},REQUEST_FAILED:{status:402,type:"REQUEST_FAILED",message:"Request failed!"},FORBIDDEN:{status:403,type:"FORBIDDEN",message:"You have not enough permission for this resource!"},NOT_FOUND:{status:404,type:"NOT_FOUND",message:"Not found!"},TOO_MANY_REQUEST:{status:429,type:"TOO_MANY_REQUEST",message:"Too many request!"},SERVER_ERROR:{status:500,type:"SERVER_ERROR",message:"Server error"},NOT_IMPLEMENTED:{status:501,type:"NOT_IMPLEMENTED",message:"This resource is not implemented!"},json:function(e,t,n,r){var o={};return n?(o.error=n,o.status=n.status||500,r&&(o.error.message=r.message||r),o.data=t,e?e.status(o.status).json(o):o):(o.status=200,o.data=t,e?e.json(o):o)}}},function(e,t,n){"use strict";var r=n(1),o=n(0),i=(n(6),n(10),n(43)),s=n(2),a=n(39),u=n(5),c=n(135),l=n(40),d=n(38)(l),f=void 0,p={IO:null,mongoStore:null,namespaces:{},userSockets:[],init:function(e,t){p.mongoStore=new d({mongooseConnection:t.connection,collection:o.sessions.collection,autoReconnect:!0});var s=i.createServer(e),a=c(s);e.io=p,p.IO=a,p.initNameSpace("/",a,p.mongoStore),a.on("connection",function(e){e.on("welcome",function(t){r.info("Incoming welcome message from "+e.request.user.username+":",t)})});var u=n(7);return u.registerSockets(a,p),s},addNameSpace:function(e,t){var n=p.namespaces[e];return null==n&&(n=p.IO.of(e),p.initNameSpace(e,n,p.mongoStore,t)),n},initNameSpace:function(e,t,i,s){t.use(function(t,n){a(o.sessionSecret)(t.request,{},function(a){var c=t.request.signedCookies?t.request.signedCookies[o.sessions.name]:void 0;return c?void i.get(c,function(o,a){return o?n(o,!1):a?(t.request.session=a,a.socket=t.id,i.set(c,a),void u.initialize()(t.request,{},function(){u.session()(t.request,{},function(){if(t.request.user){var o=t.request.user;s?o.roles&&o.roles.indexOf(s)!==-1?n(null,!0):(r.warn("Websocket user has no access to this namespace '"+e+"'!",o.username),n(new Error("You have NO access to this namespace '"+e+"'!"),!1)):n(null,!0)}else r.warn("Websocket user is not authenticated!"),n(new Error("User is not authenticated! Please login first!"),!1)})})):n(new Error("session was not found for "+c),!1)}):(r.warn("sessionId was not found in socket.request"),n(new Error("sessionId was not found in socket.request"),!1))})}),t.on("connection",function(e){f||(f=n(7)),f.emit("socket:connect",e),p.addOnlineUser(e),r.debug("WS client connected to namespace "+(t.name||"root")+"! User: "+e.request.user.username),e.on("disconnect",function(){f.emit("socket:connect",e),p.removeSocket(e),r.debug("WS client disconnected from namespace "+(t.name||"root")+"!")})}),p.namespaces[e]=t},nsEmit:function(e,t,n){if(p.namespaces[e])return p.namespaces[e].emit(t,n),!0},addOnlineUser:function(e){p.removeOnlineUser(e),p.userSockets.push(e)},removeSocket:function(e){s.remove(p.userSockets,function(t){return t==e})},removeOnlineUser:function(e){s.remove(p.userSockets,function(t){return t.request.user._id==e.request.user._id})}};e.exports=p},function(e,t,n){"use strict";var r=n(138),o=new r(256,r.BASE62);e.exports=function(){return o.generate()}},function(e,t,n){"use strict";var r=n(1),o=n(0),i=n(8),s=n(11),a=n(19);e.exports=function(){var e=void 0;return r.info(),s.Promise=global.Promise,1!==s.connection.readyState?(r.info("Connecting to Mongo "+o.db.uri+"..."),e=s.connect(o.db.uri,o.db.options,function(e){return e?(r.error("Could not connect to MongoDB!"),r.error(e)):void s.set("debug",o.isDevMode())}),s.connection.on("error",function(e){return"ETIMEDOUT"===e.message.code?(r.warn("Mongo connection timeout!",e),void setTimeout(function(){s.connect(o.db.uri,o.db.options)},1e3)):(r.error("Could not connect to MongoDB!"),r.error(e))}),a.initialize(e),s.connection.once("open",function(){r.info(i.yellow.bold("Mongo DB connected.")),r.info(),o.isTestMode()?(r.warn("Drop test database..."),n(28)()):o.isProduction||n(28)()})):(r.info("Mongo already connected."),e=s),e}},function(e,t){e.exports=require("moment")},function(e,t,n){"use strict";var r=n(1),o=n(0),i=n(8),s=n(120),a=void 0;o.redis.enabled&&(a=new s(o.redis.uri),a.on("connect",function(e){r.info(i.green.bold("Redis client connected!"))}),a.on("error",function(e){r.error(e)}),o.isDevMode()&&a.monitor(function(e,t){r.debug("Redis entering monitoring mode..."),t.on("monitor",function(e,t,n,o){r.debug("REDIS: ",t)})})),e.exports=a},function(e,t){e.exports=require("express")},function(e,t){e.exports=require("mongoose-auto-increment")},function(e,t,n){"use strict";var r=n(114),o=n(0);e.exports=function(e,t){return new r(e+o.hashSecret,t||10)}},function(e,t,n){"use strict";function r(e,t,n,i,s,a){a&&a.stack?Object.defineProperty(this,"stack",{value:a.stack,writable:!0,configurable:!0}):Error.captureStackTrace?Error.captureStackTrace(this,r):Object.defineProperty(this,"stack",{value:Error().stack,writable:!0,configurable:!0});var u=n;if(!u&&t&&t.length>0){var c=t[0];u=c&&c.loc&&c.loc.source}var l=i;!l&&t&&(l=t.filter(function(e){return Boolean(e.loc)}).map(function(e){return e.loc.start})),l&&0===l.length&&(l=void 0);var d=void 0,f=u;f&&l&&(d=l.map(function(e){return(0,o.getLocation)(f,e)})),Object.defineProperties(this,{message:{value:e,enumerable:!0,writable:!0},locations:{value:d||void 0,enumerable:!0},path:{value:s||void 0,enumerable:!0},nodes:{value:t||void 0},source:{value:u||void 0},positions:{value:l||void 0},originalError:{value:a}})}Object.defineProperty(t,"__esModule",{value:!0}),t.GraphQLError=r;var o=n(31);r.prototype=Object.create(Error.prototype,{constructor:{value:r},name:{value:"GraphQLError"}})},function(e,t){e.exports={name:"vue-express-mongo-boilerplate",version:"0.9.0",title:"Vue-Express-Mongo BoilerPlate",description:"Express NodeJS application server boilerplate with Mongo and VueJS",main:"server/index.js",scripts:{build:"webpack --progress --colors --config build/webpack.prod.config.js","build:server":"webpack --progress --colors --config build/webpack.server.config.js",dev:"cross-env NODE_ENV=development nodemon --debug",start:"cross-env NODE_ENV=production node server/index.js","start:bundle":"cross-env NODE_ENV=production node server/bundle.js","start:cluster":"cross-env NODE_ENV=production node cluster.js","test:unit":"cross-env NODE_ENV=test mocha --require babel-core/register --reporter spec tests/unit","test:e2e:nightmare":"cross-env NODE_ENV=test mocha --require babel-core/register --timeout 30000 --reporter spec tests/e2e","test:e2e":"node tests/e2e/runner.js",test:"npm run test:unit && npm run test:e2e",ci:'cross-env NODE_ENV=test nodemon --exec "mocha --require babel-core/register --reporter dot --watch tests/unit" tests/unit',lint:"eslint --ext=.js,.vue client server","lint:fix":"eslint --fix --ext=.js,.vue client server","snyk-protect":"snyk protect",typings:"typings install"},repository:{type:"git",url:"git@github.com:icebob/vue-express-mongo-boilerplate.git"},keywords:["boilerplate","express","mongo","vue","mongodb","hackaton","bootstrap","starter"],config:{dbName:"boilerplate"},author:"Icebob",license:"MIT",dependencies:{agenda:"0.9.0",async:"2.1.4",axios:"0.15.3","bcrypt-nodejs":"0.0.3","body-parser":"1.15.2",chalk:"1.1.3","cli-table2":"0.2.0",clui:"0.3.1",compression:"1.6.2","connect-mongo":"1.3.2","cookie-parser":"1.4.3","cross-env":"2.0.0",csurf:"1.9.0",express:"4.14.0","express-flash":"0.0.2","express-list-endpoints":"2.0.3","express-session":"1.14.2","express-status-monitor":"0.1.7","express-validator":"2.21.0",fakerator:"0.3.0",glob:"7.1.1",graphql:"0.7.2","graphql-server-express":"0.4.3","graphql-subscriptions":"0.2.1","graphql-tools":"0.8.1",hashids:"1.1.1",helmet:"2.1.2","helmet-crossdomain":"0.1.0",i18next:"3.4.1","i18next-express-middleware":"1.0.2","i18next-node-fs-backend":"0.1.3",ioredis:"2.4.3",le_node:"1.7.0",lodash:"4.17.3","method-override":"2.3.7",mkdirp:"0.5.1",moment:"2.17.1",mongoose:"4.7.5","mongoose-auto-increment":"5.0.1",morgan:"1.7.0",netjet:"1.1.3","node-sass":"3.13.0",nodemailer:"2.7.0","nodemailer-html-to-text":"2.1.0","nodemailer-mailgun-transport":"1.2.4","nodemailer-sendgrid-transport":"0.2.0","object-hash":"1.1.5",passport:"0.3.2","passport-facebook":"2.1.1","passport-github":"1.1.0","passport-google-oauth":"1.0.0","passport-local":"1.0.0","passport-localapikey-update":"0.5.0","passport-twitter":"1.0.4","pretty-bytes":"4.0.2",pug:"2.0.0-beta6","require-webpack-compat":"3.0.0","serve-favicon":"2.3.2",slug:"0.9.1",snyk:"1.22.1","socket.io":"1.7.2","socket.io-client":"1.7.2","uuid-token-generator":"0.5.0",winston:"2.3.0","winston-daily-rotate-file":"1.4.0","winston-graylog2":"0.5.2","winston-logentries":"2.0.0","winston-loggly-bulk":"1.3.4","winston-logsene":"1.2.1","winston-logzio":"1.0.3","winston-papertrail":"1.0.4"},devDependencies:{"apollo-client":"0.5.6",autoprefixer:"6.6.0",babel:"6.5.2","babel-core":"6.21.0","babel-loader":"6.2.10","babel-plugin-transform-runtime":"6.15.0","babel-preset-es2015":"6.18.0","babel-preset-stage-0":"6.16.0","babel-runtime":"6.20.0",chai:"3.5.0",chromedriver:"2.26.1","cross-spawn":"4.0.0","css-loader":"0.26.1",del:"2.2.2","es6-promise":"4.0.5",eslint:"3.12.2","eslint-friendly-formatter":"2.0.6","eslint-loader":"1.6.1","eslint-plugin-html":"1.7.0","extract-text-webpack-plugin":"2.0.0-beta.4","file-loader":"0.9.0","graphql-tag":"0.1.17","i18next-browser-languagedetector":"1.0.1","i18next-xhr-backend":"1.2.1",jquery:"3.1.1","json-loader":"0.5.4",marked:"0.3.6",mocha:"2.5.3",nightwatch:"0.9.11","postcss-loader":"0.11.0",precss:"1.4.0","raw-loader":"0.5.1",request:"2.79.0","sass-loader":"3.2.1","selenium-server":"2.53.1",sinon:"1.17.6","sinon-chai":"2.8.0","stats-webpack-plugin":"0.4.2","style-loader":"0.13.1","tiny-lr":"0.2.1",toastr:"2.1.2",typings:"2.1.0","url-loader":"0.5.7",uuid:"2.0.3",vue:"2.1.8","vue-form-generator":"2.0.0-beta1","vue-html-loader":"1.2.3","vue-loader":"10.0.2","vue-router":"2.1.1","vue-template-compiler":"2.1.8","vue-websocket":"0.2.1",vuex:"2.1.1",webpack:"v2.2.0-rc.3","webpack-dev-middleware":"1.9.0","webpack-dev-server":"2.2.0-rc.0","webpack-hot-middleware":"2.14.0","webpack-merge":"2.0.0"},snyk:!0}},function(e,t){e.exports=require("crypto")},function(e,t){e.exports=require("webpack")},function(e,t,n){"use strict";var r=n(1),o=n(0),i=n(16),s=n(8),a=n(100),u=n(3),c=new a({db:{address:o.db.uri,collection:"agendaJobs"},processEvery:o.agendaTimer||"one minute"});c.on("fail",function(e,t){return r.error("Job failed with error: "+e.message)}),c.define("removeUnverifiedAccounts",function(e,t){r.debug("Running 'removeUnverifiedAccounts' process...");try{u.remove({createdAt:{$lte:i().subtract(1,"day").toDate()},verified:!1},function(e,n){n>0&&r.warn(s.bold.red(n+" unverified and expired account removed!")),t()})}catch(e){return r.error("Job running exception!"),r.error(e),t(e)}}),c.on("ready",function(){o.isTestMode()||(c.every("8 hours","removeUnverifiedAccounts"),c.start(),r.info(s.yellow("Agenda started!")))}),e.exports=c},function(e,t,n){"use strict";var r=(n(0),n(1),n(15),n(11)),o=r.Schema,i=n(20)("devices"),s=n(19),a={timestamps:!0,toObject:{virtuals:!0},toJSON:{virtuals:!0}},u=new o({address:{type:String,trim:!0},type:{type:String,trim:!0},name:{type:String,trim:!0},description:{type:String,trim:!0,default:""},status:{type:Number,default:1},lastCommunication:{type:Date,default:Date.now},metadata:{}},a);u.virtual("code").get(function(){return this.encodeID()}),u.plugin(s.plugin,{model:"Device",startAt:1}),u.methods.encodeID=function(){return i.encodeHex(this._id)},u.methods.decodeID=function(e){return i.decodeHex(e)};var c=r.model("Device",u);e.exports=c},function(e,t,n){"use strict";var r=(n(0),n(1),n(2),n(15),n(11)),o=r.Schema,i=n(20)("posts"),s=n(19),a={timestamps:!0,toObject:{virtuals:!0},toJSON:{virtuals:!0}},u=new o({title:{type:String,trim:!0},content:{type:String,trim:!0},author:{type:Number,required:"Please fill in an author ID",ref:"User"},views:{type:Number,default:0},voters:[{type:Number,ref:"User"}],votes:{type:Number,default:0},editedAt:{type:Date},metadata:{}},a);u.virtual("code").get(function(){return this.encodeID()}),u.plugin(s.plugin,{model:"Post",startAt:1}),u.methods.encodeID=function(){return i.encodeHex(this._id)},u.methods.decodeID=function(e){return i.decodeHex(e)};var c=r.model("Post",u);e.exports=c},function(e,t,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=n(1),i=n(0),s=n(4),a=n(2),u=n(14),c=n(41)(),l=n(3);e.exports=function(){return l.find({}).exec().then(function(e){if(0===e.length){var t=function(){o.warn("Load default Users to DB...");var e=[],t=new l({fullName:"Administrator",email:"admin@boilerplate-app.com",username:"admin",password:"admin1234",provider:"local",roles:[s.ROLE_ADMIN,s.ROLE_USER],verified:!0});e.push(t.save());var n=new l({fullName:"Test User",email:"test@boilerplate-app.com",username:"test",password:"test1234",provider:"local",roles:[s.ROLE_USER],verified:!0,apiKey:u()});return e.push(n.save()),{v:Promise.all(e).then(function(){if(!i.isProductionMode())return Promise.all(a.times(10,function(){var t=c.entity.user(),n=new l({fullName:t.firstName+" "+t.lastName,email:t.email,username:t.userName,password:t.password,provider:"local",roles:[s.ROLE_USER],verified:!0});e.push(n.save())}))}).then(function(){o.warn("Default users created!")})}}();if("object"===("undefined"==typeof t?"undefined":r(t)))return t.v}}).catch(function(e){o.error(e)}).then(function(){return n(57)()}).then(function(){o.debug("Seeding done!")})}},function(e,t,n){"use strict";var r=n(0),o=n(1),i=n(45),s=n(46).htmlToText;e.exports={send:function(e,t,a,u){o.info("Sending email to "+e+" with subject "+t+"..."),o.debug("Deprecated! libs/mailer is deprecated. Use Service.get('mailer') instead!");var c={from:r.mailer.from,to:e,subject:t,html:a},l=void 0;if("smtp"==r.mailer.transport)l=i.createTransport(r.mailer.smtp);else if("mailgun"==r.mailer.transport){var d=n(47);l=i.createTransport(d({auth:{api_key:r.mailer.mailgun.apiKey,domain:r.mailer.mailgun.domain}}))}else if("sendgrid"==r.mailer.transport){var f=n(48);l=i.createTransport(f({auth:{api_key:r.mailer.sendgrid.apiKey}}))}l?(l.use("compile",s()),l.sendMail(c,function(e,t){e?o.warn("Unable to send email: ",e):o.info("Email message sent.",t.response),u&&u(e,t)})):o.warn("Unable to send email! Invalid mailer transport: "+r.mailer.transport)}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n(21);Object.defineProperty(t,"GraphQLError",{enumerable:!0,get:function(){return r.GraphQLError}});var o=n(91);Object.defineProperty(t,"syntaxError",{enumerable:!0,get:function(){return o.syntaxError}});var i=n(90);Object.defineProperty(t,"locatedError",{enumerable:!0,get:function(){return i.locatedError}});var s=n(89);Object.defineProperty(t,"formatError",{enumerable:!0,get:function(){return s.formatError}})},function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}Object.defineProperty(t,"__esModule",{value:!0}),t.BREAK=t.visitWithTypeInfo=t.visitInParallel=t.visit=t.Source=t.print=t.parseType=t.parseValue=t.parse=t.TokenKind=t.createLexer=t.Kind=t.getLocation=void 0;var o=n(34);Object.defineProperty(t,"getLocation",{enumerable:!0,get:function(){return o.getLocation; }});var i=n(33);Object.defineProperty(t,"createLexer",{enumerable:!0,get:function(){return i.createLexer}}),Object.defineProperty(t,"TokenKind",{enumerable:!0,get:function(){return i.TokenKind}});var s=n(93);Object.defineProperty(t,"parse",{enumerable:!0,get:function(){return s.parse}}),Object.defineProperty(t,"parseValue",{enumerable:!0,get:function(){return s.parseValue}}),Object.defineProperty(t,"parseType",{enumerable:!0,get:function(){return s.parseType}});var a=n(94);Object.defineProperty(t,"print",{enumerable:!0,get:function(){return a.print}});var u=n(35);Object.defineProperty(t,"Source",{enumerable:!0,get:function(){return u.Source}});var c=n(36);Object.defineProperty(t,"visit",{enumerable:!0,get:function(){return c.visit}}),Object.defineProperty(t,"visitInParallel",{enumerable:!0,get:function(){return c.visitInParallel}}),Object.defineProperty(t,"visitWithTypeInfo",{enumerable:!0,get:function(){return c.visitWithTypeInfo}}),Object.defineProperty(t,"BREAK",{enumerable:!0,get:function(){return c.BREAK}});var l=n(32),d=r(l);t.Kind=d},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.NAME="Name",t.DOCUMENT="Document",t.OPERATION_DEFINITION="OperationDefinition",t.VARIABLE_DEFINITION="VariableDefinition",t.VARIABLE="Variable",t.SELECTION_SET="SelectionSet",t.FIELD="Field",t.ARGUMENT="Argument",t.FRAGMENT_SPREAD="FragmentSpread",t.INLINE_FRAGMENT="InlineFragment",t.FRAGMENT_DEFINITION="FragmentDefinition",t.INT="IntValue",t.FLOAT="FloatValue",t.STRING="StringValue",t.BOOLEAN="BooleanValue",t.ENUM="EnumValue",t.LIST="ListValue",t.OBJECT="ObjectValue",t.OBJECT_FIELD="ObjectField",t.DIRECTIVE="Directive",t.NAMED_TYPE="NamedType",t.LIST_TYPE="ListType",t.NON_NULL_TYPE="NonNullType",t.SCHEMA_DEFINITION="SchemaDefinition",t.OPERATION_TYPE_DEFINITION="OperationTypeDefinition",t.SCALAR_TYPE_DEFINITION="ScalarTypeDefinition",t.OBJECT_TYPE_DEFINITION="ObjectTypeDefinition",t.FIELD_DEFINITION="FieldDefinition",t.INPUT_VALUE_DEFINITION="InputValueDefinition",t.INTERFACE_TYPE_DEFINITION="InterfaceTypeDefinition",t.UNION_TYPE_DEFINITION="UnionTypeDefinition",t.ENUM_TYPE_DEFINITION="EnumTypeDefinition",t.ENUM_VALUE_DEFINITION="EnumValueDefinition",t.INPUT_OBJECT_TYPE_DEFINITION="InputObjectTypeDefinition",t.TYPE_EXTENSION_DEFINITION="TypeExtensionDefinition",t.DIRECTIVE_DEFINITION="DirectiveDefinition"},function(e,t,n){"use strict";function r(e,t){var n=new s(y,0,0,0,0,null),r={source:e,options:t,lastToken:n,token:n,line:1,lineStart:0,advance:o};return r}function o(){var e=this.lastToken=this.token;if(e.kind!==E){do e=e.next=u(this,e);while(e.kind===C);this.token=e}return e}function i(e){var t=e.value;return t?e.kind+' "'+t+'"':e.kind}function s(e,t,n,r,o,i,s){this.kind=e,this.start=t,this.end=n,this.line=r,this.column=o,this.value=s,this.prev=i,this.next=null}function a(e){return isNaN(e)?E:e<127?JSON.stringify(String.fromCharCode(e)):'"\\u'+("00"+e.toString(16).toUpperCase()).slice(-4)+'"'}function u(e,t){var n=e.source,r=n.body,o=r.length,i=c(r,t.end,e),u=e.line,f=1+i-e.lineStart;if(i>=o)return new s(E,o,o,u,f,t);var m=M.call(r,i);if(m<32&&9!==m&&10!==m&&13!==m)throw(0,g.syntaxError)(n,i,"Invalid character "+a(m)+".");switch(m){case 33:return new s(b,i,i+1,u,f,t);case 35:return l(n,i,u,f,t);case 36:return new s(k,i,i+1,u,f,t);case 40:return new s(S,i,i+1,u,f,t);case 41:return new s(T,i,i+1,u,f,t);case 46:if(46===M.call(r,i+1)&&46===M.call(r,i+2))return new s(w,i,i+3,u,f,t);break;case 58:return new s(I,i,i+1,u,f,t);case 61:return new s(O,i,i+1,u,f,t);case 64:return new s(N,i,i+1,u,f,t);case 91:return new s(x,i,i+1,u,f,t);case 93:return new s(D,i,i+1,u,f,t);case 123:return new s(P,i,i+1,u,f,t);case 124:return new s(R,i,i+1,u,f,t);case 125:return new s(_,i,i+1,u,f,t);case 65:case 66:case 67:case 68:case 69:case 70:case 71:case 72:case 73:case 74:case 75:case 76:case 77:case 78:case 79:case 80:case 81:case 82:case 83:case 84:case 85:case 86:case 87:case 88:case 89:case 90:case 95:case 97:case 98:case 99:case 100:case 101:case 102:case 103:case 104:case 105:case 106:case 107:case 108:case 109:case 110:case 111:case 112:case 113:case 114:case 115:case 116:case 117:case 118:case 119:case 120:case 121:case 122:return h(n,i,u,f,t);case 45:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return d(n,i,m,u,f,t);case 34:return p(n,i,u,f,t)}throw(0,g.syntaxError)(n,i,"Unexpected character "+a(m)+".")}function c(e,t,n){for(var r=e.length,o=t;o<r;){var i=M.call(e,o);if(9===i||32===i||44===i||65279===i)++o;else if(10===i)++o,++n.line,n.lineStart=o;else{if(13!==i)break;10===M.call(e,o+1)?o+=2:++o,++n.line,n.lineStart=o}}return o}function l(e,t,n,r,o){var i=e.body,a=void 0,u=t;do a=M.call(i,++u);while(null!==a&&(a>31||9===a));return new s(C,t,u,n,r,o,U.call(i,t+1,u))}function d(e,t,n,r,o,i){var u=e.body,c=n,l=t,d=!1;if(45===c&&(c=M.call(u,++l)),48===c){if(c=M.call(u,++l),c>=48&&c<=57)throw(0,g.syntaxError)(e,l,"Invalid number, unexpected digit after 0: "+a(c)+".")}else l=f(e,l,c),c=M.call(u,l);return 46===c&&(d=!0,c=M.call(u,++l),l=f(e,l,c),c=M.call(u,l)),69!==c&&101!==c||(d=!0,c=M.call(u,++l),43!==c&&45!==c||(c=M.call(u,++l)),l=f(e,l,c)),new s(d?q:L,t,l,r,o,i,U.call(u,t,l))}function f(e,t,n){var r=e.body,o=t,i=n;if(i>=48&&i<=57){do i=M.call(r,++o);while(i>=48&&i<=57);return o}throw(0,g.syntaxError)(e,o,"Invalid number, expected digit but got: "+a(i)+".")}function p(e,t,n,r,o){for(var i=e.body,u=t+1,c=u,l=0,d="";u<i.length&&null!==(l=M.call(i,u))&&10!==l&&13!==l&&34!==l;){if(l<32&&9!==l)throw(0,g.syntaxError)(e,u,"Invalid character within String: "+a(l)+".");if(++u,92===l){switch(d+=U.call(i,c,u-1),l=M.call(i,u)){case 34:d+='"';break;case 47:d+="/";break;case 92:d+="\\";break;case 98:d+="\b";break;case 102:d+="\f";break;case 110:d+="\n";break;case 114:d+="\r";break;case 116:d+="\t";break;case 117:var f=m(M.call(i,u+1),M.call(i,u+2),M.call(i,u+3),M.call(i,u+4));if(f<0)throw(0,g.syntaxError)(e,u,"Invalid character escape sequence: "+("\\u"+i.slice(u+1,u+5)+"."));d+=String.fromCharCode(f),u+=4;break;default:throw(0,g.syntaxError)(e,u,"Invalid character escape sequence: \\"+String.fromCharCode(l)+".")}++u,c=u}}if(34!==l)throw(0,g.syntaxError)(e,u,"Unterminated string.");return d+=U.call(i,c,u),new s(j,t,u+1,n,r,o,d)}function m(e,t,n,r){return v(e)<<12|v(t)<<8|v(n)<<4|v(r)}function v(e){return e>=48&&e<=57?e-48:e>=65&&e<=70?e-55:e>=97&&e<=102?e-87:-1}function h(e,t,n,r,o){for(var i=e.body,a=i.length,u=t+1,c=0;u!==a&&null!==(c=M.call(i,u))&&(95===c||c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122);)++u;return new s(A,t,u,n,r,o,U.call(i,t,u))}Object.defineProperty(t,"__esModule",{value:!0}),t.TokenKind=void 0,t.createLexer=r,t.getTokenDesc=i;var g=n(30),y="<SOF>",E="<EOF>",b="!",k="$",S="(",T=")",w="...",I=":",O="=",N="@",x="[",D="]",P="{",R="|",_="}",A="Name",L="Int",q="Float",j="String",C="Comment",M=(t.TokenKind={SOF:y,EOF:E,BANG:b,DOLLAR:k,PAREN_L:S,PAREN_R:T,SPREAD:w,COLON:I,EQUALS:O,AT:N,BRACKET_L:x,BRACKET_R:D,BRACE_L:P,PIPE:R,BRACE_R:_,NAME:A,INT:L,FLOAT:q,STRING:j,COMMENT:C},String.prototype.charCodeAt),U=String.prototype.slice;s.prototype.toJSON=s.prototype.inspect=function(){return{kind:this.kind,value:this.value,line:this.line,column:this.column}}},function(e,t,n){"use strict";function r(e,t){for(var n=/\r\n|[\n\r]/g,r=1,o=t+1,i=void 0;(i=n.exec(e.body))&&i.index<t;)r+=1,o=t+1-(i.index+i[0].length);return{line:r,column:o}}Object.defineProperty(t,"__esModule",{value:!0}),t.getLocation=r},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});t.Source=function e(t,n){r(this,e),this.body=t,this.name=n||"GraphQL"}},function(e,t,n){"use strict";function r(e,t,n){var r=n||u,i=void 0,s=Array.isArray(e),l=[e],d=-1,f=[],p=void 0,m=[],v=[],h=e;do{d++;var g=d===l.length,y=void 0,E=void 0,b=g&&0!==f.length;if(g){if(y=0===v.length?void 0:m.pop(),E=p,p=v.pop(),b){if(s)E=E.slice();else{var k={};for(var S in E)E.hasOwnProperty(S)&&(k[S]=E[S]);E=k}for(var T=0,w=0;w<f.length;w++){var I=f[w][0],O=f[w][1];s&&(I-=T),s&&null===O?(E.splice(I,1),T++):E[I]=O}}d=i.index,l=i.keys,f=i.edits,s=i.inArray,i=i.prev}else{if(y=p?s?d:l[d]:void 0,E=p?p[y]:h,null===E||void 0===E)continue;p&&m.push(y)}var N=void 0;if(!Array.isArray(E)){if(!o(E))throw new Error("Invalid AST Node: "+JSON.stringify(E));var x=a(t,E.kind,g);if(x){if(N=x.call(t,E,y,p,m,v),N===c)break;if(N===!1){if(!g){m.pop();continue}}else if(void 0!==N&&(f.push([y,N]),!g)){if(!o(N)){m.pop();continue}E=N}}}void 0===N&&b&&f.push([y,E]),g||(i={inArray:s,index:d,keys:l,edits:f,prev:i},s=Array.isArray(E),l=s?E:r[E.kind]||[],d=-1,f=[],p&&v.push(p),p=E)}while(void 0!==i);return 0!==f.length&&(h=f[f.length-1][1]),h}function o(e){return e&&"string"==typeof e.kind}function i(e){var t=new Array(e.length);return{enter:function(n){for(var r=0;r<e.length;r++)if(!t[r]){var o=a(e[r],n.kind,!1);if(o){var i=o.apply(e[r],arguments);if(i===!1)t[r]=n;else if(i===c)t[r]=c;else if(void 0!==i)return i}}},leave:function(n){for(var r=0;r<e.length;r++)if(t[r])t[r]===n&&(t[r]=null);else{var o=a(e[r],n.kind,!0);if(o){var i=o.apply(e[r],arguments);if(i===c)t[r]=c;else if(void 0!==i&&i!==!1)return i}}}}}function s(e,t){return{enter:function(n){e.enter(n);var r=a(t,n.kind,!1);if(r){var i=r.apply(t,arguments);return void 0!==i&&(e.leave(n),o(i)&&e.enter(i)),i}},leave:function(n){var r=a(t,n.kind,!0),o=void 0;return r&&(o=r.apply(t,arguments)),e.leave(n),o}}}function a(e,t,n){var r=e[t];if(r){if(!n&&"function"==typeof r)return r;var o=n?r.leave:r.enter;if("function"==typeof o)return o}else{var i=n?e.leave:e.enter;if(i){if("function"==typeof i)return i;var s=i[t];if("function"==typeof s)return s}}}Object.defineProperty(t,"__esModule",{value:!0}),t.visit=r,t.visitInParallel=i,t.visitWithTypeInfo=s;var u=t.QueryDocumentKeys={Name:[],Document:["definitions"],OperationDefinition:["name","variableDefinitions","directives","selectionSet"],VariableDefinition:["variable","type","defaultValue"],Variable:["name"],SelectionSet:["selections"],Field:["alias","name","arguments","directives","selectionSet"],Argument:["name","value"],FragmentSpread:["name","directives"],InlineFragment:["typeCondition","directives","selectionSet"],FragmentDefinition:["name","typeCondition","directives","selectionSet"],IntValue:[],FloatValue:[],StringValue:[],BooleanValue:[],EnumValue:[],ListValue:["values"],ObjectValue:["fields"],ObjectField:["name","value"],Directive:["name","arguments"],NamedType:["name"],ListType:["type"],NonNullType:["type"],SchemaDefinition:["directives","operationTypes"],OperationTypeDefinition:["type"],ScalarTypeDefinition:["name","directives"],ObjectTypeDefinition:["name","interfaces","directives","fields"],FieldDefinition:["name","arguments","type","directives"],InputValueDefinition:["name","type","defaultValue","directives"],InterfaceTypeDefinition:["name","directives","fields"],UnionTypeDefinition:["name","directives","types"],EnumTypeDefinition:["name","directives","values"],EnumValueDefinition:["name","directives"],InputObjectTypeDefinition:["name","directives","fields"],TypeExtensionDefinition:["definition"],DirectiveDefinition:["name","arguments","locations"]},c=t.BREAK={}},function(e,t){e.exports=require("async")},function(e,t){e.exports=require("connect-mongo")},function(e,t){e.exports=require("cookie-parser")},function(e,t){e.exports=require("express-session")},function(e,t){e.exports=require("fakerator")},function(e,t){e.exports=require("graphql-server-express")},function(e,t){e.exports=require("http")},function(e,t){e.exports=require("mkdirp")},function(e,t){e.exports=require("nodemailer")},function(e,t){e.exports=require("nodemailer-html-to-text")},function(e,t){e.exports=require("nodemailer-mailgun-transport")},function(e,t){e.exports=require("nodemailer-sendgrid-transport")},function(e,t){e.exports=require("object-hash")},function(e,t,n){"use strict";function r(e){e.locals.app=f.app,e.use(function(e,t,n){return t.locals.url=e.protocol+"://"+e.headers.host+e.url,n()}),e.locals.year=v().format("YYYY"),e.locals.features=f.features}function o(e){if(e.use(w({filter:function(e,t){return/json|text|javascript|css/.test(t.getHeader("Content-Type"))},level:3,threshold:512})),e.set("port",f.port),e.use(E.urlencoded({extended:!0,limit:2*f.contentMaxLength})),e.use(k()),e.use(E.json()),e.use(I()),f.isProductionMode()&&(e.use(S({cache:{max:100}})),e.use(p.static(m.join(_,"public")))),e.use(g(m.join(_,"public","favicon.ico"))),e.use(b()),e.set("etag",!0),e.use(h()),f.isDevMode()){var t=n(136),r=new t.Stream;r.writable=!0,r.write=function(e){return d.debug(e)},e.use(y("dev",{stream:r}))}}function i(e){var t={fallbackLng:"en",whitelist:["en","hu"],ns:["app","frontend"],defaultNS:"frontend",load:"all",saveMissing:!0,saveMissingTo:"all",backend:{loadPath:m.join(_,"locales","{{lng}}","{{ns}}.json"),addPath:m.join(_,"locales","{{lng}}","{{ns}}.missing.json"),jsonIndent:4}};f.isTestMode()&&(t.whitelist=["en"]),D.use(R).use(P.LanguageDetector).init(t,function(t,n){e.t=n,t&&d.warn(t)}),D.on("failedLoading",function(e,t,n){console.log("failedLoading",e,t,n)}),e.use(P.handle(D)),e.get("/locales/resources.json",P.getResourcesHandler(D)),e.post("/locales/add/:lng/:ns",P.missingKeyHandler(D))}function s(e){e.set("views",m.join(_,"views")),e.set("view engine","pug"),f.isDevMode()?(e.set("showStackError",!0),e.set("view cache",!1),e.use(O.noCache()),e.locals.pretty=!0):(e.locals.cache="memory",e.set("view cache",!0))}function a(e,t){e.use(T({saveUninitialized:!0,resave:!1,secret:f.sessionSecret,store:new x({mongooseConnection:t.connection,collection:f.sessions.collection,autoReconnect:!0}),cookie:f.sessions.cookie,name:f.sessions.name}))}function u(e){e.use(O.xssFilter()),e.use(O.noSniff()),e.use(O.ieNoOpen()),e.use(N()),e.use(O.hidePoweredBy())}function c(e){n(70)(e),!f.isTestMode()}function l(e){if(!f.isProductionMode()){var t=n(24),r=n(56),o=t(r),i=n(139);e.use(i(o,{noInfo:!0,publicPath:r.output.publicPath,headers:{"Access-Control-Allow-Origin":"*"},stats:{colors:!0}}));var s=n(140);e.use(s(o,{log:d.info}))}}var d=n(1),f=n(0),p=(n(17),n(18)),m=(n(43),n(6)),v=n(16),h=n(109),g=n(134),y=n(123),E=n(103),b=n(39),k=n(111),S=(n(107),n(124)),T=n(40),w=n(106),I=n(122),O=n(115),N=n(116),x=(n(11),n(38)(T)),D=n(117),P=n(118),R=n(119),_=m.normalize(m.join(f.rootPath,"server"));e.exports=function(e){var t=p();r(t),o(t),s(t),u(t),i(t),a(t,e),c(t),l(t);var d=n(7);d.loadServices(t,e);var f=n(13).init(t,e);return f._app=t,n(87)(t,e),f}},function(e,t,n){"use strict";var r=n(1),o=n(0),i=n(10),s=n(44);i.existsSync(o.dataFolder)||s.sync(o.dataFolder),o.isProductionMode()||(r.info("Loaded configuration:"),r.info(o),r.info())},function(e,t,n){"use strict";var r=(n(0),n(1)),o=n(8),i=n(16),s=n(11),a=n(25),u=function(){return 0===s.connection.readyState?process.exit(0):void s.connection.close(function(){return a.stop(function(){return r.info(),r.info(o.bold("---------------------[ Server stopped at %s Uptime: %s ]---------------------------"),i().format("YYYY-MM-DD HH:mm:ss.SSS"),i.duration(1e3*process.uptime()).humanize()),process.exit(0)})})};process.on("SIGINT",u).on("SIGTERM",u)},function(e,t,n){"use strict";var r=n(125),o=n(105),i=n(133),s=n(1);e.exports=function(){var e=o.Gauge,t=r.totalmem(),n=r.freemem(),a=t-n,u=i(n);s.info("CPU:\t\tArch: "+r.arch()+", Cores: "+r.cpus().length),s.info("Memory:\t\t"+e(a,t,20,.8*t,u+" free")),s.info("OS:\t\t"+r.platform()+" ("+r.type()+")")}},function(e,t,n){"use strict";e.exports={postcss:{plugins:[n(101)({browsers:["last 3 versions"]}),n(132)]}}},function(e,t,n){"use strict";(function(t){var r=n(6);n(24);e.exports={devtool:"#inline-source-map",entry:{app:["./client/app/main.js"],vendor:["es6-promise","vue","vue-router","vuex","lodash","moment","jquery","axios","toastr","vue-form-generator","vue-websocket","apollo-client","graphql-tag","i18next"],frontend:["./client/frontend/main.js"]},output:{path:r.resolve(t,"..","server","public","app"),publicPath:"/app/",filename:"[name].js",chunkFilename:"[chunkhash].js"},module:{noParse:/es6-promise\.js$/,rules:[{test:/\.css$/,loaders:["style-loader","css-loader"]},{test:/\.js$/,loader:"babel-loader",exclude:[/node_modules/,/vendor/]},{test:/\.gif$/,loader:"url-loader",options:{name:"images/[name]-[hash:6].[ext]",limit:1e4}},{test:/\.png$/,loader:"url-loader",options:{name:"images/[name]-[hash:6].[ext]",limit:1e4}},{test:/\.jpg$/,loader:"file-loader",options:{name:"images/[name]-[hash:6].[ext]"}},{test:/\.(woff2?|svg)$/,loader:"url-loader",options:{limit:1e4,prefix:"font/"}},{test:/\.(ttf|eot)$/,loader:"file-loader",options:{prefix:"font/"}}]},resolve:{extensions:[".vue",".js",".json"],mainFiles:["index"],alias:{images:r.resolve(t,"..","client","images"),vue$:"vue/dist/vue.common.js"}},performance:{hints:!1},plugins:[]}}).call(t,"build")},function(e,t,n){"use strict";var r=(n(6),n(24)),o=n(54),i=n(141),s=n(55);s.entry.app.unshift("webpack-hot-middleware/client"),s.entry.frontend.unshift("webpack-hot-middleware/client"),e.exports=i(s,{devtool:"#inline-source-map",module:{rules:[{test:/\.scss$/,loaders:["style-loader","css-loader","postcss-loader","sass-loader"]},{test:/\.vue$/,loader:"vue-loader",options:{postcss:o.postcss.plugins}}]},performance:{hints:!1},plugins:[new r.HotModuleReplacementPlugin,new r.NoErrorsPlugin]})},function(e,t,n){"use strict";var r=n(1),o=(n(0),n(2)),i=(n(14),n(41)()),s=n(3),a=n(26),u=n(27);e.exports=function(){var e=a.find({}).exec().then(function(e){0===e.length&&(r.warn("Load default Devices to DB..."),o.times(36,function(){var e=new a({address:i.internet.ip(),type:i.random.arrayElement(["rasperry","odroid","nanopi","pc"]),name:i.populate("#{names.firstName}'s device"),description:i.lorem.sentence(),status:i.random.boolean("80")?1:0,lastCommunication:Date.now()});return e.save().then(function(){r.info("Default devices created!")})}))}),t=u.find({}).exec(function(e,t){0===t.length&&(r.warn("Load default Posts to DB..."),s.find({}).lean().select("_i