dynamic-import.js 1.7 KB

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