All files / src/utils isExportsOrModuleAssignment.js

100% Statements 7/7
100% Branches 9/9
100% Functions 1/1
100% Lines 7/7
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35                              4x             88x 3x   88x   5x     83x 83x      
/*
 * Copyright (c) 2015, Facebook, Inc.
 * All rights reserved.
 *
 * This source code is licensed under the BSD-style license found in the
 * LICENSE file in the root directory of this source tree. An additional grant
 * of patent rights can be found in the PATENTS file in the same directory.
 *
 * @flow
 *
 */
 
import * as expressionTo from './expressionTo';
import recast from 'recast';
 
var {types: {namedTypes: types}} = recast;
 
/**
 * Returns true if the expression is of form `exports.foo = ...;` or
 * `modules.exports = ...;`.
 */
export default function isExportsOrModuleAssignment(path: NodePath): boolean {
  if (types.ExpressionStatement.check(path.node)) {
    path = path.get('expression');
  }
  if (!types.AssignmentExpression.check(path.node) ||
    !types.MemberExpression.check(path.node.left)) {
    return false;
  }
 
  var exprArr = expressionTo.Array(path.get('left'));
  return (exprArr[0] === 'module' && exprArr[1] === 'exports') ||
    exprArr[0] === 'exports';
}