PluginChunkReadHandler.js 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. "use strict";
  2. var __assign = (this && this.__assign) || Object.assign || function(t) {
  3. for (var s, i = 1, n = arguments.length; i < n; i++) {
  4. s = arguments[i];
  5. for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
  6. t[p] = s[p];
  7. }
  8. return t;
  9. };
  10. Object.defineProperty(exports, "__esModule", { value: true });
  11. var WebpackChunkModuleIterator_1 = require("./WebpackChunkModuleIterator");
  12. var WebpackModuleFileIterator_1 = require("./WebpackModuleFileIterator");
  13. var PluginChunkReadHandler = /** @class */ (function () {
  14. function PluginChunkReadHandler(logger, fileHandler, licenseTypeIdentifier, licenseTextReader, licensePolicy, fileSystem) {
  15. this.logger = logger;
  16. this.fileHandler = fileHandler;
  17. this.licenseTypeIdentifier = licenseTypeIdentifier;
  18. this.licenseTextReader = licenseTextReader;
  19. this.licensePolicy = licensePolicy;
  20. this.fileSystem = fileSystem;
  21. this.moduleIterator = new WebpackChunkModuleIterator_1.WebpackChunkModuleIterator();
  22. this.fileIterator = new WebpackModuleFileIterator_1.WebpackModuleFileIterator();
  23. }
  24. PluginChunkReadHandler.prototype.processChunk = function (compilation, chunk, moduleCache) {
  25. var _this = this;
  26. this.moduleIterator.iterateModules(chunk, function (module) {
  27. _this.fileIterator.iterateFiles(module, function (filename) {
  28. var module = _this.fileHandler.getModule(filename);
  29. _this.processModule(compilation, chunk, moduleCache, module);
  30. });
  31. });
  32. };
  33. PluginChunkReadHandler.prototype.getPackageJson = function (directory) {
  34. var filename = "" + directory + this.fileSystem.pathSeparator + "package.json";
  35. return JSON.parse(this.fileSystem.readFileAsUtf8(filename));
  36. };
  37. PluginChunkReadHandler.prototype.processModule = function (compilation, chunk, moduleCache, module) {
  38. if (module && !moduleCache.alreadySeenForChunk(chunk.name, module.name)) {
  39. var alreadyIncludedModule = moduleCache.getModule(module.name);
  40. if (alreadyIncludedModule !== null) {
  41. moduleCache.registerModule(chunk.name, alreadyIncludedModule);
  42. }
  43. else {
  44. // module not yet in cache
  45. var packageJson = this.getPackageJson(module.directory);
  46. var licenseType = this.licenseTypeIdentifier.findLicenseIdentifier(compilation, module.name, packageJson);
  47. if (this.licensePolicy.isLicenseUnacceptableFor(licenseType)) {
  48. this.logger.error(compilation, "unacceptable license found for " + module.name + ": " + licenseType);
  49. this.licensePolicy.handleUnacceptableLicense(module.name, licenseType);
  50. }
  51. if (this.licensePolicy.isLicenseWrittenFor(licenseType)) {
  52. var licenseText = this.licenseTextReader.readLicense(compilation, module, licenseType);
  53. moduleCache.registerModule(chunk.name, __assign({ licenseText: licenseText,
  54. packageJson: packageJson }, module, { licenseId: licenseType }));
  55. }
  56. }
  57. moduleCache.markSeenForChunk(chunk.name, module.name);
  58. }
  59. };
  60. return PluginChunkReadHandler;
  61. }());
  62. exports.PluginChunkReadHandler = PluginChunkReadHandler;