UNPKG

trailpack-proxy-cart

Version:

eCommerce - Trailpack for Proxy Engine

128 lines (106 loc) 4.12 kB
'use strict' const Trailpack = require('trailpack') const _ = require('lodash') const lib = require('./lib') module.exports = class ProxyCartTrailpack extends Trailpack { /** * Validates Configs */ validate () { // Packs if (!_.includes(_.keys(this.app.packs), 'express')) { return Promise.reject(new Error('Trailpack-proxy-cart currently only works with express!')) } if (!_.includes(_.keys(this.app.packs), 'proxy-sequelize')) { return Promise.reject(new Error('Trailpack-proxy-cart currently only works with trailpack-proxy-sequelize!')) } if (!_.includes(_.keys(this.app.packs), 'proxy-engine')) { return Promise.reject(new Error('Trailpack-proxy-cart requires trailpack-proxy-engine!')) } if (!_.includes(_.keys(this.app.packs), 'proxy-permissions')) { return Promise.reject(new Error('Trailpack-proxy-cart requires trailpack-proxy-permissions!')) } if (!_.includes(_.keys(this.app.packs), 'proxy-passport')) { return Promise.reject(new Error('Trailpack-proxy-cart requires trailpack-proxy-passport!')) } if (!_.includes(_.keys(this.app.packs), 'proxy-notifications')) { return Promise.reject(new Error('Trailpack-proxy-cart requires trailpack-proxy-notifications!')) } if (!_.includes(_.keys(this.app.packs), 'proxy-cart-countries')) { return Promise.reject(new Error('Trailpack-proxy-cart requires trailpack-proxy-cart-countries!')) } if (!_.includes(_.keys(this.app.packs), 'proxy-generics')) { return Promise.reject(new Error('Trailpack-proxy-cart requires trailpack-proxy-generics!')) } // Configs if (!this.app.config.proxyEngine) { return Promise.reject(new Error('No configuration found at config.proxyEngine!')) } if (!this.app.config.proxyCart) { return Promise.reject(new Error('No configuration found at config.proxyCart!')) } if (!this.app.config.proxyNotifications) { return Promise.reject(new Error('No configuration found at config.proxyCart!')) } if (!this.app.config.proxyGenerics) { return Promise.reject(new Error('No configuration found at config.proxyGenerics!')) } if (!this.app.config.proxyPermissions) { return Promise.reject(new Error('No configuration found at config.proxyPermissions!')) } if (!this.app.config.proxyPassport) { return Promise.reject(new Error('No configuration found at config.proxyPassport!')) } if ( this.app.config.policies && this.app.config.policies['*'] && this.app.config.policies['*'].indexOf('CheckPermissions.checkRoute') === -1 ) { this.app.log.warn('ProxyCart Routes are unlocked! add \'*\' : [\'CheckPermissions.checkRoute\'] to config/policies.js') } return Promise.all([ lib.Validator.validateDatabase.config(this.app.config.database), lib.Validator.validateProxyCart.config(this.app.config.proxyCart), lib.Validator.validateMiddleware.config(this.app.config.web.middlewares) ]) } /** * Adds Routes, Policies, Generics, and Agenda */ configure () { return Promise.all([ lib.ProxyCart.configure(this.app), lib.ProxyCart.addPolicies(this.app), lib.ProxyCart.addRoutes(this.app), lib.ProxyCart.resolveGenerics(this.app), lib.ProxyCart.copyDefaults(this.app), lib.ProxyCart.addCrons(this.app), lib.ProxyCart.addEvents(this.app), lib.ProxyCart.addTasks(this.app) ]) } /** * Loads default shop and country fixtures */ initialize () { return Promise.all([ lib.Utils.buildShopFixtures(this.app) .then(fixtures => { this.shopFixtures = fixtures return lib.Utils.loadShopFixtures(this.app) }), lib.Utils.buildCountryFixtures(this.app) .then(fixtures => { this.countryFixtures = fixtures return lib.Utils.loadCountryFixtures(this.app) }) ]) } constructor (app) { super(app, { config: require('./config'), api: require('./api'), pkg: require('./package') }) } }