| "use strict"; |
| |
| exports.__esModule = true; |
| exports.TypeParameterDeclaration = exports.StringLiteralTypeAnnotation = exports.NumericLiteralTypeAnnotation = exports.GenericTypeAnnotation = exports.ClassImplements = undefined; |
| exports.AnyTypeAnnotation = AnyTypeAnnotation; |
| exports.ArrayTypeAnnotation = ArrayTypeAnnotation; |
| exports.BooleanTypeAnnotation = BooleanTypeAnnotation; |
| exports.BooleanLiteralTypeAnnotation = BooleanLiteralTypeAnnotation; |
| exports.NullLiteralTypeAnnotation = NullLiteralTypeAnnotation; |
| exports.DeclareClass = DeclareClass; |
| exports.DeclareFunction = DeclareFunction; |
| exports.DeclareInterface = DeclareInterface; |
| exports.DeclareModule = DeclareModule; |
| exports.DeclareModuleExports = DeclareModuleExports; |
| exports.DeclareTypeAlias = DeclareTypeAlias; |
| exports.DeclareOpaqueType = DeclareOpaqueType; |
| exports.DeclareVariable = DeclareVariable; |
| exports.DeclareExportDeclaration = DeclareExportDeclaration; |
| exports.ExistentialTypeParam = ExistentialTypeParam; |
| exports.FunctionTypeAnnotation = FunctionTypeAnnotation; |
| exports.FunctionTypeParam = FunctionTypeParam; |
| exports.InterfaceExtends = InterfaceExtends; |
| exports._interfaceish = _interfaceish; |
| exports._variance = _variance; |
| exports.InterfaceDeclaration = InterfaceDeclaration; |
| exports.IntersectionTypeAnnotation = IntersectionTypeAnnotation; |
| exports.MixedTypeAnnotation = MixedTypeAnnotation; |
| exports.EmptyTypeAnnotation = EmptyTypeAnnotation; |
| exports.NullableTypeAnnotation = NullableTypeAnnotation; |
| |
| var _types = require("./types"); |
| |
| Object.defineProperty(exports, "NumericLiteralTypeAnnotation", { |
| enumerable: true, |
| get: function get() { |
| return _types.NumericLiteral; |
| } |
| }); |
| Object.defineProperty(exports, "StringLiteralTypeAnnotation", { |
| enumerable: true, |
| get: function get() { |
| return _types.StringLiteral; |
| } |
| }); |
| exports.NumberTypeAnnotation = NumberTypeAnnotation; |
| exports.StringTypeAnnotation = StringTypeAnnotation; |
| exports.ThisTypeAnnotation = ThisTypeAnnotation; |
| exports.TupleTypeAnnotation = TupleTypeAnnotation; |
| exports.TypeofTypeAnnotation = TypeofTypeAnnotation; |
| exports.TypeAlias = TypeAlias; |
| exports.OpaqueType = OpaqueType; |
| exports.TypeAnnotation = TypeAnnotation; |
| exports.TypeParameter = TypeParameter; |
| exports.TypeParameterInstantiation = TypeParameterInstantiation; |
| exports.ObjectTypeAnnotation = ObjectTypeAnnotation; |
| exports.ObjectTypeCallProperty = ObjectTypeCallProperty; |
| exports.ObjectTypeIndexer = ObjectTypeIndexer; |
| exports.ObjectTypeProperty = ObjectTypeProperty; |
| exports.ObjectTypeSpreadProperty = ObjectTypeSpreadProperty; |
| exports.QualifiedTypeIdentifier = QualifiedTypeIdentifier; |
| exports.UnionTypeAnnotation = UnionTypeAnnotation; |
| exports.TypeCastExpression = TypeCastExpression; |
| exports.VoidTypeAnnotation = VoidTypeAnnotation; |
| |
| var _babelTypes = require("babel-types"); |
| |
| var t = _interopRequireWildcard(_babelTypes); |
| |
| 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; } } |
| |
| function AnyTypeAnnotation() { |
| this.word("any"); |
| } |
| |
| function ArrayTypeAnnotation(node) { |
| this.print(node.elementType, node); |
| this.token("["); |
| this.token("]"); |
| } |
| |
| function BooleanTypeAnnotation() { |
| this.word("boolean"); |
| } |
| |
| function BooleanLiteralTypeAnnotation(node) { |
| this.word(node.value ? "true" : "false"); |
| } |
| |
| function NullLiteralTypeAnnotation() { |
| this.word("null"); |
| } |
| |
| function DeclareClass(node, parent) { |
| if (!t.isDeclareExportDeclaration(parent)) { |
| this.word("declare"); |
| this.space(); |
| } |
| this.word("class"); |
| this.space(); |
| this._interfaceish(node); |
| } |
| |
| function DeclareFunction(node, parent) { |
| if (!t.isDeclareExportDeclaration(parent)) { |
| this.word("declare"); |
| this.space(); |
| } |
| this.word("function"); |
| this.space(); |
| this.print(node.id, node); |
| this.print(node.id.typeAnnotation.typeAnnotation, node); |
| this.semicolon(); |
| } |
| |
| function DeclareInterface(node) { |
| this.word("declare"); |
| this.space(); |
| this.InterfaceDeclaration(node); |
| } |
| |
| function DeclareModule(node) { |
| this.word("declare"); |
| this.space(); |
| this.word("module"); |
| this.space(); |
| this.print(node.id, node); |
| this.space(); |
| this.print(node.body, node); |
| } |
| |
| function DeclareModuleExports(node) { |
| this.word("declare"); |
| this.space(); |
| this.word("module"); |
| this.token("."); |
| this.word("exports"); |
| this.print(node.typeAnnotation, node); |
| } |
| |
| function DeclareTypeAlias(node) { |
| this.word("declare"); |
| this.space(); |
| this.TypeAlias(node); |
| } |
| |
| function DeclareOpaqueType(node, parent) { |
| if (!t.isDeclareExportDeclaration(parent)) { |
| this.word("declare"); |
| this.space(); |
| } |
| this.OpaqueType(node); |
| } |
| |
| function DeclareVariable(node, parent) { |
| if (!t.isDeclareExportDeclaration(parent)) { |
| this.word("declare"); |
| this.space(); |
| } |
| this.word("var"); |
| this.space(); |
| this.print(node.id, node); |
| this.print(node.id.typeAnnotation, node); |
| this.semicolon(); |
| } |
| |
| function DeclareExportDeclaration(node) { |
| this.word("declare"); |
| this.space(); |
| this.word("export"); |
| this.space(); |
| if (node.default) { |
| this.word("default"); |
| this.space(); |
| } |
| |
| FlowExportDeclaration.apply(this, arguments); |
| } |
| |
| function FlowExportDeclaration(node) { |
| if (node.declaration) { |
| var declar = node.declaration; |
| this.print(declar, node); |
| if (!t.isStatement(declar)) this.semicolon(); |
| } else { |
| this.token("{"); |
| if (node.specifiers.length) { |
| this.space(); |
| this.printList(node.specifiers, node); |
| this.space(); |
| } |
| this.token("}"); |
| |
| if (node.source) { |
| this.space(); |
| this.word("from"); |
| this.space(); |
| this.print(node.source, node); |
| } |
| |
| this.semicolon(); |
| } |
| } |
| |
| function ExistentialTypeParam() { |
| this.token("*"); |
| } |
| |
| function FunctionTypeAnnotation(node, parent) { |
| this.print(node.typeParameters, node); |
| this.token("("); |
| this.printList(node.params, node); |
| |
| if (node.rest) { |
| if (node.params.length) { |
| this.token(","); |
| this.space(); |
| } |
| this.token("..."); |
| this.print(node.rest, node); |
| } |
| |
| this.token(")"); |
| |
| if (parent.type === "ObjectTypeCallProperty" || parent.type === "DeclareFunction") { |
| this.token(":"); |
| } else { |
| this.space(); |
| this.token("=>"); |
| } |
| |
| this.space(); |
| this.print(node.returnType, node); |
| } |
| |
| function FunctionTypeParam(node) { |
| this.print(node.name, node); |
| if (node.optional) this.token("?"); |
| this.token(":"); |
| this.space(); |
| this.print(node.typeAnnotation, node); |
| } |
| |
| function InterfaceExtends(node) { |
| this.print(node.id, node); |
| this.print(node.typeParameters, node); |
| } |
| |
| exports.ClassImplements = InterfaceExtends; |
| exports.GenericTypeAnnotation = InterfaceExtends; |
| function _interfaceish(node) { |
| this.print(node.id, node); |
| this.print(node.typeParameters, node); |
| if (node.extends.length) { |
| this.space(); |
| this.word("extends"); |
| this.space(); |
| this.printList(node.extends, node); |
| } |
| if (node.mixins && node.mixins.length) { |
| this.space(); |
| this.word("mixins"); |
| this.space(); |
| this.printList(node.mixins, node); |
| } |
| this.space(); |
| this.print(node.body, node); |
| } |
| |
| function _variance(node) { |
| if (node.variance === "plus") { |
| this.token("+"); |
| } else if (node.variance === "minus") { |
| this.token("-"); |
| } |
| } |
| |
| function InterfaceDeclaration(node) { |
| this.word("interface"); |
| this.space(); |
| this._interfaceish(node); |
| } |
| |
| function andSeparator() { |
| this.space(); |
| this.token("&"); |
| this.space(); |
| } |
| |
| function IntersectionTypeAnnotation(node) { |
| this.printJoin(node.types, node, { separator: andSeparator }); |
| } |
| |
| function MixedTypeAnnotation() { |
| this.word("mixed"); |
| } |
| |
| function EmptyTypeAnnotation() { |
| this.word("empty"); |
| } |
| |
| function NullableTypeAnnotation(node) { |
| this.token("?"); |
| this.print(node.typeAnnotation, node); |
| } |
| |
| function NumberTypeAnnotation() { |
| this.word("number"); |
| } |
| |
| function StringTypeAnnotation() { |
| this.word("string"); |
| } |
| |
| function ThisTypeAnnotation() { |
| this.word("this"); |
| } |
| |
| function TupleTypeAnnotation(node) { |
| this.token("["); |
| this.printList(node.types, node); |
| this.token("]"); |
| } |
| |
| function TypeofTypeAnnotation(node) { |
| this.word("typeof"); |
| this.space(); |
| this.print(node.argument, node); |
| } |
| |
| function TypeAlias(node) { |
| this.word("type"); |
| this.space(); |
| this.print(node.id, node); |
| this.print(node.typeParameters, node); |
| this.space(); |
| this.token("="); |
| this.space(); |
| this.print(node.right, node); |
| this.semicolon(); |
| } |
| function OpaqueType(node) { |
| this.word("opaque"); |
| this.space(); |
| this.word("type"); |
| this.space(); |
| this.print(node.id, node); |
| this.print(node.typeParameters, node); |
| if (node.supertype) { |
| this.token(":"); |
| this.space(); |
| this.print(node.supertype, node); |
| } |
| if (node.impltype) { |
| this.space(); |
| this.token("="); |
| this.space(); |
| this.print(node.impltype, node); |
| } |
| this.semicolon(); |
| } |
| |
| function TypeAnnotation(node) { |
| this.token(":"); |
| this.space(); |
| if (node.optional) this.token("?"); |
| this.print(node.typeAnnotation, node); |
| } |
| |
| function TypeParameter(node) { |
| this._variance(node); |
| |
| this.word(node.name); |
| |
| if (node.bound) { |
| this.print(node.bound, node); |
| } |
| |
| if (node.default) { |
| this.space(); |
| this.token("="); |
| this.space(); |
| this.print(node.default, node); |
| } |
| } |
| |
| function TypeParameterInstantiation(node) { |
| this.token("<"); |
| this.printList(node.params, node, {}); |
| this.token(">"); |
| } |
| |
| exports.TypeParameterDeclaration = TypeParameterInstantiation; |
| function ObjectTypeAnnotation(node) { |
| var _this = this; |
| |
| if (node.exact) { |
| this.token("{|"); |
| } else { |
| this.token("{"); |
| } |
| |
| var props = node.properties.concat(node.callProperties, node.indexers); |
| |
| if (props.length) { |
| this.space(); |
| |
| this.printJoin(props, node, { |
| addNewlines: function addNewlines(leading) { |
| if (leading && !props[0]) return 1; |
| }, |
| |
| indent: true, |
| statement: true, |
| iterator: function iterator() { |
| if (props.length !== 1) { |
| if (_this.format.flowCommaSeparator) { |
| _this.token(","); |
| } else { |
| _this.semicolon(); |
| } |
| _this.space(); |
| } |
| } |
| }); |
| |
| this.space(); |
| } |
| |
| if (node.exact) { |
| this.token("|}"); |
| } else { |
| this.token("}"); |
| } |
| } |
| |
| function ObjectTypeCallProperty(node) { |
| if (node.static) { |
| this.word("static"); |
| this.space(); |
| } |
| this.print(node.value, node); |
| } |
| |
| function ObjectTypeIndexer(node) { |
| if (node.static) { |
| this.word("static"); |
| this.space(); |
| } |
| this._variance(node); |
| this.token("["); |
| this.print(node.id, node); |
| this.token(":"); |
| this.space(); |
| this.print(node.key, node); |
| this.token("]"); |
| this.token(":"); |
| this.space(); |
| this.print(node.value, node); |
| } |
| |
| function ObjectTypeProperty(node) { |
| if (node.static) { |
| this.word("static"); |
| this.space(); |
| } |
| this._variance(node); |
| this.print(node.key, node); |
| if (node.optional) this.token("?"); |
| this.token(":"); |
| this.space(); |
| this.print(node.value, node); |
| } |
| |
| function ObjectTypeSpreadProperty(node) { |
| this.token("..."); |
| this.print(node.argument, node); |
| } |
| |
| function QualifiedTypeIdentifier(node) { |
| this.print(node.qualification, node); |
| this.token("."); |
| this.print(node.id, node); |
| } |
| |
| function orSeparator() { |
| this.space(); |
| this.token("|"); |
| this.space(); |
| } |
| |
| function UnionTypeAnnotation(node) { |
| this.printJoin(node.types, node, { separator: orSeparator }); |
| } |
| |
| function TypeCastExpression(node) { |
| this.token("("); |
| this.print(node.expression, node); |
| this.print(node.typeAnnotation, node); |
| this.token(")"); |
| } |
| |
| function VoidTypeAnnotation() { |
| this.word("void"); |
| } |