class PaddleWebpackPlugin {
constructor() {
this.rust_home;
}
apply(compiler) {
compiler.resolverFactory.hooks.resolver.for('normal').tap('name', resolver => {
resolver.hooks.module.tapAsync('PaddleWebpackPlugin', (moduleInfo, _context, callback) => {
this.rust_home = moduleInfo.descriptionFileData.module;
callback();
});
resolver.hooks.resolve.tapAsync('PaddleWebpackPlugin', (request, context, callback) => {
let index;
if ((index = request.path.search("snippets")) > -1 && request.request.search("#RUST#") > -1) {
const moduleRoot = this.rust_home;
const updatedRequest = {
...request,
path: request.path.substr(0, index),
request: request.request.replace('#RUST#', moduleRoot)
};
const target = resolver.ensureHook('parsedResolve');
return resolver.doResolve(target, updatedRequest, null, context, callback);
} else {
callback();
}
});
});
}
}
module.exports = PaddleWebpackPlugin;