PluginFileHandler.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. "use strict";
  2. var __values = (this && this.__values) || function (o) {
  3. var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0;
  4. if (m) return m.call(o);
  5. return {
  6. next: function () {
  7. if (o && i >= o.length) o = void 0;
  8. return { value: o && o[i++], done: !o };
  9. }
  10. };
  11. };
  12. Object.defineProperty(exports, "__esModule", { value: true });
  13. var PluginFileHandler = /** @class */ (function () {
  14. function PluginFileHandler(fileSystem, buildRoot, modulesDirectories, excludedPackageTest) {
  15. this.fileSystem = fileSystem;
  16. this.buildRoot = buildRoot;
  17. this.modulesDirectories = modulesDirectories;
  18. this.excludedPackageTest = excludedPackageTest;
  19. }
  20. PluginFileHandler.prototype.getModule = function (filename) {
  21. if (filename === null || filename === undefined) {
  22. return null;
  23. }
  24. if (this.modulesDirectories !== null) {
  25. var foundInModuleDirectory = false;
  26. try {
  27. for (var _a = __values(this.modulesDirectories), _b = _a.next(); !_b.done; _b = _a.next()) {
  28. var modulesDirectory = _b.value;
  29. if (this.fileSystem.isFileInDirectory(filename, modulesDirectory)) {
  30. foundInModuleDirectory = true;
  31. }
  32. }
  33. }
  34. catch (e_1_1) { e_1 = { error: e_1_1 }; }
  35. finally {
  36. try {
  37. if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
  38. }
  39. finally { if (e_1) throw e_1.error; }
  40. }
  41. if (!foundInModuleDirectory) {
  42. return null;
  43. }
  44. }
  45. var module = this.findModuleDir(filename);
  46. if (module !== null && this.excludedPackageTest(module.name)) {
  47. return null;
  48. }
  49. return module;
  50. var e_1, _c;
  51. };
  52. PluginFileHandler.prototype.findModuleDir = function (filename) {
  53. var pathSeparator = this.fileSystem.pathSeparator;
  54. var PACKAGE_JSON = 'package.json';
  55. var dirOfModule = filename.substring(0, filename.lastIndexOf(pathSeparator));
  56. var oldDirOfModule = null;
  57. while (!this.fileSystem.pathExists(this.fileSystem.join(dirOfModule, PACKAGE_JSON))) {
  58. // check parent directory
  59. oldDirOfModule = dirOfModule;
  60. dirOfModule = this.fileSystem.resolvePath("" + dirOfModule + pathSeparator + ".." + pathSeparator);
  61. // reached filesystem root
  62. if (oldDirOfModule === dirOfModule) {
  63. return null;
  64. }
  65. }
  66. if (this.buildRoot === dirOfModule) {
  67. return null;
  68. }
  69. var packageJsonText = this.fileSystem.readFileAsUtf8(this.fileSystem.join(dirOfModule, PACKAGE_JSON));
  70. var packageJson = JSON.parse(packageJsonText);
  71. return {
  72. name: packageJson.name,
  73. directory: dirOfModule
  74. };
  75. };
  76. return PluginFileHandler;
  77. }());
  78. exports.PluginFileHandler = PluginFileHandler;