UNPKG

@ts-dev-tools/core

Version:
59 lines (58 loc) 2.76 kB
"use strict"; 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;