dynamic-import.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.buildDynamicImport = buildDynamicImport;
  6. var _core = require("@babel/core");
  7. exports.getDynamicImportSource = function getDynamicImportSource(node) {
  8. const [source] = node.arguments;
  9. return _core.types.isStringLiteral(source) || _core.types.isTemplateLiteral(source) ? source : _core.template.expression.ast`\`\${${source}}\``;
  10. };
  11. function buildDynamicImport(node, deferToThen, wrapWithPromise, builder) {
  12. const specifier = _core.types.isCallExpression(node) ? node.arguments[0] : node.source;
  13. if (_core.types.isStringLiteral(specifier) || _core.types.isTemplateLiteral(specifier) && specifier.quasis.length === 0) {
  14. if (deferToThen) {
  15. return _core.template.expression.ast`
  16. Promise.resolve().then(() => ${builder(specifier)})
  17. `;
  18. } else return builder(specifier);
  19. }
  20. const specifierToString = _core.types.isTemplateLiteral(specifier) ? _core.types.identifier("specifier") : _core.types.templateLiteral([_core.types.templateElement({
  21. raw: ""
  22. }), _core.types.templateElement({
  23. raw: ""
  24. })], [_core.types.identifier("specifier")]);
  25. if (deferToThen) {
  26. return _core.template.expression.ast`
  27. (specifier =>
  28. new Promise(r => r(${specifierToString}))
  29. .then(s => ${builder(_core.types.identifier("s"))})
  30. )(${specifier})
  31. `;
  32. } else if (wrapWithPromise) {
  33. return _core.template.expression.ast`
  34. (specifier =>
  35. new Promise(r => r(${builder(specifierToString)}))
  36. )(${specifier})
  37. `;
  38. } else {
  39. return _core.template.expression.ast`
  40. (specifier => ${builder(specifierToString)})(${specifier})
  41. `;
  42. }
  43. }
  44. //# sourceMappingURL=dynamic-import.js.map