| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495 | 
							- "use strict";
 
- var _core = require("./core.js");
 
- var _utils = require("./utils.js");
 
- const defineType = (0, _utils.defineAliasedType)("Flow");
 
- const defineInterfaceishType = name => {
 
-   const isDeclareClass = name === "DeclareClass";
 
-   defineType(name, {
 
-     builder: ["id", "typeParameters", "extends", "body"],
 
-     visitor: ["id", "typeParameters", "extends", ...(isDeclareClass ? ["mixins", "implements"] : []), "body"],
 
-     aliases: ["FlowDeclaration", "Statement", "Declaration"],
 
-     fields: Object.assign({
 
-       id: (0, _utils.validateType)("Identifier"),
 
-       typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"),
 
-       extends: (0, _utils.validateOptional)((0, _utils.arrayOfType)("InterfaceExtends"))
 
-     }, isDeclareClass ? {
 
-       mixins: (0, _utils.validateOptional)((0, _utils.arrayOfType)("InterfaceExtends")),
 
-       implements: (0, _utils.validateOptional)((0, _utils.arrayOfType)("ClassImplements"))
 
-     } : {}, {
 
-       body: (0, _utils.validateType)("ObjectTypeAnnotation")
 
-     })
 
-   });
 
- };
 
- defineType("AnyTypeAnnotation", {
 
-   aliases: ["FlowType", "FlowBaseAnnotation"]
 
- });
 
- defineType("ArrayTypeAnnotation", {
 
-   visitor: ["elementType"],
 
-   aliases: ["FlowType"],
 
-   fields: {
 
-     elementType: (0, _utils.validateType)("FlowType")
 
-   }
 
- });
 
- defineType("BooleanTypeAnnotation", {
 
-   aliases: ["FlowType", "FlowBaseAnnotation"]
 
- });
 
- defineType("BooleanLiteralTypeAnnotation", {
 
-   builder: ["value"],
 
-   aliases: ["FlowType"],
 
-   fields: {
 
-     value: (0, _utils.validate)((0, _utils.assertValueType)("boolean"))
 
-   }
 
- });
 
- defineType("NullLiteralTypeAnnotation", {
 
-   aliases: ["FlowType", "FlowBaseAnnotation"]
 
- });
 
- defineType("ClassImplements", {
 
-   visitor: ["id", "typeParameters"],
 
-   fields: {
 
-     id: (0, _utils.validateType)("Identifier"),
 
-     typeParameters: (0, _utils.validateOptionalType)("TypeParameterInstantiation")
 
-   }
 
- });
 
- defineInterfaceishType("DeclareClass");
 
- defineType("DeclareFunction", {
 
-   builder: ["id"],
 
-   visitor: ["id", "predicate"],
 
-   aliases: ["FlowDeclaration", "Statement", "Declaration"],
 
-   fields: {
 
-     id: (0, _utils.validateType)("Identifier"),
 
-     predicate: (0, _utils.validateOptionalType)("DeclaredPredicate")
 
-   }
 
- });
 
- defineInterfaceishType("DeclareInterface");
 
- defineType("DeclareModule", {
 
-   builder: ["id", "body", "kind"],
 
-   visitor: ["id", "body"],
 
-   aliases: ["FlowDeclaration", "Statement", "Declaration"],
 
-   fields: {
 
-     id: (0, _utils.validateType)("Identifier", "StringLiteral"),
 
-     body: (0, _utils.validateType)("BlockStatement"),
 
-     kind: (0, _utils.validateOptional)((0, _utils.assertOneOf)("CommonJS", "ES"))
 
-   }
 
- });
 
- defineType("DeclareModuleExports", {
 
-   visitor: ["typeAnnotation"],
 
-   aliases: ["FlowDeclaration", "Statement", "Declaration"],
 
-   fields: {
 
-     typeAnnotation: (0, _utils.validateType)("TypeAnnotation")
 
-   }
 
- });
 
- defineType("DeclareTypeAlias", {
 
-   visitor: ["id", "typeParameters", "right"],
 
-   aliases: ["FlowDeclaration", "Statement", "Declaration"],
 
-   fields: {
 
-     id: (0, _utils.validateType)("Identifier"),
 
-     typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"),
 
-     right: (0, _utils.validateType)("FlowType")
 
-   }
 
- });
 
- defineType("DeclareOpaqueType", {
 
-   visitor: ["id", "typeParameters", "supertype"],
 
-   aliases: ["FlowDeclaration", "Statement", "Declaration"],
 
-   fields: {
 
-     id: (0, _utils.validateType)("Identifier"),
 
-     typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"),
 
-     supertype: (0, _utils.validateOptionalType)("FlowType"),
 
-     impltype: (0, _utils.validateOptionalType)("FlowType")
 
-   }
 
- });
 
