diff options
author | Florian Dold <florian.dold@gmail.com> | 2017-08-14 05:01:11 +0200 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2017-08-14 05:02:09 +0200 |
commit | 363723fc84f7b8477592e0105aeb331ec9a017af (patch) | |
tree | 29f92724f34131bac64d6a318dd7e30612e631c7 /node_modules/ts-loader/dist/after-compile.js | |
parent | 5634e77ad96bfe1818f6b6ee70b7379652e5487f (diff) |
node_modules
Diffstat (limited to 'node_modules/ts-loader/dist/after-compile.js')
-rw-r--r-- | node_modules/ts-loader/dist/after-compile.js | 147 |
1 files changed, 0 insertions, 147 deletions
diff --git a/node_modules/ts-loader/dist/after-compile.js b/node_modules/ts-loader/dist/after-compile.js deleted file mode 100644 index 7c8cb7ef8..000000000 --- a/node_modules/ts-loader/dist/after-compile.js +++ /dev/null @@ -1,147 +0,0 @@ -"use strict"; -var path = require("path"); -var utils = require("./utils"); -var constants = require("./constants"); -function makeAfterCompile(instance, configFilePath) { - var getCompilerOptionDiagnostics = true; - var checkAllFilesForErrors = true; - return function (compilation, callback) { - // Don't add errors for child compilations - if (compilation.compiler.isChild()) { - callback(); - return; - } - removeTSLoaderErrors(compilation.errors); - provideCompilerOptionDiagnosticErrorsToWebpack(getCompilerOptionDiagnostics, compilation, instance, configFilePath); - getCompilerOptionDiagnostics = false; - var modules = determineModules(compilation); - var filesToCheckForErrors = determineFilesToCheckForErrors(checkAllFilesForErrors, instance); - checkAllFilesForErrors = false; - var filesWithErrors = {}; - provideErrorsToWebpack(filesToCheckForErrors, filesWithErrors, compilation, modules, instance); - provideDeclarationFilesToWebpack(filesToCheckForErrors, instance.languageService, compilation); - instance.filesWithErrors = filesWithErrors; - instance.modifiedFiles = null; - callback(); - }; -} -/** - * handle compiler option errors after the first compile - */ -function provideCompilerOptionDiagnosticErrorsToWebpack(getCompilerOptionDiagnostics, compilation, instance, configFilePath) { - if (getCompilerOptionDiagnostics) { - var languageService = instance.languageService, loaderOptions = instance.loaderOptions, compiler = instance.compiler; - utils.registerWebpackErrors(compilation.errors, utils.formatErrors(languageService.getCompilerOptionsDiagnostics(), loaderOptions, compiler, { file: configFilePath || 'tsconfig.json' })); - } -} -/** - * build map of all modules based on normalized filename - * this is used for quick-lookup when trying to find modules - * based on filepath - */ -function determineModules(compilation) { - var modules = {}; - compilation.modules.forEach(function (module) { - if (module.resource) { - var modulePath = path.normalize(module.resource); - if (utils.hasOwnProperty(modules, modulePath)) { - var existingModules = modules[modulePath]; - if (existingModules.indexOf(module) === -1) { - existingModules.push(module); - } - } - else { - modules[modulePath] = [module]; - } - } - }); - return modules; -} -function determineFilesToCheckForErrors(checkAllFilesForErrors, instance) { - var files = instance.files, modifiedFiles = instance.modifiedFiles, filesWithErrors = instance.filesWithErrors; - // calculate array of files to check - var filesToCheckForErrors = {}; - if (checkAllFilesForErrors) { - // check all files on initial run - filesToCheckForErrors = files; - } - else if (modifiedFiles) { - // check all modified files, and all dependants - Object.keys(modifiedFiles).forEach(function (modifiedFileName) { - utils.collectAllDependants(instance.reverseDependencyGraph, modifiedFileName) - .forEach(function (fileName) { - filesToCheckForErrors[fileName] = files[fileName]; - }); - }); - } - // re-check files with errors from previous build - if (filesWithErrors) { - Object.keys(filesWithErrors).forEach(function (fileWithErrorName) { - return filesToCheckForErrors[fileWithErrorName] = filesWithErrors[fileWithErrorName]; - }); - } - return filesToCheckForErrors; -} -function provideErrorsToWebpack(filesToCheckForErrors, filesWithErrors, compilation, modules, instance) { - var compiler = instance.compiler, languageService = instance.languageService, files = instance.files, loaderOptions = instance.loaderOptions; - Object.keys(filesToCheckForErrors) - .filter(function (filePath) { return !!filePath.match(constants.dtsTsTsxRegex); }) - .forEach(function (filePath) { - var errors = languageService.getSyntacticDiagnostics(filePath).concat(languageService.getSemanticDiagnostics(filePath)); - if (errors.length > 0) { - filesWithErrors[filePath] = files[filePath]; - } - // if we have access to a webpack module, use that - if (utils.hasOwnProperty(modules, filePath)) { - var associatedModules = modules[filePath]; - associatedModules.forEach(function (module) { - // remove any existing errors - removeTSLoaderErrors(module.errors); - // append errors - var formattedErrors = utils.formatErrors(errors, loaderOptions, compiler, { module: module }); - utils.registerWebpackErrors(module.errors, formattedErrors); - utils.registerWebpackErrors(compilation.errors, formattedErrors); - }); - } - else { - // otherwise it's a more generic error - utils.registerWebpackErrors(compilation.errors, utils.formatErrors(errors, loaderOptions, compiler, { file: filePath })); - } - }); -} -/** - * gather all declaration files from TypeScript and output them to webpack - */ -function provideDeclarationFilesToWebpack(filesToCheckForErrors, languageService, compilation) { - Object.keys(filesToCheckForErrors) - .filter(function (filePath) { return !!filePath.match(constants.tsTsxRegex); }) - .forEach(function (filePath) { - var output = languageService.getEmitOutput(filePath); - var declarationFile = output.outputFiles.filter(function (outputFile) { return !!outputFile.name.match(constants.dtsDtsxRegex); }).pop(); - if (declarationFile) { - var assetPath = path.relative(compilation.compiler.context, declarationFile.name); - compilation.assets[assetPath] = { - source: function () { return declarationFile.text; }, - size: function () { return declarationFile.text.length; }, - }; - } - }); -} -/** - * handle all other errors. The basic approach here to get accurate error - * reporting is to start with a "blank slate" each compilation and gather - * all errors from all files. Since webpack tracks errors in a module from - * compilation-to-compilation, and since not every module always runs through - * the loader, we need to detect and remove any pre-existing errors. - */ -function removeTSLoaderErrors(errors) { - var index = -1; - var length = errors.length; - while (++index < length) { - if (errors[index].loaderSource === 'ts-loader') { - errors.splice(index--, 1); - length--; - } - } -} -module.exports = makeAfterCompile; |