HarmonyExportExpressionDependency.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. /*
  2. MIT License http://www.opensource.org/licenses/mit-license.php
  3. Author Tobias Koppers @sokra
  4. */
  5. "use strict";
  6. const NullDependency = require("./NullDependency");
  7. class HarmonyExportExpressionDependency extends NullDependency {
  8. constructor(originModule, range, rangeStatement) {
  9. super();
  10. this.originModule = originModule;
  11. this.range = range;
  12. this.rangeStatement = rangeStatement;
  13. }
  14. get type() {
  15. return "harmony export expression";
  16. }
  17. getExports() {
  18. return {
  19. exports: ["default"],
  20. dependencies: undefined
  21. };
  22. }
  23. }
  24. HarmonyExportExpressionDependency.Template = class HarmonyExportDependencyTemplate {
  25. apply(dep, source) {
  26. const used = dep.originModule.isUsed("default");
  27. const content = this.getContent(dep.originModule, used);
  28. if (dep.range) {
  29. source.replace(dep.rangeStatement[0], dep.range[0] - 1, content + "(");
  30. source.replace(dep.range[1], dep.rangeStatement[1] - 1, ");");
  31. return;
  32. }
  33. source.replace(dep.rangeStatement[0], dep.rangeStatement[1] - 1, content);
  34. }
  35. getContent(module, used) {
  36. const exportsName = module.exportsArgument;
  37. if (used) {
  38. return `/* harmony default export */ ${exportsName}[${JSON.stringify(
  39. used
  40. )}] = `;
  41. }
  42. return "/* unused harmony default export */ var _unused_webpack_default_export = ";
  43. }
  44. };
  45. module.exports = HarmonyExportExpressionDependency;