Code coverage report for lib/flow_doctrine.js

Statements: 100% (16 / 16)      Branches: 100% (12 / 12)      Functions: 100% (1 / 1)      Lines: 100% (16 / 16)      Ignored: none     

All files » lib/ » flow_doctrine.js
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 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 6226             26           26   47 26           21 1     20 2           18 1           17   11 3                   8             26  
var namedTypes = {
  'NumberTypeAnnotation': 'number',
  'BooleanTypeAnnotation': 'boolean',
  'ObjectTypeAnnotation': 'Object',
  'StringTypeAnnotation': 'string'
};
 
var oneToOne = {
  'AnyTypeAnnotation': {
    type: 'AllLiteral'
  }
};
 
function flowDoctrine(type) {
 
  if (type.type in namedTypes) {
    return {
      type: 'NameExpression',
      name: namedTypes[type.type]
    };
  }
 
  if (type.type in oneToOne) {
    return oneToOne[type.type];
  }
 
  if (type.type === 'NullableTypeAnnotation') {
    return {
      type: 'OptionalType',
      expression: flowDoctrine(type.typeAnnotation)
    };
  }
 
  if (type.type === 'UnionTypeAnnotation') {
    return {
      type: 'UnionType',
      elements: type.types.map(flowDoctrine)
    };
  }
 
  if (type.type === 'GenericTypeAnnotation') {
 
    if (type.typeParameters) {
      return {
        type: 'TypeApplication',
        expression: {
          type: 'NameExpression',
          name: type.id.name
        },
        applications: type.typeParameters.params.map(flowDoctrine)
      };
    }
 
    return {
      type: 'NameExpression',
      name: type.id.name
    };
  }
}
 
module.exports = flowDoctrine;