MCPcopy
hub / github.com/webpack/webpack / _initializeEvaluating

Method _initializeEvaluating

lib/javascript/JavascriptParser.js:764–2048  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

762 }
763
764 _initializeEvaluating() {
765 this.hooks.evaluate.for("Literal").tap(CLASS_NAME, (_expr) => {
766 const expr = /** @type {Literal} */ (_expr);
767
768 switch (typeof expr.value) {
769 case "number":
770 return new BasicEvaluatedExpression()
771 .setNumber(expr.value)
772 .setRange(/** @type {Range} */ (expr.range));
773 case "bigint":
774 return new BasicEvaluatedExpression()
775 .setBigInt(expr.value)
776 .setRange(/** @type {Range} */ (expr.range));
777 case "string":
778 return new BasicEvaluatedExpression()
779 .setString(expr.value)
780 .setRange(/** @type {Range} */ (expr.range));
781 case "boolean":
782 return new BasicEvaluatedExpression()
783 .setBoolean(expr.value)
784 .setRange(/** @type {Range} */ (expr.range));
785 }
786 if (expr.value === null) {
787 return new BasicEvaluatedExpression()
788 .setNull()
789 .setRange(/** @type {Range} */ (expr.range));
790 }
791 if (expr.value instanceof RegExp) {
792 return new BasicEvaluatedExpression()
793 .setRegExp(expr.value)
794 .setRange(/** @type {Range} */ (expr.range));
795 }
796 });
797 this.hooks.evaluate.for("NewExpression").tap(CLASS_NAME, (_expr) => {
798 const expr = /** @type {NewExpression} */ (_expr);
799 const callee = expr.callee;
800 if (callee.type !== "Identifier") return;
801 if (callee.name !== "RegExp") {
802 return this.callHooksForName(
803 this.hooks.evaluateNewExpression,
804 callee.name,
805 expr
806 );
807 } else if (
808 expr.arguments.length > 2 ||
809 this.getVariableInfo("RegExp") !== "RegExp"
810 ) {
811 return;
812 }
813
814 /** @type {undefined | string} */
815 let regExp;
816 const arg1 = expr.arguments[0];
817
818 if (arg1) {
819 if (arg1.type === "SpreadElement") return;
820
821 const evaluatedRegExp = this.evaluateExpression(arg1);

Callers 1

constructorMethod · 0.95

Calls 15

setRangeMethod · 0.95
setNumberMethod · 0.95
setBigIntMethod · 0.95
setStringMethod · 0.95
callHooksForNameMethod · 0.95
getVariableInfoMethod · 0.95
evaluateExpressionMethod · 0.95
setSideEffectsMethod · 0.95
setWrappedMethod · 0.95
setOptionsMethod · 0.95

Tested by

no test coverage detected