Home Identifier Source Repository

src/loader.js

/*jslint node: true */

"use strict";

import PkmnLib from './core';

/**
 * Generates a PkmnLib instance from dependencies.
 * @private
 * @return {PkmnLib} An instance of PkmnLib.
 */
function walkerGen(deps, pkmnLib) {
  pkmnLib = (typeof pkmnLib === 'undefined') ? null : pkmnLib;
  
  for (let e of deps) {
    var newPkmnLib = new e();
    
    newPkmnLib.pkmnLib = pkmnLib;
    
    pkmnLib = newPkmnLib.pkmnLib;
  }
  
  delete pkmnLib.originalPkmnLib;
  
	Object.defineProperty(pkmnLib, 'constructor', {
  	value: PkmnLib,
  	writable: true,
  	enumerable: false,
  	configurable: true
	});
	
  return pkmnLib;
}

import flatten from './../lib/lodash-flatten/array/flatten';
import config from './../config';

/**
 * Finalized PkmnLib.
 * @type {PkmnLib}
 */
var pkmnLib = walkerGen(flatten(config.modules, true));

import Module from './Module';

//@if ES5=false
export {Module};
//@endif

//@if ES5=true
pkmnLib.Module = Module;
//@endif

export default pkmnLib;