blob: 097f6542c315918b80c4fff88209c101ef7b41c7 [file] [log] [blame]
"use strict";
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;
};
Object.defineProperty(exports, "__esModule", { value: true });
var WebpackChunkModuleIterator_1 = require("./WebpackChunkModuleIterator");
var WebpackModuleFileIterator_1 = require("./WebpackModuleFileIterator");
var PluginChunkReadHandler = /** @class */ (function () {
function PluginChunkReadHandler(logger, fileHandler, licenseTypeIdentifier, licenseTextReader, licensePolicy, fileSystem) {
this.logger = logger;
this.fileHandler = fileHandler;
this.licenseTypeIdentifier = licenseTypeIdentifier;
this.licenseTextReader = licenseTextReader;
this.licensePolicy = licensePolicy;
this.fileSystem = fileSystem;
this.moduleIterator = new WebpackChunkModuleIterator_1.WebpackChunkModuleIterator();
this.fileIterator = new WebpackModuleFileIterator_1.WebpackModuleFileIterator();
}
PluginChunkReadHandler.prototype.processChunk = function (compilation, chunk, moduleCache) {
var _this = this;
this.moduleIterator.iterateModules(chunk, function (module) {
_this.fileIterator.iterateFiles(module, function (filename) {
var module = _this.fileHandler.getModule(filename);
_this.processModule(compilation, chunk, moduleCache, module);
});
});
};
PluginChunkReadHandler.prototype.getPackageJson = function (directory) {
var filename = "" + directory + this.fileSystem.pathSeparator + "package.json";
return JSON.parse(this.fileSystem.readFileAsUtf8(filename));
};
PluginChunkReadHandler.prototype.processModule = function (compilation, chunk, moduleCache, module) {
if (module && !moduleCache.alreadySeenForChunk(chunk.name, module.name)) {
var alreadyIncludedModule = moduleCache.getModule(module.name);
if (alreadyIncludedModule !== null) {
moduleCache.registerModule(chunk.name, alreadyIncludedModule);
}
else {
// module not yet in cache
var packageJson = this.getPackageJson(module.directory);
var licenseType = this.licenseTypeIdentifier.findLicenseIdentifier(compilation, module.name, packageJson);
if (this.licensePolicy.isLicenseUnacceptableFor(licenseType)) {
this.logger.error(compilation, "unacceptable license found for " + module.name + ": " + licenseType);
this.licensePolicy.handleUnacceptableLicense(module.name, licenseType);
}
if (this.licensePolicy.isLicenseWrittenFor(licenseType)) {
var licenseText = this.licenseTextReader.readLicense(compilation, module, licenseType);
moduleCache.registerModule(chunk.name, __assign({ licenseText: licenseText,
packageJson: packageJson }, module, { licenseId: licenseType }));
}
}
moduleCache.markSeenForChunk(chunk.name, module.name);
}
};
return PluginChunkReadHandler;
}());
exports.PluginChunkReadHandler = PluginChunkReadHandler;