source: frontend/node_modules/webpack/lib/dependencies/RequireContextDependencyParserPlugin.js

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 12 days ago

Fix frontend appearance

  • Property mode set to 100644
File size: 2.1 KB
Line 
1/*
2 MIT License http://www.opensource.org/licenses/mit-license.php
3 Author Tobias Koppers @sokra
4*/
5
6"use strict";
7
8const RequireContextDependency = require("./RequireContextDependency");
9
10/** @typedef {import("../ContextModule").ContextMode} ContextMode */
11/** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
12/** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
13/** @typedef {import("../javascript/JavascriptParser").Range} Range */
14
15const PLUGIN_NAME = "RequireContextDependencyParserPlugin";
16
17module.exports = class RequireContextDependencyParserPlugin {
18 /**
19 * Applies the plugin by registering its hooks on the compiler.
20 * @param {JavascriptParser} parser the parser
21 * @returns {void}
22 */
23 apply(parser) {
24 parser.hooks.call.for("require.context").tap(PLUGIN_NAME, (expr) => {
25 let regExp = /^\.\/.*$/;
26 let recursive = true;
27 /** @type {ContextMode} */
28 let mode = "sync";
29 switch (expr.arguments.length) {
30 case 4: {
31 const modeExpr = parser.evaluateExpression(expr.arguments[3]);
32 if (!modeExpr.isString()) return;
33 mode = /** @type {ContextMode} */ (modeExpr.string);
34 }
35 // falls through
36 case 3: {
37 const regExpExpr = parser.evaluateExpression(expr.arguments[2]);
38 if (!regExpExpr.isRegExp()) return;
39 regExp = /** @type {RegExp} */ (regExpExpr.regExp);
40 }
41 // falls through
42 case 2: {
43 const recursiveExpr = parser.evaluateExpression(expr.arguments[1]);
44 if (!recursiveExpr.isBoolean()) return;
45 recursive = /** @type {boolean} */ (recursiveExpr.bool);
46 }
47 // falls through
48 case 1: {
49 const requestExpr = parser.evaluateExpression(expr.arguments[0]);
50 if (!requestExpr.isString()) return;
51 const dep = new RequireContextDependency(
52 {
53 request: /** @type {string} */ (requestExpr.string),
54 recursive,
55 regExp,
56 mode,
57 category: "commonjs"
58 },
59 /** @type {Range} */
60 (expr.range)
61 );
62 dep.loc = /** @type {DependencyLocation} */ (expr.loc);
63 dep.optional = Boolean(parser.scope.inTry);
64 parser.state.current.addDependency(dep);
65 return true;
66 }
67 }
68 });
69 }
70};
Note: See TracBrowser for help on using the repository browser.