source: frontend/node_modules/webpack/lib/dependencies/RequireEnsurePlugin.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.5 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 {
9 JAVASCRIPT_MODULE_TYPE_AUTO,
10 JAVASCRIPT_MODULE_TYPE_DYNAMIC
11} = require("../ModuleTypeConstants");
12const {
13 evaluateToString,
14 toConstantDependency
15} = require("../javascript/JavascriptParserHelpers");
16const RequireEnsureDependenciesBlockParserPlugin = require("./RequireEnsureDependenciesBlockParserPlugin");
17const RequireEnsureDependency = require("./RequireEnsureDependency");
18const RequireEnsureItemDependency = require("./RequireEnsureItemDependency");
19
20/** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
21/** @typedef {import("../Compiler")} Compiler */
22/** @typedef {import("../javascript/JavascriptParser")} Parser */
23
24const PLUGIN_NAME = "RequireEnsurePlugin";
25
26class RequireEnsurePlugin {
27 /**
28 * Applies the plugin by registering its hooks on the compiler.
29 * @param {Compiler} compiler the compiler instance
30 * @returns {void}
31 */
32 apply(compiler) {
33 compiler.hooks.compilation.tap(
34 PLUGIN_NAME,
35 (compilation, { normalModuleFactory }) => {
36 compilation.dependencyFactories.set(
37 RequireEnsureItemDependency,
38 normalModuleFactory
39 );
40 compilation.dependencyTemplates.set(
41 RequireEnsureItemDependency,
42 new RequireEnsureItemDependency.Template()
43 );
44
45 compilation.dependencyTemplates.set(
46 RequireEnsureDependency,
47 new RequireEnsureDependency.Template()
48 );
49
50 /**
51 * Handles the hook callback for this code path.
52 * @param {Parser} parser parser parser
53 * @param {JavascriptParserOptions} parserOptions parserOptions
54 * @returns {void}
55 */
56 const handler = (parser, parserOptions) => {
57 if (
58 parserOptions.requireEnsure !== undefined &&
59 !parserOptions.requireEnsure
60 ) {
61 return;
62 }
63
64 new RequireEnsureDependenciesBlockParserPlugin().apply(parser);
65 parser.hooks.evaluateTypeof
66 .for("require.ensure")
67 .tap(PLUGIN_NAME, evaluateToString("function"));
68 parser.hooks.typeof
69 .for("require.ensure")
70 .tap(
71 PLUGIN_NAME,
72 toConstantDependency(parser, JSON.stringify("function"))
73 );
74 };
75
76 normalModuleFactory.hooks.parser
77 .for(JAVASCRIPT_MODULE_TYPE_AUTO)
78 .tap(PLUGIN_NAME, handler);
79 normalModuleFactory.hooks.parser
80 .for(JAVASCRIPT_MODULE_TYPE_DYNAMIC)
81 .tap(PLUGIN_NAME, handler);
82 }
83 );
84 }
85}
86
87module.exports = RequireEnsurePlugin;
Note: See TracBrowser for help on using the repository browser.