- defineType("DeclareVariable", {
 
-   visitor: ["id"],
 
-   aliases: ["FlowDeclaration", "Statement", "Declaration"],
 
-   fields: {
 
-     id: (0, _utils.validateType)("Identifier")
 
-   }
 
- });
 
- defineType("DeclareExportDeclaration", {
 
-   visitor: ["declaration", "specifiers", "source", "attributes"],
 
-   aliases: ["FlowDeclaration", "Statement", "Declaration"],
 
-   fields: Object.assign({
 
-     declaration: (0, _utils.validateOptionalType)("Flow"),
 
-     specifiers: (0, _utils.validateOptional)((0, _utils.arrayOfType)("ExportSpecifier", "ExportNamespaceSpecifier")),
 
-     source: (0, _utils.validateOptionalType)("StringLiteral"),
 
-     default: (0, _utils.validateOptional)((0, _utils.assertValueType)("boolean"))
 
-   }, _core.importAttributes)
 
- });
 
- defineType("DeclareExportAllDeclaration", {
 
-   visitor: ["source", "attributes"],
 
-   aliases: ["FlowDeclaration", "Statement", "Declaration"],
 
-   fields: Object.assign({
 
-     source: (0, _utils.validateType)("StringLiteral"),
 
-     exportKind: (0, _utils.validateOptional)((0, _utils.assertOneOf)("type", "value"))
 
-   }, _core.importAttributes)
 
- });
 
- defineType("DeclaredPredicate", {
 
-   visitor: ["value"],
 
-   aliases: ["FlowPredicate"],
 
-   fields: {
 
-     value: (0, _utils.validateType)("Flow")
 
-   }
 
- });
 
- defineType("ExistsTypeAnnotation", {
 
-   aliases: ["FlowType"]
 
- });
 
- defineType("FunctionTypeAnnotation", {
 
-   builder: ["typeParameters", "params", "rest", "returnType"],
 
-   visitor: ["typeParameters", "this", "params", "rest", "returnType"],
 
-   aliases: ["FlowType"],
 
-   fields: {
 
-     typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"),
 
-     params: (0, _utils.validateArrayOfType)("FunctionTypeParam"),
 
-     rest: (0, _utils.validateOptionalType)("FunctionTypeParam"),
 
-     this: (0, _utils.validateOptionalType)("FunctionTypeParam"),
 
-     returnType: (0, _utils.validateType)("FlowType")
 
-   }
 
- });
 
- defineType("FunctionTypeParam", {
 
-   visitor: ["name", "typeAnnotation"],
 
-   fields: {
 
-     name: (0, _utils.validateOptionalType)("Identifier"),
 
-     typeAnnotation: (0, _utils.validateType)("FlowType"),
 
-     optional: (0, _utils.validateOptional)((0, _utils.assertValueType)("boolean"))
 
-   }
 
- });
 
- defineType("GenericTypeAnnotation", {
 
-   visitor: ["id", "typeParameters"],
 
-   aliases: ["FlowType"],
 
-   fields: {
 
-     id: (0, _utils.validateType)("Identifier", "QualifiedTypeIdentifier"),
 
-     typeParameters: (0, _utils.validateOptionalType)("TypeParameterInstantiation")
 
-   }
 
- });
 
- defineType("InferredPredicate", {
 
-   aliases: ["FlowPredicate"]
 
- });
 
- defineType("InterfaceExtends", {
 
-   visitor: ["id", "typeParameters"],
 
-   fields: {
 
-     id: (0, _utils.validateType)("Identifier", "QualifiedTypeIdentifier"),
 
-     typeParameters: (0, _utils.validateOptionalType)("TypeParameterInstantiation")
 
-   }
 
- });
 
- defineInterfaceishType("InterfaceDeclaration");
 
- defineType("InterfaceTypeAnnotation", {
 
-   visitor: ["extends", "body"],
 
-   aliases: ["FlowType"],
 
-   fields: {
 
-     extends: (0, _utils.validateOptional)((0, _utils.arrayOfType)("InterfaceExtends")),
 
-     body: (0, _utils.validateType)("ObjectTypeAnnotation")
 
-   }
 
- });
 
- defineType("IntersectionTypeAnnotation", {
 
-   visitor: ["types"],
 
-   aliases: ["FlowType"],
 
-   fields: {
 
-     types: (0, _utils.validate)((0, _utils.arrayOfType)("FlowType"))
 
-   }
 
- });
 
