MCPcopy
hub / github.com/webpack/webpack / handler

Method handler

lib/ProvidePlugin.js:63–109  ·  view source on GitHub ↗
(parser, parserOptions)

Source from the content-addressed store, hash-verified

61 * @returns {void}
62 */
63 const handler = (parser, parserOptions) => {
64 for (const name of Object.keys(definitions)) {
65 const request = [
66 ...(Array.isArray(definitions[name])
67 ? definitions[name]
68 : [definitions[name]])
69 ];
70 const splittedName = name.split(".");
71 if (splittedName.length > 0) {
72 for (const [i, _] of splittedName.slice(1).entries()) {
73 const name = splittedName.slice(0, i + 1).join(".");
74 parser.hooks.canRename.for(name).tap(PLUGIN_NAME, approve);
75 }
76 }
77
78 parser.hooks.expression.for(name).tap(PLUGIN_NAME, (expr) => {
79 const nameIdentifier = name.includes(".")
80 ? `__webpack_provided_${name.replace(/\./g, "_dot_")}`
81 : name;
82 const dep = new ProvidedDependency(
83 request[0],
84 nameIdentifier,
85 request.slice(1),
86 /** @type {Range} */ (expr.range)
87 );
88 dep.loc = /** @type {DependencyLocation} */ (expr.loc);
89 parser.state.module.addDependency(dep);
90 return true;
91 });
92
93 parser.hooks.call.for(name).tap(PLUGIN_NAME, (expr) => {
94 const nameIdentifier = name.includes(".")
95 ? `__webpack_provided_${name.replace(/\./g, "_dot_")}`
96 : name;
97 const dep = new ProvidedDependency(
98 request[0],
99 nameIdentifier,
100 request.slice(1),
101 /** @type {Range} */ (expr.callee.range)
102 );
103 dep.loc = /** @type {DependencyLocation} */ (expr.callee.loc);
104 parser.state.module.addDependency(dep);
105 parser.walkExpressions(expr.arguments);
106 return true;
107 });
108 }
109 };
110 normalModuleFactory.hooks.parser
111 .for(JAVASCRIPT_MODULE_TYPE_AUTO)
112 .tap(PLUGIN_NAME, handler);

Callers

nothing calls this directly

Calls 9

isArrayMethod · 0.80
splitMethod · 0.80
entriesMethod · 0.80
sliceMethod · 0.80
tapMethod · 0.80
walkExpressionsMethod · 0.80
keysMethod · 0.65
addDependencyMethod · 0.65
replaceMethod · 0.45

Tested by

no test coverage detected