deep-package-manager
Version:
DEEP Package Manager
176 lines (145 loc) • 3.6 kB
JavaScript
/**
* Created by AlexanderC on 9/18/15.
*/
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.FrontendEngine = undefined;
var _Dependency = require('../Registry/GitHub/Dependency');
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
class FrontendEngine {
/**
* @param {String[]} engines
*/
constructor(...engines) {
this._rawEngines = engines.length ? engines : FrontendEngine.engines;
this._engines = this._rawEngines.map(FrontendEngine.getRealEngine);
}
/**
* @param {Object} microservice
* @returns {FrontendEngine}
*/
static create(microservice) {
return new FrontendEngine(...microservice.config.frontendEngine);
}
/**
* @returns {String[]}
*/
get rawEngines() {
return this._rawEngines;
}
/**
* @returns {String[]}
*/
get engines() {
return this._engines;
}
/**
* @param {Property|Instance|*} property
* @param {String} suitableEngine
* @param {Function} cb
*/
static fetch(property, suitableEngine, cb) {
let repo = FrontendEngine.getEngineGitHub(suitableEngine);
let dependency = new _Dependency.Dependency(repo, '*');
dependency.extract(_path2.default.join(property.path, FrontendEngine.getRealEngine(suitableEngine)), cb);
}
/**
* @param {String} engine
* @returns {String}
*/
static getEngineGitHub(engine) {
return _Dependency.Dependency.getDepName(FrontendEngine.GITHUB_DEEP_USER, `${FrontendEngine.GITHUB_REPO_PREFIX}${engine}`);
}
/**
* @param {Object[]} microservices
* @returns {String}
*/
findSuitable(...microservices) {
let engines = microservices.map(microservice => microservice.frontendEngine);
let plainEnginesBatch = engines.map(engine => engine.rawEngines);
plainEngineLoop: for (let i in this._rawEngines) {
if (!this._rawEngines.hasOwnProperty(i)) {
continue;
}
let plainEngine = this._rawEngines[i];
for (let j in plainEnginesBatch) {
if (!plainEnginesBatch.hasOwnProperty(j)) {
continue;
}
if (plainEnginesBatch[j].indexOf(plainEngine) === -1) {
continue plainEngineLoop;
}
}
return plainEngine;
}
return null;
}
/**
* @param {String} engine
* @returns {Boolean}
*/
match(engine) {
let realEngine = FrontendEngine.getRealEngine(engine);
return this._engines.indexOf(realEngine) !== -1;
}
/**
* @param {String} engine
* @returns {String}
*/
static getRealEngine(engine) {
return `deep-root-${engine}`;
}
/**
* @returns {String[]}
*/
static get engines() {
return [FrontendEngine.ANGULAR_ENGINE, FrontendEngine.ANGULAR1_ENGINE, FrontendEngine.VANILLA_ENGINE];
}
/**
* @returns {String}
*/
static get ANGULAR_ENGINE() {
return 'angular';
}
/**
* @returns {String}
*/
static get ANGULAR1_ENGINE() {
return 'angular1';
}
/**
* @returns {String}
*/
static get AURELIA_ENGINE() {
return 'aurelia';
}
/**
* @returns {String}
*/
static get REACT_ENGINE() {
return 'react';
}
/**
* @returns {String}
*/
static get VANILLA_ENGINE() {
return 'vanilla';
}
/**
* @returns {String}
*/
static get GITHUB_DEEP_USER() {
return 'MitocGroup';
}
/**
* @returns {String}
*/
static get GITHUB_REPO_PREFIX() {
return 'deep-microservices-root-';
}
}
exports.FrontendEngine = FrontendEngine;