@ts-dev-tools/core
Version:
TS dev tools Core
59 lines (58 loc) • 2.76 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.PluginService = void 0;
var fs_1 = require("fs");
var path_1 = require("path");
var constants_1 = require("../constants");
var CorePackageService_1 = require("./CorePackageService");
var PackageJson_1 = require("./PackageJson");
var PluginService = /** @class */ (function () {
function PluginService() {
}
PluginService.packageNameIsPlugin = function (packageName) {
return packageName.match(new RegExp("^".concat(constants_1.PACKAGE_BASE_NAME, "/.*$")));
};
PluginService.getInstalledPlugins = function (absoluteProjectDir) {
var packageJson = PackageJson_1.PackageJson.fromDirPath(absoluteProjectDir);
var allDependenciesPackageNames = packageJson.getAllDependenciesPackageNames();
if (!allDependenciesPackageNames.length) {
return [];
}
var pluginsFullname = allDependenciesPackageNames.filter(function (packageName) {
return PluginService.packageNameIsPlugin(packageName);
});
var sortPlugins = function (pluginA, pluginB) { return pluginA.localeCompare(pluginB); };
pluginsFullname.sort(sortPlugins);
var plugins = new Map();
for (var _i = 0, pluginsFullname_1 = pluginsFullname; _i < pluginsFullname_1.length; _i++) {
var pluginFullname = pluginsFullname_1[_i];
var plugin = PluginService.getPluginFromFullname(pluginFullname);
plugins.set(pluginFullname, plugin);
var pluginParents = PluginService.getInstalledPlugins(plugin.path);
for (var _a = 0, pluginParents_1 = pluginParents; _a < pluginParents_1.length; _a++) {
var pluginParent = pluginParents_1[_a];
plugins.set(pluginParent.fullname, pluginParent);
}
}
return Array.from(plugins.values());
};
PluginService.getPluginShortname = function (fullname) {
var shortname = fullname.replace("".concat(constants_1.PACKAGE_BASE_NAME, "/"), "");
return shortname;
};
PluginService.getPluginFromFullname = function (fullname) {
var corePackageRootPath = CorePackageService_1.CorePackageService.getPackageRootPath();
var shortname = PluginService.getPluginShortname(fullname);
var path = (0, path_1.resolve)(corePackageRootPath, "../", shortname);
if (!(0, fs_1.existsSync)(path)) {
throw new Error("Plugin \"".concat(fullname, "\" is required but cannot be found in ").concat(path, "."));
}
return {
fullname: fullname,
shortname: shortname,
path: path,
};
};
return PluginService;
}());
exports.PluginService = PluginService;
;