123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- "use strict";
- exports.__esModule = true;
- exports.default = function (_ref) {
- var t = _ref.types;
- function addDisplayName(id, call) {
- var props = call.arguments[0].properties;
- var safe = true;
- for (var i = 0; i < props.length; i++) {
- var prop = props[i];
- var key = t.toComputedKey(prop);
- if (t.isLiteral(key, { value: "displayName" })) {
- safe = false;
- break;
- }
- }
- if (safe) {
- props.unshift(t.objectProperty(t.identifier("displayName"), t.stringLiteral(id)));
- }
- }
- var isCreateClassCallExpression = t.buildMatchMemberExpression("React.createClass");
- var isCreateClassAddon = function isCreateClassAddon(callee) {
- return callee.name === "createReactClass";
- };
- function isCreateClass(node) {
- if (!node || !t.isCallExpression(node)) return false;
- if (!isCreateClassCallExpression(node.callee) && !isCreateClassAddon(node.callee)) return false;
- var args = node.arguments;
- if (args.length !== 1) return false;
- var first = args[0];
- if (!t.isObjectExpression(first)) return false;
- return true;
- }
- return {
- visitor: {
- ExportDefaultDeclaration: function ExportDefaultDeclaration(_ref2, state) {
- var node = _ref2.node;
- if (isCreateClass(node.declaration)) {
- var displayName = state.file.opts.basename;
- if (displayName === "index") {
- displayName = _path2.default.basename(_path2.default.dirname(state.file.opts.filename));
- }
- addDisplayName(displayName, node.declaration);
- }
- },
- CallExpression: function CallExpression(path) {
- var node = path.node;
- if (!isCreateClass(node)) return;
- var id = void 0;
- path.find(function (path) {
- if (path.isAssignmentExpression()) {
- id = path.node.left;
- } else if (path.isObjectProperty()) {
- id = path.node.key;
- } else if (path.isVariableDeclarator()) {
- id = path.node.id;
- } else if (path.isStatement()) {
- return true;
- }
- if (id) return true;
- });
- if (!id) return;
- if (t.isMemberExpression(id)) {
- id = id.property;
- }
- if (t.isIdentifier(id)) {
- addDisplayName(id.name, node);
- }
- }
- }
- };
- };
- var _path = require("path");
- var _path2 = _interopRequireDefault(_path);
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
- module.exports = exports["default"];
|