export default()

in transforms/rename-unsafe-lifecycles.js [16:62]


export default (file, api, options) => {
  const j = api.jscodeshift;

  const printOptions = options.printOptions || {
    quote: 'single',
    trailingComma: true
  };

  const root = j(file.source);

  let hasModifications = false;

  const renameDeprecatedApis = path => {
    const name = path.node.key.name;

    if (DEPRECATED_APIS[name]) {
      path.value.key.name = DEPRECATED_APIS[name];
      hasModifications = true;
    }
  };

  const renameDeprecatedCallExpressions = path => {
    const name = path.node.property.name;

    if (DEPRECATED_APIS[name]) {
      path.node.property.name = DEPRECATED_APIS[name];
      hasModifications = true;
    }
  };

  // Class methods
  root.find(j.MethodDefinition).forEach(renameDeprecatedApis);

  // Class methods - typescript
  root.find(j.ClassMethod).forEach(renameDeprecatedApis);

  // Arrow functions
  root.find(j.ClassProperty).forEach(renameDeprecatedApis);

  // createReactClass and mixins
  root.find(j.Property).forEach(renameDeprecatedApis);

  // Function calls
  root.find(j.MemberExpression).forEach(renameDeprecatedCallExpressions);

  return hasModifications ? root.toSource(printOptions) : null;
};