src/class/Plugin.js
function Plugin (pluginPath) {
    this.pluginPath = pluginPath;
    this.we = we;

    this.events = this.we.events;
    this.hooks = this.we.hooks;
    this.router = this.we.router;
    /**
     * Plugin Assets
     * @type {Object}
     */
    this.assets = {
      js: {},
      css: {}
    };

    this['package.json'] = require( path.join( pluginPath , 'package.json') );

    this.controllersPath = path.join( this.pluginPath,  this.controllerFolder );
    this.modelsPath = path.join( this.pluginPath,  this.modelFolder );
    this.modelHooksPath = path.join( this.pluginPath,  this.modelHookFolder );
    this.modelInstanceMethodsPath = path.join( this.pluginPath,  this.modelInstanceMethodFolder );
    this.modelClassMethodsPath = path.join( this.pluginPath,  this.modelClassMethodFolder );

    this.searchParsersPath = path.join( this.pluginPath, this.searchParsersFolder );
    this.searchTargetsPath = path.join( this.pluginPath, this.searchTargetsFolder );

    this.templatesPath = this.pluginPath + '/server/templates';
    this.helpersPath = this.pluginPath + '/server/helpers';
    this.resourcesPath = this.pluginPath + '/server/resources';
    this.routesPath = this.pluginPath + '/server/routes';

    this.helpers = {};
    this.layouts = {};
    this.templates = {};

    /**
     * Default plugin config object
     *
     * @type {Object}
     */
    this.configs = {};


    /**
     * Default plugin resources
     *
     * @type {Object}
     */
    this.controllers = {};
    this.models = {};
    this.routes = {};

    this.appFiles = [];
    this.appAdminFiles = [];
  }
function Plugin (pluginPath) {
    this.pluginPath = pluginPath;
    this.we = we;

    this.events = this.we.events;
    this.hooks = this.we.hooks;
    this.router = this.we.router;
    /**
     * Plugin Assets
     * @type {Object}
     */
    this.assets = {
      js: {},
      css: {}
    };

    this['package.json'] = require( path.join( pluginPath , 'package.json') );

    this.controllersPath = path.join( this.pluginPath,  this.controllerFolder );
    this.modelsPath = path.join( this.pluginPath,  this.modelFolder );
    this.modelHooksPath = path.join( this.pluginPath,  this.modelHookFolder );
    this.modelInstanceMethodsPath = path.join( this.pluginPath,  this.modelInstanceMethodFolder );
    this.modelClassMethodsPath = path.join( this.pluginPath,  this.modelClassMethodFolder );

    this.searchParsersPath = path.join( this.pluginPath, this.searchParsersFolder );
    this.searchTargetsPath = path.join( this.pluginPath, this.searchTargetsFolder );

    this.templatesPath = this.pluginPath + '/server/templates';
    this.helpersPath = this.pluginPath + '/server/helpers';
    this.resourcesPath = this.pluginPath + '/server/resources';
    this.routesPath = this.pluginPath + '/server/routes';

    this.helpers = {};
    this.layouts = {};
    this.templates = {};

    /**
     * Default plugin config object
     *
     * @type {Object}
     */
    this.configs = {};


    /**
     * Default plugin resources
     *
     * @type {Object}
     */
    this.controllers = {};
    this.models = {};
    this.routes = {};

    this.appFiles = [];
    this.appAdminFiles = [];
  }
We.js plugin Class constructor

@param {string} name   plugin npm pakage name
@param {string} projectPath project path where the plugin is instaled