| 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
|