HarmonyExportExpressionDependency.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  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. };
  21. }
  22. describeHarmonyExport() {
  23. return {
  24. exportedName: "default",
  25. precedence: 1,
  26. };
  27. }
  28. }
  29. HarmonyExportExpressionDependency.Template = class HarmonyExportDependencyTemplate {
  30. apply(dep, source) {
  31. const used = dep.originModule.isUsed("default");
  32. const content = this.getContent(dep.originModule, used);
  33. if(dep.range) {
  34. source.replace(dep.rangeStatement[0], dep.range[0] - 1, content + "(");
  35. source.replace(dep.range[1], dep.rangeStatement[1] - 1, ");");
  36. return;
  37. }
  38. source.replace(dep.rangeStatement[0], dep.rangeStatement[1] - 1, content);
  39. }
  40. getContent(module, used) {
  41. const exportsName = module.exportsArgument || "exports";
  42. if(used) {
  43. return `/* harmony default export */ ${exportsName}[${JSON.stringify(used)}] = `;
  44. }
  45. return "/* unused harmony default export */ var _unused_webpack_default_export = ";
  46. }
  47. };
  48. module.exports = HarmonyExportExpressionDependency;