4d21ff558d6dc5856f05a1786c5bf606ad2333574c5d58f1dd5d0aae47fb0fd84cee060689d084f9f226413cc11d231130a9da95259b4e0072674d78b2a873 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. "use strict";
  2. exports.__esModule = true;
  3. exports.ImportDeclaration = exports.ModuleDeclaration = undefined;
  4. var _getIterator2 = require("babel-runtime/core-js/get-iterator");
  5. var _getIterator3 = _interopRequireDefault(_getIterator2);
  6. exports.ExportDeclaration = ExportDeclaration;
  7. exports.Scope = Scope;
  8. var _babelTypes = require("babel-types");
  9. var t = _interopRequireWildcard(_babelTypes);
  10. function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
  11. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  12. var ModuleDeclaration = exports.ModuleDeclaration = {
  13. enter: function enter(path, file) {
  14. var node = path.node;
  15. if (node.source) {
  16. node.source.value = file.resolveModuleSource(node.source.value);
  17. }
  18. }
  19. };
  20. var ImportDeclaration = exports.ImportDeclaration = {
  21. exit: function exit(path, file) {
  22. var node = path.node;
  23. var specifiers = [];
  24. var imported = [];
  25. file.metadata.modules.imports.push({
  26. source: node.source.value,
  27. imported: imported,
  28. specifiers: specifiers
  29. });
  30. for (var _iterator = path.get("specifiers"), _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, _getIterator3.default)(_iterator);;) {
  31. var _ref;
  32. if (_isArray) {
  33. if (_i >= _iterator.length) break;
  34. _ref = _iterator[_i++];
  35. } else {
  36. _i = _iterator.next();
  37. if (_i.done) break;
  38. _ref = _i.value;
  39. }
  40. var specifier = _ref;
  41. var local = specifier.node.local.name;
  42. if (specifier.isImportDefaultSpecifier()) {
  43. imported.push("default");
  44. specifiers.push({
  45. kind: "named",
  46. imported: "default",
  47. local: local
  48. });
  49. }
  50. if (specifier.isImportSpecifier()) {
  51. var importedName = specifier.node.imported.name;
  52. imported.push(importedName);
  53. specifiers.push({
  54. kind: "named",
  55. imported: importedName,
  56. local: local
  57. });
  58. }
  59. if (specifier.isImportNamespaceSpecifier()) {
  60. imported.push("*");
  61. specifiers.push({
  62. kind: "namespace",
  63. local: local
  64. });
  65. }
  66. }
  67. }
  68. };
  69. function ExportDeclaration(path, file) {
  70. var node = path.node;
  71. var source = node.source ? node.source.value : null;
  72. var exports = file.metadata.modules.exports;
  73. var declar = path.get("declaration");
  74. if (declar.isStatement()) {
  75. var bindings = declar.getBindingIdentifiers();
  76. for (var name in bindings) {
  77. exports.exported.push(name);
  78. exports.specifiers.push({
  79. kind: "local",
  80. local: name,
  81. exported: path.isExportDefaultDeclaration() ? "default" : name
  82. });
  83. }
  84. }
  85. if (path.isExportNamedDeclaration() && node.specifiers) {
  86. for (var _iterator2 = node.specifiers, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : (0, _getIterator3.default)(_iterator2);;) {
  87. var _ref2;
  88. if (_isArray2) {
  89. if (_i2 >= _iterator2.length) break;
  90. _ref2 = _iterator2[_i2++];
  91. } else {
  92. _i2 = _iterator2.next();
  93. if (_i2.done) break;
  94. _ref2 = _i2.value;
  95. }
  96. var specifier = _ref2;
  97. var exported = specifier.exported.name;
  98. exports.exported.push(exported);
  99. if (t.isExportDefaultSpecifier(specifier)) {
  100. exports.specifiers.push({
  101. kind: "external",
  102. local: exported,
  103. exported: exported,
  104. source: source
  105. });
  106. }
  107. if (t.isExportNamespaceSpecifier(specifier)) {
  108. exports.specifiers.push({
  109. kind: "external-namespace",
  110. exported: exported,
  111. source: source
  112. });
  113. }
  114. var local = specifier.local;
  115. if (!local) continue;
  116. if (source) {
  117. exports.specifiers.push({
  118. kind: "external",
  119. local: local.name,
  120. exported: exported,
  121. source: source
  122. });
  123. }
  124. if (!source) {
  125. exports.specifiers.push({
  126. kind: "local",
  127. local: local.name,
  128. exported: exported
  129. });
  130. }
  131. }
  132. }
  133. if (path.isExportAllDeclaration()) {
  134. exports.specifiers.push({
  135. kind: "external-all",
  136. source: source
  137. });
  138. }
  139. }
  140. function Scope(path) {
  141. path.skip();
  142. }