MCPcopy
hub / github.com/webpack/webpack / createRequireCallHandler

Function createRequireCallHandler

lib/dependencies/CommonJsImportsParserPlugin.js:163–319  ·  view source on GitHub ↗
(
	parser,
	options,
	getContext,
	requireBindingData
)

Source from the content-addressed store, hash-verified

161 * @returns {(callNew: boolean) => (expr: CallExpression | NewExpression) => (boolean | void)} handler factory
162 */
163const createRequireCallHandler = (
164 parser,
165 options,
166 getContext,
167 requireBindingData
168) => {
169 /**
170 * Process require item.
171 * @param {CallExpression | NewExpression} expr expression
172 * @param {BasicEvaluatedExpression} param param
173 * @returns {boolean | void} true when handled
174 */
175 const processRequireItem = (expr, param) => {
176 if (param.isString()) {
177 let referencedExports = getRequireReferencedExportsFromDestructuring(
178 parser,
179 expr
180 );
181 const binding =
182 requireBindingData &&
183 requireBindingData.get(/** @type {CallExpression} */ (expr));
184 if (binding && !referencedExports) {
185 // `const NAME = require(LITERAL)` — let later member-access walks
186 // on `NAME` populate the dependency's referenced exports.
187 referencedExports = binding.referencedExports;
188 }
189 const dep = new CommonJsRequireDependency(
190 /** @type {string} */ (param.string),
191 /** @type {Range} */ (param.range),
192 getContext(),
193 referencedExports,
194 /** @type {Range} */ (expr.range)
195 );
196 if (binding) binding.dep = dep;
197 dep.loc = /** @type {DependencyLocation} */ (expr.loc);
198 dep.optional = Boolean(parser.scope.inTry);
199 parser.state.current.addDependency(dep);
200 getHarmonyImportGuard().attachDependencyGuards(parser, dep);
201 return true;
202 }
203 };
204 /**
205 * Process require context.
206 * @param {CallExpression | NewExpression} expr expression
207 * @param {BasicEvaluatedExpression} param param
208 * @returns {boolean | void} true when handled
209 */
210 const processRequireContext = (expr, param) => {
211 const referencedExports = getRequireReferencedExportsFromDestructuring(
212 parser,
213 expr
214 );
215 const dep = ContextDependencyHelpers.create(
216 CommonJsRequireContextDependency,
217 /** @type {Range} */ (expr.range),
218 param,
219 expr,
220 options,

Callers 2

applyMethod · 0.85
applyMethod · 0.85

Calls 9

processRequireItemFunction · 0.85
processRequireContextFunction · 0.85
evaluateExpressionMethod · 0.80
isConditionalMethod · 0.80
isStringMethod · 0.80
flagUsedMethod · 0.80
parseCommentOptionsMethod · 0.45
addWarningMethod · 0.45

Tested by

no test coverage detected