- defineType("MixedTypeAnnotation", {
 
-   aliases: ["FlowType", "FlowBaseAnnotation"]
 
- });
 
- defineType("EmptyTypeAnnotation", {
 
-   aliases: ["FlowType", "FlowBaseAnnotation"]
 
- });
 
- defineType("NullableTypeAnnotation", {
 
-   visitor: ["typeAnnotation"],
 
-   aliases: ["FlowType"],
 
-   fields: {
 
-     typeAnnotation: (0, _utils.validateType)("FlowType")
 
-   }
 
- });
 
- defineType("NumberLiteralTypeAnnotation", {
 
-   builder: ["value"],
 
-   aliases: ["FlowType"],
 
-   fields: {
 
-     value: (0, _utils.validate)((0, _utils.assertValueType)("number"))
 
-   }
 
- });
 
- defineType("NumberTypeAnnotation", {
 
-   aliases: ["FlowType", "FlowBaseAnnotation"]
 
- });
 
- defineType("ObjectTypeAnnotation", {
 
-   visitor: ["properties", "indexers", "callProperties", "internalSlots"],
 
-   aliases: ["FlowType"],
 
-   builder: ["properties", "indexers", "callProperties", "internalSlots", "exact"],
 
-   fields: {
 
-     properties: (0, _utils.validate)((0, _utils.arrayOfType)("ObjectTypeProperty", "ObjectTypeSpreadProperty")),
 
-     indexers: {
 
-       validate: (0, _utils.arrayOfType)("ObjectTypeIndexer"),
 
-       optional: true,
 
-       default: []
 
-     },
 
-     callProperties: {
 
-       validate: (0, _utils.arrayOfType)("ObjectTypeCallProperty"),
 
-       optional: true,
 
-       default: []
 
-     },
 
-     internalSlots: {
 
-       validate: (0, _utils.arrayOfType)("ObjectTypeInternalSlot"),
 
-       optional: true,
 
-       default: []
 
-     },
 
-     exact: {
 
-       validate: (0, _utils.assertValueType)("boolean"),
 
-       default: false
 
-     },
 
-     inexact: (0, _utils.validateOptional)((0, _utils.assertValueType)("boolean"))
 
-   }
 
- });
 
- defineType("ObjectTypeInternalSlot", {
 
-   visitor: ["id", "value"],
 
-   builder: ["id", "value", "optional", "static", "method"],
 
-   aliases: ["UserWhitespacable"],
 
-   fields: {
 
-     id: (0, _utils.validateType)("Identifier"),
 
-     value: (0, _utils.validateType)("FlowType"),
 
-     optional: (0, _utils.validate)((0, _utils.assertValueType)("boolean")),
 
-     static: (0, _utils.validate)((0, _utils.assertValueType)("boolean")),
 
-     method: (0, _utils.validate)((0, _utils.assertValueType)("boolean"))
 
-   }
 
- });
 
- defineType("ObjectTypeCallProperty", {
 
-   visitor: ["value"],
 
-   aliases: ["UserWhitespacable"],
 
-   fields: {
 
-     value: (0, _utils.validateType)("FlowType"),
 
-     static: (0, _utils.validate)((0, _utils.assertValueType)("boolean"))
 
-   }
 
- });
 
- defineType("ObjectTypeIndexer", {
 
-   visitor: ["variance", "id", "key", "value"],
 
-   builder: ["id", "key", "value", "variance"],
 
-   aliases: ["UserWhitespacable"],
 
-   fields: {
 
-     id: (0, _utils.validateOptionalType)("Identifier"),
 
-     key: (0, _utils.validateType)("FlowType"),
 
-     value: (0, _utils.validateType)("FlowType"),
 
-     static: (0, _utils.validate)((0, _utils.assertValueType)("boolean")),
 
-     variance: (0, _utils.validateOptionalType)("Variance")
 
-   }
 
- });
 
- defineType("ObjectTypeProperty", {
 
-   visitor: ["key", "value", "variance"],
 
-   aliases: ["UserWhitespacable"],
 
-   fields: {
 
-     key: (0, _utils.validateType)("Identifier", "StringLiteral"),
 
-     value: (0, _utils.validateType)("FlowType"),
 
-     kind: (0, _utils.validate)((0, _utils.assertOneOf)("init", "get", "set")),
 
-     static: (0, _utils.validate)((0, _utils.assertValueType)("boolean")),
 
-     proto: (0, _utils.validate)((0, _utils.assertValueType)("boolean")),
 
-     optional: (0, _utils.validate)((0, _utils.assertValueType)("boolean")),
 
-     variance: (0, _utils.validateOptionalType)("Variance"),
 
-     method: (0, _utils.validate)((0, _utils.assertValueType)("boolean"))
 
-   }
 
- });
 
