(key, obj)
| 710 | * @returns {void} |
| 711 | */ |
| 712 | const applyObjectDefine = (key, obj) => { |
| 713 | parser.hooks.canRename.for(key).tap(PLUGIN_NAME, () => { |
| 714 | addValueDependency(key); |
| 715 | return true; |
| 716 | }); |
| 717 | parser.hooks.evaluateIdentifier |
| 718 | .for(key) |
| 719 | .tap(PLUGIN_NAME, (expr) => { |
| 720 | addValueDependency(key); |
| 721 | return new BasicEvaluatedExpression() |
| 722 | .setTruthy() |
| 723 | .setSideEffects(false) |
| 724 | .setRange(/** @type {Range} */ (expr.range)); |
| 725 | }); |
| 726 | parser.hooks.evaluateTypeof |
| 727 | .for(key) |
| 728 | .tap( |
| 729 | PLUGIN_NAME, |
| 730 | withValueDependency(key, evaluateToString(class="st">"object")) |
| 731 | ); |
| 732 | parser.hooks.collectDestructuringAssignmentProperties.tap( |
| 733 | PLUGIN_NAME, |
| 734 | (expr) => { |
| 735 | const nameInfo = parser.getNameForExpression(expr); |
| 736 | if (nameInfo && nameInfo.name === key) return true; |
| 737 | } |
| 738 | ); |
| 739 | parser.hooks.expression.for(key).tap(PLUGIN_NAME, (expr) => { |
| 740 | addValueDependency(key); |
| 741 | let strCode = stringifyObj( |
| 742 | obj, |
| 743 | parser, |
| 744 | compilation.valueCacheVersions, |
| 745 | key, |
| 746 | runtimeTemplate, |
| 747 | logger, |
| 748 | !parser.isAsiPosition(/** @type {Range} */ (expr.range)[0]), |
| 749 | getObjKeys(parser.destructuringAssignmentPropertiesFor(expr)) |
| 750 | ); |
| 751 | |
| 752 | if (parser.scope.inShorthand) { |
| 753 | strCode = `${parser.scope.inShorthand}:${strCode}`; |
| 754 | } |
| 755 | |
| 756 | if (WEBPACK_REQUIRE_FUNCTION_REGEXP.test(strCode)) { |
| 757 | return toConstantDependency(parser, strCode, [ |
| 758 | RuntimeGlobals.require |
| 759 | ])(expr); |
| 760 | } else if (WEBPACK_REQUIRE_IDENTIFIER_REGEXP.test(strCode)) { |
| 761 | return toConstantDependency(parser, strCode, [ |
| 762 | RuntimeGlobals.requireScope |
| 763 | ])(expr); |
| 764 | } |
| 765 | return toConstantDependency(parser, strCode)(expr); |
| 766 | }); |
| 767 | class="cm">// A property access not defined on the object resolves to `undefined` |
| 768 | class="cm">// and the whole object is never inlined (issue #15559). Keyed by the |
| 769 | class="cm">// chain root so dotted object keys (e.g. `a.b`) are also covered. |
nothing calls this directly
no test coverage detected