(parser, parserOptions)
| 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); |
nothing calls this directly
no test coverage detected