- defineType("ObjectTypeSpreadProperty", {
 
-   visitor: ["argument"],
 
-   aliases: ["UserWhitespacable"],
 
-   fields: {
 
-     argument: (0, _utils.validateType)("FlowType")
 
-   }
 
- });
 
- defineType("OpaqueType", {
 
-   visitor: ["id", "typeParameters", "supertype", "impltype"],
 
-   aliases: ["FlowDeclaration", "Statement", "Declaration"],
 
-   fields: {
 
-     id: (0, _utils.validateType)("Identifier"),
 
-     typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"),
 
-     supertype: (0, _utils.validateOptionalType)("FlowType"),
 
-     impltype: (0, _utils.validateType)("FlowType")
 
-   }
 
- });
 
- defineType("QualifiedTypeIdentifier", {
 
-   visitor: ["qualification", "id"],
 
-   builder: ["id", "qualification"],
 
-   fields: {
 
-     id: (0, _utils.validateType)("Identifier"),
 
-     qualification: (0, _utils.validateType)("Identifier", "QualifiedTypeIdentifier")
 
-   }
 
- });
 
- defineType("StringLiteralTypeAnnotation", {
 
-   builder: ["value"],
 
-   aliases: ["FlowType"],
 
-   fields: {
 
-     value: (0, _utils.validate)((0, _utils.assertValueType)("string"))
 
-   }
 
- });
 
- defineType("StringTypeAnnotation", {
 
-   aliases: ["FlowType", "FlowBaseAnnotation"]
 
- });
 
- defineType("SymbolTypeAnnotation", {
 
-   aliases: ["FlowType", "FlowBaseAnnotation"]
 
- });
 
- defineType("ThisTypeAnnotation", {
 
-   aliases: ["FlowType", "FlowBaseAnnotation"]
 
- });
 
- defineType("TupleTypeAnnotation", {
 
-   visitor: ["types"],
 
-   aliases: ["FlowType"],
 
-   fields: {
 
-     types: (0, _utils.validate)((0, _utils.arrayOfType)("FlowType"))
 
-   }
 
- });
 
- defineType("TypeofTypeAnnotation", {
 
-   visitor: ["argument"],
 
-   aliases: ["FlowType"],
 
-   fields: {
 
-     argument: (0, _utils.validateType)("FlowType")
 
-   }
 
- });
 
- defineType("TypeAlias", {
 
-   visitor: ["id", "typeParameters", "right"],
 
-   aliases: ["FlowDeclaration", "Statement", "Declaration"],
 
-   fields: {
 
-     id: (0, _utils.validateType)("Identifier"),
 
-     typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"),
 
-     right: (0, _utils.validateType)("FlowType")
 
-   }
 
- });
 
- defineType("TypeAnnotation", {
 
-   visitor: ["typeAnnotation"],
 
-   fields: {
 
-     typeAnnotation: (0, _utils.validateType)("FlowType")
 
-   }
 
- });
 
- defineType("TypeCastExpression", {
 
-   visitor: ["expression", "typeAnnotation"],
 
-   aliases: ["ExpressionWrapper", "Expression"],
 
-   fields: {
 
-     expression: (0, _utils.validateType)("Expression"),
 
-     typeAnnotation: (0, _utils.validateType)("TypeAnnotation")
 
-   }
 
- });
 
- defineType("TypeParameter", {
 
-   visitor: ["bound", "default", "variance"],
 
-   fields: {
 
-     name: (0, _utils.validate)((0, _utils.assertValueType)("string")),
 
-     bound: (0, _utils.validateOptionalType)("TypeAnnotation"),
 
-     default: (0, _utils.validateOptionalType)("FlowType"),
 
-     variance: (0, _utils.validateOptionalType)("Variance")
 
-   }
 
- });
 
- defineType("TypeParameterDeclaration", {
 
-   visitor: ["params"],
 
-   fields: {
 
-     params: (0, _utils.validate)((0, _utils.arrayOfType)("TypeParameter"))
 
-   }
 
- });
 
- defineType("TypeParameterInstantiation", {
 
-   visitor: ["params"],
 
-   fields: {
 
-     params: (0, _utils.validate)((0, _utils.arrayOfType)("FlowType"))
 
-   }
 
- });
 
- defineType("UnionTypeAnnotation", {
 
-   visitor: ["types"],
 
-   aliases: ["FlowType"],
 
-   fields: {
 
-     types: (0, _utils.validate)((0, _utils.arrayOfType)("FlowType"))
 
-   }
 
- });
 
