simple-squiggle

A restricted subset of Squiggle
Log | Files | Refs | README

RequireIncludePlugin.js (1191B)


      1 /*
      2 	MIT License http://www.opensource.org/licenses/mit-license.php
      3 	Author Tobias Koppers @sokra
      4 */
      5 
      6 "use strict";
      7 
      8 const RequireIncludeDependency = require("./RequireIncludeDependency");
      9 const RequireIncludeDependencyParserPlugin = require("./RequireIncludeDependencyParserPlugin");
     10 
     11 class RequireIncludePlugin {
     12 	apply(compiler) {
     13 		compiler.hooks.compilation.tap(
     14 			"RequireIncludePlugin",
     15 			(compilation, { normalModuleFactory }) => {
     16 				compilation.dependencyFactories.set(
     17 					RequireIncludeDependency,
     18 					normalModuleFactory
     19 				);
     20 				compilation.dependencyTemplates.set(
     21 					RequireIncludeDependency,
     22 					new RequireIncludeDependency.Template()
     23 				);
     24 
     25 				const handler = (parser, parserOptions) => {
     26 					if (parserOptions.requireInclude === false) return;
     27 					const warn = parserOptions.requireInclude === undefined;
     28 
     29 					new RequireIncludeDependencyParserPlugin(warn).apply(parser);
     30 				};
     31 
     32 				normalModuleFactory.hooks.parser
     33 					.for("javascript/auto")
     34 					.tap("RequireIncludePlugin", handler);
     35 				normalModuleFactory.hooks.parser
     36 					.for("javascript/dynamic")
     37 					.tap("RequireIncludePlugin", handler);
     38 			}
     39 		);
     40 	}
     41 }
     42 module.exports = RequireIncludePlugin;