Code coverage report for father/lib/component-package.js

Statements: 100% (30 / 30)      Branches: 100% (10 / 10)      Functions: 100% (4 / 4)      Lines: 100% (30 / 30)      Ignored: none     

All files » father/lib/ » component-package.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63    1 1 1 1 1   1     10 10   10   8 7 7   9         1   1 17 17 17 17 17 17                   17     1 8 8 8 8 1   7 7                
'use strict';
 
var path = require('path');
var join = path.join;
var util = require('./util');
var Package = require('./package');
var debug = require('debug')('father:component');
 
var ComponentPackage = Package.extend({
 
  readPackage: function() {
    var pkgFile = normalize(join(this.dest, 'component.json'));
    debug('readPackage(%s) info %s', pkgFile.id, JSON.stringify(pkgFile));
 
    Object.keys(pkgFile.dependencies)
      .forEach(function(name) {
        var dpkgFile = resolveDeps(name, pkgFile, this);
        delete pkgFile.dependencies[name];
        pkgFile.dependencies[dpkgFile.name] = dpkgFile;
      }.bind(this));
    return pkgFile;
  }
 
});
 
module.exports = ComponentPackage;
 
function normalize(pkg) {
  var dest = path.dirname(pkg);
  delete require.cache[pkg];
  pkg = require(pkg);
  var scripts = pkg.scripts || [];
  var styles = pkg.styles || [];
  var ret = {
    id: pkg.name + '@' + pkg.version,
    name: pkg.name,
    version: pkg.version,
    dependencies: pkg.dependencies || {},
    main: pkg.main || 'index.js',
    dest: dest,
    output: scripts.concat(styles),
    origin: pkg
  };
  return ret;
}
 
function resolveDeps(name, pkgFile, pkg) {
  var base = util.getBase(pkg);
  var dest = join(base, 'components', name);
  var version = util.getVersion(pkgFile.dependencies[name], dest);
  if (!version) {
    throw new Error('no matched version of ' + name);
  }
  var dpkg = normalize(join(dest, version, 'component.json'));
  return {
    id: dpkg.name + '@' + dpkg.version,
    name: dpkg.name,
    version: dpkg.version,
    dest: join(dest, version)
  };
}