generator-theia
Version:
Theia Generator
194 lines • 7.38 kB
JavaScript
"use strict";
/*
* Copyright (C) 2017 TypeFox and others.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
*/
var __assign = (this && this.__assign) || Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
var __spread = (this && this.__spread) || function () {
for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
return ar;
};
var __values = (this && this.__values) || function (o) {
var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0;
if (m) return m.call(o);
return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
};
Object.defineProperty(exports, "__esModule", { value: true });
var path = require("path");
function sortByKey(object) {
return Object.keys(object).sort().reduce(function (sorted, key) {
sorted[key] = object[key];
return sorted;
}, {});
}
exports.sortByKey = sortByKey;
exports.defaultExtensionKeyword = "theia-extension";
var Model = (function () {
function Model() {
this.pck = {};
this.config = {
copyright: '',
node_modulesPath: "../../node_modules"
};
this.defaultExtensionConfig = {
testSupport: true
};
this.extensionConfig = __assign({}, this.defaultExtensionConfig, { extensionKeyword: exports.defaultExtensionKeyword });
this.extensionPackages = new Map();
}
Object.defineProperty(Model.prototype, "allExtensions", {
get: function () {
return __spread(Object.keys(this.pck.localDependencies), Object.keys(this.pck.dependencies));
},
enumerable: true,
configurable: true
});
Model.prototype.readExtensionPackages = function (read) {
if (!this.pck.dependencies) {
return;
}
var _loop_1 = function (extension) {
var version = this_1.pck.dependencies[extension];
this_1.readExtensionPackage(extension, function () { return read(extension, version); });
};
var this_1 = this;
// tslint:disable-next-line:forin
for (var extension in this.pck.dependencies) {
_loop_1(extension);
}
};
Model.prototype.readLocalExtensionPackages = function (read) {
if (!this.config.localDependencies) {
return;
}
var _loop_2 = function (extension) {
var path_1 = this_2.config.localDependencies[extension];
this_2.readExtensionPackage(extension, function () { return read(extension, path_1); });
};
var this_2 = this;
// tslint:disable-next-line:forin
for (var extension in this.config.localDependencies) {
_loop_2(extension);
}
};
Model.prototype.readExtensionPackage = function (extension, read) {
if (!this.extensionPackages.has(extension)) {
var extensionPackage = read();
if (extensionPackage) {
this.extensionPackages.set(extension, extensionPackage);
}
}
};
Object.defineProperty(Model.prototype, "frontendModules", {
get: function () {
if (!this._frontendModules) {
this._frontendModules = this.computeModules('frontend');
}
return this._frontendModules;
},
enumerable: true,
configurable: true
});
Object.defineProperty(Model.prototype, "frontendElectronModules", {
get: function () {
if (!this._frontendElectronModules) {
this._frontendElectronModules = this.computeModules('frontendElectron', 'frontend');
}
return this._frontendElectronModules;
},
enumerable: true,
configurable: true
});
Object.defineProperty(Model.prototype, "backendModules", {
get: function () {
if (!this._backendModules) {
this._backendModules = this.computeModules('backend');
}
return this._backendModules;
},
enumerable: true,
configurable: true
});
Object.defineProperty(Model.prototype, "backendElectronModules", {
get: function () {
if (!this._backendElectronModules) {
this._backendElectronModules = this.computeModules('backendElectron', 'backend');
}
return this._backendElectronModules;
},
enumerable: true,
configurable: true
});
Model.prototype.computeModules = function (primary, secondary) {
var result = new Map();
var moduleIndex = 1;
try {
for (var _a = __values(this.extensionPackages.values()), _b = _a.next(); !_b.done; _b = _a.next()) {
var extensionPackage = _b.value;
var extensions = extensionPackage.theiaExtensions;
if (extensions) {
try {
for (var extensions_1 = __values(extensions), extensions_1_1 = extensions_1.next(); !extensions_1_1.done; extensions_1_1 = extensions_1.next()) {
var extension = extensions_1_1.value;
var modulePath = extension[primary] || (secondary && extension[secondary]);
if (typeof modulePath === 'string') {
var extensionPath = path.join(extensionPackage.name, modulePath).split(path.sep).join('/');
result.set(primary + "_" + moduleIndex, extensionPath);
moduleIndex = moduleIndex + 1;
}
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (extensions_1_1 && !extensions_1_1.done && (_c = extensions_1.return)) _c.call(extensions_1);
}
finally { if (e_1) throw e_1.error; }
}
}
}
}
catch (e_2_1) { e_2 = { error: e_2_1 }; }
finally {
try {
if (_b && !_b.done && (_d = _a.return)) _d.call(_a);
}
finally { if (e_2) throw e_2.error; }
}
return result;
var e_2, _d, e_1, _c;
};
return Model;
}());
exports.Model = Model;
//# sourceMappingURL=generator-model.js.map