- defineType("Variance", {
 
-   builder: ["kind"],
 
-   fields: {
 
-     kind: (0, _utils.validate)((0, _utils.assertOneOf)("minus", "plus"))
 
-   }
 
- });
 
- defineType("VoidTypeAnnotation", {
 
-   aliases: ["FlowType", "FlowBaseAnnotation"]
 
- });
 
- defineType("EnumDeclaration", {
 
-   aliases: ["Statement", "Declaration"],
 
-   visitor: ["id", "body"],
 
-   fields: {
 
-     id: (0, _utils.validateType)("Identifier"),
 
-     body: (0, _utils.validateType)("EnumBooleanBody", "EnumNumberBody", "EnumStringBody", "EnumSymbolBody")
 
-   }
 
- });
 
- defineType("EnumBooleanBody", {
 
-   aliases: ["EnumBody"],
 
-   visitor: ["members"],
 
-   fields: {
 
-     explicitType: (0, _utils.validate)((0, _utils.assertValueType)("boolean")),
 
-     members: (0, _utils.validateArrayOfType)("EnumBooleanMember"),
 
-     hasUnknownMembers: (0, _utils.validate)((0, _utils.assertValueType)("boolean"))
 
-   }
 
- });
 
- defineType("EnumNumberBody", {
 
-   aliases: ["EnumBody"],
 
-   visitor: ["members"],
 
-   fields: {
 
-     explicitType: (0, _utils.validate)((0, _utils.assertValueType)("boolean")),
 
-     members: (0, _utils.validateArrayOfType)("EnumNumberMember"),
 
-     hasUnknownMembers: (0, _utils.validate)((0, _utils.assertValueType)("boolean"))
 
-   }
 
- });
 
- defineType("EnumStringBody", {
 
-   aliases: ["EnumBody"],
 
-   visitor: ["members"],
 
-   fields: {
 
-     explicitType: (0, _utils.validate)((0, _utils.assertValueType)("boolean")),
 
-     members: (0, _utils.validateArrayOfType)("EnumStringMember", "EnumDefaultedMember"),
 
-     hasUnknownMembers: (0, _utils.validate)((0, _utils.assertValueType)("boolean"))
 
-   }
 
- });
 
- defineType("EnumSymbolBody", {
 
-   aliases: ["EnumBody"],
 
-   visitor: ["members"],
 
-   fields: {
 
-     members: (0, _utils.validateArrayOfType)("EnumDefaultedMember"),
 
-     hasUnknownMembers: (0, _utils.validate)((0, _utils.assertValueType)("boolean"))
 
-   }
 
- });
 
- defineType("EnumBooleanMember", {
 
-   aliases: ["EnumMember"],
 
-   builder: ["id"],
 
-   visitor: ["id", "init"],
 
-   fields: {
 
-     id: (0, _utils.validateType)("Identifier"),
 
-     init: (0, _utils.validateType)("BooleanLiteral")
 
-   }
 
- });
 
- defineType("EnumNumberMember", {
 
-   aliases: ["EnumMember"],
 
-   visitor: ["id", "init"],
 
-   fields: {
 
-     id: (0, _utils.validateType)("Identifier"),
 
-     init: (0, _utils.validateType)("NumericLiteral")
 
-   }
 
- });
 
- defineType("EnumStringMember", {
 
-   aliases: ["EnumMember"],
 
-   visitor: ["id", "init"],
 
-   fields: {
 
-     id: (0, _utils.validateType)("Identifier"),
 
-     init: (0, _utils.validateType)("StringLiteral")
 
-   }
 
- });
 
- defineType("EnumDefaultedMember", {
 
-   aliases: ["EnumMember"],
 
-   visitor: ["id"],
 
-   fields: {
 
-     id: (0, _utils.validateType)("Identifier")
 
-   }
 
- });
 
- defineType("IndexedAccessType", {
 
-   visitor: ["objectType", "indexType"],
 
-   aliases: ["FlowType"],
 
-   fields: {
 
-     objectType: (0, _utils.validateType)("FlowType"),
 
-     indexType: (0, _utils.validateType)("FlowType")
 
-   }
 
- });
 
- defineType("OptionalIndexedAccessType", {
 
-   visitor: ["objectType", "indexType"],
 
-   aliases: ["FlowType"],
 
-   fields: {
 
-     objectType: (0, _utils.validateType)("FlowType"),
 
-     indexType: (0, _utils.validateType)("FlowType"),
 
-     optional: (0, _utils.validate)((0, _utils.assertValueType)("boolean"))
 
-   }
 
- });
 
- //# sourceMappingURL=flow.js.map
 
 
  |