index.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = void 0;
  6. function _helperPluginUtils() {
  7. const data = require("@babel/helper-plugin-utils");
  8. _helperPluginUtils = function () {
  9. return data;
  10. };
  11. return data;
  12. }
  13. function _helperModuleTransforms() {
  14. const data = require("@babel/helper-module-transforms");
  15. _helperModuleTransforms = function () {
  16. return data;
  17. };
  18. return data;
  19. }
  20. function _core() {
  21. const data = require("@babel/core");
  22. _core = function () {
  23. return data;
  24. };
  25. return data;
  26. }
  27. const buildWrapper = (0, _core().template)(`
  28. define(MODULE_NAME, AMD_ARGUMENTS, function(IMPORT_NAMES) {
  29. })
  30. `);
  31. var _default = (0, _helperPluginUtils().declare)((api, options) => {
  32. api.assertVersion(7);
  33. const {
  34. loose,
  35. allowTopLevelThis,
  36. strict,
  37. strictMode,
  38. noInterop
  39. } = options;
  40. return {
  41. name: "transform-modules-amd",
  42. visitor: {
  43. Program: {
  44. exit(path) {
  45. if (!(0, _helperModuleTransforms().isModule)(path)) return;
  46. let moduleName = this.getModuleName();
  47. if (moduleName) moduleName = _core().types.stringLiteral(moduleName);
  48. const {
  49. meta,
  50. headers
  51. } = (0, _helperModuleTransforms().rewriteModuleStatementsAndPrepareHeader)(path, {
  52. loose,
  53. strict,
  54. strictMode,
  55. allowTopLevelThis,
  56. noInterop
  57. });
  58. const amdArgs = [];
  59. const importNames = [];
  60. if ((0, _helperModuleTransforms().hasExports)(meta)) {
  61. amdArgs.push(_core().types.stringLiteral("exports"));
  62. importNames.push(_core().types.identifier(meta.exportName));
  63. }
  64. for (const [source, metadata] of meta.source) {
  65. amdArgs.push(_core().types.stringLiteral(source));
  66. importNames.push(_core().types.identifier(metadata.name));
  67. if (!(0, _helperModuleTransforms().isSideEffectImport)(metadata)) {
  68. const interop = (0, _helperModuleTransforms().wrapInterop)(path, _core().types.identifier(metadata.name), metadata.interop);
  69. if (interop) {
  70. const header = _core().types.expressionStatement(_core().types.assignmentExpression("=", _core().types.identifier(metadata.name), interop));
  71. header.loc = metadata.loc;
  72. headers.push(header);
  73. }
  74. }
  75. headers.push(...(0, _helperModuleTransforms().buildNamespaceInitStatements)(meta, metadata, loose));
  76. }
  77. (0, _helperModuleTransforms().ensureStatementsHoisted)(headers);
  78. path.unshiftContainer("body", headers);
  79. const {
  80. body,
  81. directives
  82. } = path.node;
  83. path.node.directives = [];
  84. path.node.body = [];
  85. const amdWrapper = path.pushContainer("body", [buildWrapper({
  86. MODULE_NAME: moduleName,
  87. AMD_ARGUMENTS: _core().types.arrayExpression(amdArgs),
  88. IMPORT_NAMES: importNames
  89. })])[0];
  90. const amdFactory = amdWrapper.get("expression.arguments").filter(arg => arg.isFunctionExpression())[0].get("body");
  91. amdFactory.pushContainer("directives", directives);
  92. amdFactory.pushContainer("body", body);
  93. }
  94. }
  95. }
  96. };
  97. });
  98. exports.default = _default;