Software zum Installieren eines Smart-Mirror Frameworks , zum Nutzen von hochschulrelevanten Informationen, auf einem Raspberry-Pi.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

flow.js 17KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480
  1. "use strict";
  2. var _utils = require("./utils");
  3. const defineInterfaceishType = (name, typeParameterType = "TypeParameterDeclaration") => {
  4. (0, _utils.default)(name, {
  5. builder: ["id", "typeParameters", "extends", "body"],
  6. visitor: ["id", "typeParameters", "extends", "mixins", "implements", "body"],
  7. aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"],
  8. fields: {
  9. id: (0, _utils.validateType)("Identifier"),
  10. typeParameters: (0, _utils.validateOptionalType)(typeParameterType),
  11. extends: (0, _utils.validateOptional)((0, _utils.arrayOfType)("InterfaceExtends")),
  12. mixins: (0, _utils.validateOptional)((0, _utils.arrayOfType)("InterfaceExtends")),
  13. implements: (0, _utils.validateOptional)((0, _utils.arrayOfType)("ClassImplements")),
  14. body: (0, _utils.validateType)("ObjectTypeAnnotation")
  15. }
  16. });
  17. };
  18. (0, _utils.default)("AnyTypeAnnotation", {
  19. aliases: ["Flow", "FlowType", "FlowBaseAnnotation"]
  20. });
  21. (0, _utils.default)("ArrayTypeAnnotation", {
  22. visitor: ["elementType"],
  23. aliases: ["Flow", "FlowType"],
  24. fields: {
  25. elementType: (0, _utils.validateType)("FlowType")
  26. }
  27. });
  28. (0, _utils.default)("BooleanTypeAnnotation", {
  29. aliases: ["Flow", "FlowType", "FlowBaseAnnotation"]
  30. });
  31. (0, _utils.default)("BooleanLiteralTypeAnnotation", {
  32. builder: ["value"],
  33. aliases: ["Flow", "FlowType"],
  34. fields: {
  35. value: (0, _utils.validate)((0, _utils.assertValueType)("boolean"))
  36. }
  37. });
  38. (0, _utils.default)("NullLiteralTypeAnnotation", {
  39. aliases: ["Flow", "FlowType", "FlowBaseAnnotation"]
  40. });
  41. (0, _utils.default)("ClassImplements", {
  42. visitor: ["id", "typeParameters"],
  43. aliases: ["Flow"],
  44. fields: {
  45. id: (0, _utils.validateType)("Identifier"),
  46. typeParameters: (0, _utils.validateOptionalType)("TypeParameterInstantiation")
  47. }
  48. });
  49. defineInterfaceishType("DeclareClass");
  50. (0, _utils.default)("DeclareFunction", {
  51. visitor: ["id"],
  52. aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"],
  53. fields: {
  54. id: (0, _utils.validateType)("Identifier"),
  55. predicate: (0, _utils.validateOptionalType)("DeclaredPredicate")
  56. }
  57. });
  58. defineInterfaceishType("DeclareInterface");
  59. (0, _utils.default)("DeclareModule", {
  60. builder: ["id", "body", "kind"],
  61. visitor: ["id", "body"],
  62. aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"],
  63. fields: {
  64. id: (0, _utils.validateType)(["Identifier", "StringLiteral"]),
  65. body: (0, _utils.validateType)("BlockStatement"),
  66. kind: (0, _utils.validateOptional)((0, _utils.assertOneOf)("CommonJS", "ES"))
  67. }
  68. });
  69. (0, _utils.default)("DeclareModuleExports", {
  70. visitor: ["typeAnnotation"],
  71. aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"],
  72. fields: {
  73. typeAnnotation: (0, _utils.validateType)("TypeAnnotation")
  74. }
  75. });
  76. (0, _utils.default)("DeclareTypeAlias", {
  77. visitor: ["id", "typeParameters", "right"],
  78. aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"],
  79. fields: {
  80. id: (0, _utils.validateType)("Identifier"),
  81. typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"),
  82. right: (0, _utils.validateType)("FlowType")
  83. }
  84. });
  85. (0, _utils.default)("DeclareOpaqueType", {
  86. visitor: ["id", "typeParameters", "supertype"],
  87. aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"],
  88. fields: {
  89. id: (0, _utils.validateType)("Identifier"),
  90. typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"),
  91. supertype: (0, _utils.validateOptionalType)("FlowType")
  92. }
  93. });
  94. (0, _utils.default)("DeclareVariable", {
  95. visitor: ["id"],
  96. aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"],
  97. fields: {
  98. id: (0, _utils.validateType)("Identifier")
  99. }
  100. });
  101. (0, _utils.default)("DeclareExportDeclaration", {
  102. visitor: ["declaration", "specifiers", "source"],
  103. aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"],
  104. fields: {
  105. declaration: (0, _utils.validateOptionalType)("Flow"),
  106. specifiers: (0, _utils.validateOptional)((0, _utils.arrayOfType)(["ExportSpecifier", "ExportNamespaceSpecifier"])),
  107. source: (0, _utils.validateOptionalType)("StringLiteral"),
  108. default: (0, _utils.validateOptional)((0, _utils.assertValueType)("boolean"))
  109. }
  110. });
  111. (0, _utils.default)("DeclareExportAllDeclaration", {
  112. visitor: ["source"],
  113. aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"],
  114. fields: {
  115. source: (0, _utils.validateType)("StringLiteral"),
  116. exportKind: (0, _utils.validateOptional)((0, _utils.assertOneOf)("type", "value"))
  117. }
  118. });
  119. (0, _utils.default)("DeclaredPredicate", {
  120. visitor: ["value"],
  121. aliases: ["Flow", "FlowPredicate"],
  122. fields: {
  123. value: (0, _utils.validateType)("Flow")
  124. }
  125. });
  126. (0, _utils.default)("ExistsTypeAnnotation", {
  127. aliases: ["Flow", "FlowType"]
  128. });
  129. (0, _utils.default)("FunctionTypeAnnotation", {
  130. visitor: ["typeParameters", "params", "rest", "returnType"],
  131. aliases: ["Flow", "FlowType"],
  132. fields: {
  133. typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"),
  134. params: (0, _utils.validate)((0, _utils.arrayOfType)("FunctionTypeParam")),
  135. rest: (0, _utils.validateOptionalType)("FunctionTypeParam"),
  136. this: (0, _utils.validateOptionalType)("FunctionTypeParam"),
  137. returnType: (0, _utils.validateType)("FlowType")
  138. }
  139. });
  140. (0, _utils.default)("FunctionTypeParam", {
  141. visitor: ["name", "typeAnnotation"],
  142. aliases: ["Flow"],
  143. fields: {
  144. name: (0, _utils.validateOptionalType)("Identifier"),
  145. typeAnnotation: (0, _utils.validateType)("FlowType"),
  146. optional: (0, _utils.validateOptional)((0, _utils.assertValueType)("boolean"))
  147. }
  148. });
  149. (0, _utils.default)("GenericTypeAnnotation", {
  150. visitor: ["id", "typeParameters"],
  151. aliases: ["Flow", "FlowType"],
  152. fields: {
  153. id: (0, _utils.validateType)(["Identifier", "QualifiedTypeIdentifier"]),
  154. typeParameters: (0, _utils.validateOptionalType)("TypeParameterInstantiation")
  155. }
  156. });
  157. (0, _utils.default)("InferredPredicate", {
  158. aliases: ["Flow", "FlowPredicate"]
  159. });
  160. (0, _utils.default)("InterfaceExtends", {
  161. visitor: ["id", "typeParameters"],
  162. aliases: ["Flow"],
  163. fields: {
  164. id: (0, _utils.validateType)(["Identifier", "QualifiedTypeIdentifier"]),
  165. typeParameters: (0, _utils.validateOptionalType)("TypeParameterInstantiation")
  166. }
  167. });
  168. defineInterfaceishType("InterfaceDeclaration");
  169. (0, _utils.default)("InterfaceTypeAnnotation", {
  170. visitor: ["extends", "body"],
  171. aliases: ["Flow", "FlowType"],
  172. fields: {
  173. extends: (0, _utils.validateOptional)((0, _utils.arrayOfType)("InterfaceExtends")),
  174. body: (0, _utils.validateType)("ObjectTypeAnnotation")
  175. }
  176. });
  177. (0, _utils.default)("IntersectionTypeAnnotation", {
  178. visitor: ["types"],
  179. aliases: ["Flow", "FlowType"],
  180. fields: {
  181. types: (0, _utils.validate)((0, _utils.arrayOfType)("FlowType"))
  182. }
  183. });
  184. (0, _utils.default)("MixedTypeAnnotation", {
  185. aliases: ["Flow", "FlowType", "FlowBaseAnnotation"]
  186. });
  187. (0, _utils.default)("EmptyTypeAnnotation", {
  188. aliases: ["Flow", "FlowType", "FlowBaseAnnotation"]
  189. });
  190. (0, _utils.default)("NullableTypeAnnotation", {
  191. visitor: ["typeAnnotation"],
  192. aliases: ["Flow", "FlowType"],
  193. fields: {
  194. typeAnnotation: (0, _utils.validateType)("FlowType")
  195. }
  196. });
  197. (0, _utils.default)("NumberLiteralTypeAnnotation", {
  198. builder: ["value"],
  199. aliases: ["Flow", "FlowType"],
  200. fields: {
  201. value: (0, _utils.validate)((0, _utils.assertValueType)("number"))
  202. }
  203. });
  204. (0, _utils.default)("NumberTypeAnnotation", {
  205. aliases: ["Flow", "FlowType", "FlowBaseAnnotation"]
  206. });
  207. (0, _utils.default)("ObjectTypeAnnotation", {
  208. visitor: ["properties", "indexers", "callProperties", "internalSlots"],
  209. aliases: ["Flow", "FlowType"],
  210. builder: ["properties", "indexers", "callProperties", "internalSlots", "exact"],
  211. fields: {
  212. properties: (0, _utils.validate)((0, _utils.arrayOfType)(["ObjectTypeProperty", "ObjectTypeSpreadProperty"])),
  213. indexers: (0, _utils.validateOptional)((0, _utils.arrayOfType)("ObjectTypeIndexer")),
  214. callProperties: (0, _utils.validateOptional)((0, _utils.arrayOfType)("ObjectTypeCallProperty")),
  215. internalSlots: (0, _utils.validateOptional)((0, _utils.arrayOfType)("ObjectTypeInternalSlot")),
  216. exact: {
  217. validate: (0, _utils.assertValueType)("boolean"),
  218. default: false
  219. },
  220. inexact: (0, _utils.validateOptional)((0, _utils.assertValueType)("boolean"))
  221. }
  222. });
  223. (0, _utils.default)("ObjectTypeInternalSlot", {
  224. visitor: ["id", "value", "optional", "static", "method"],
  225. aliases: ["Flow", "UserWhitespacable"],
  226. fields: {
  227. id: (0, _utils.validateType)("Identifier"),
  228. value: (0, _utils.validateType)("FlowType"),
  229. optional: (0, _utils.validate)((0, _utils.assertValueType)("boolean")),
  230. static: (0, _utils.validate)((0, _utils.assertValueType)("boolean")),
  231. method: (0, _utils.validate)((0, _utils.assertValueType)("boolean"))
  232. }
  233. });
  234. (0, _utils.default)("ObjectTypeCallProperty", {
  235. visitor: ["value"],
  236. aliases: ["Flow", "UserWhitespacable"],
  237. fields: {
  238. value: (0, _utils.validateType)("FlowType"),
  239. static: (0, _utils.validate)((0, _utils.assertValueType)("boolean"))
  240. }
  241. });
  242. (0, _utils.default)("ObjectTypeIndexer", {
  243. visitor: ["id", "key", "value", "variance"],
  244. aliases: ["Flow", "UserWhitespacable"],
  245. fields: {
  246. id: (0, _utils.validateOptionalType)("Identifier"),
  247. key: (0, _utils.validateType)("FlowType"),
  248. value: (0, _utils.validateType)("FlowType"),
  249. static: (0, _utils.validate)((0, _utils.assertValueType)("boolean")),
  250. variance: (0, _utils.validateOptionalType)("Variance")
  251. }
  252. });
  253. (0, _utils.default)("ObjectTypeProperty", {
  254. visitor: ["key", "value", "variance"],
  255. aliases: ["Flow", "UserWhitespacable"],
  256. fields: {
  257. key: (0, _utils.validateType)(["Identifier", "StringLiteral"]),
  258. value: (0, _utils.validateType)("FlowType"),
  259. kind: (0, _utils.validate)((0, _utils.assertOneOf)("init", "get", "set")),
  260. static: (0, _utils.validate)((0, _utils.assertValueType)("boolean")),
  261. proto: (0, _utils.validate)((0, _utils.assertValueType)("boolean")),
  262. optional: (0, _utils.validate)((0, _utils.assertValueType)("boolean")),
  263. variance: (0, _utils.validateOptionalType)("Variance"),
  264. method: (0, _utils.validate)((0, _utils.assertValueType)("boolean"))
  265. }
  266. });
  267. (0, _utils.default)("ObjectTypeSpreadProperty", {
  268. visitor: ["argument"],
  269. aliases: ["Flow", "UserWhitespacable"],
  270. fields: {
  271. argument: (0, _utils.validateType)("FlowType")
  272. }
  273. });
  274. (0, _utils.default)("OpaqueType", {
  275. visitor: ["id", "typeParameters", "supertype", "impltype"],
  276. aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"],
  277. fields: {
  278. id: (0, _utils.validateType)("Identifier"),
  279. typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"),
  280. supertype: (0, _utils.validateOptionalType)("FlowType"),
  281. impltype: (0, _utils.validateType)("FlowType")
  282. }
  283. });
  284. (0, _utils.default)("QualifiedTypeIdentifier", {
  285. visitor: ["id", "qualification"],
  286. aliases: ["Flow"],
  287. fields: {
  288. id: (0, _utils.validateType)("Identifier"),
  289. qualification: (0, _utils.validateType)(["Identifier", "QualifiedTypeIdentifier"])
  290. }
  291. });
  292. (0, _utils.default)("StringLiteralTypeAnnotation", {
  293. builder: ["value"],
  294. aliases: ["Flow", "FlowType"],
  295. fields: {
  296. value: (0, _utils.validate)((0, _utils.assertValueType)("string"))
  297. }
  298. });
  299. (0, _utils.default)("StringTypeAnnotation", {
  300. aliases: ["Flow", "FlowType", "FlowBaseAnnotation"]
  301. });
  302. (0, _utils.default)("SymbolTypeAnnotation", {
  303. aliases: ["Flow", "FlowType", "FlowBaseAnnotation"]
  304. });
  305. (0, _utils.default)("ThisTypeAnnotation", {
  306. aliases: ["Flow", "FlowType", "FlowBaseAnnotation"]
  307. });
  308. (0, _utils.default)("TupleTypeAnnotation", {
  309. visitor: ["types"],
  310. aliases: ["Flow", "FlowType"],
  311. fields: {
  312. types: (0, _utils.validate)((0, _utils.arrayOfType)("FlowType"))
  313. }
  314. });
  315. (0, _utils.default)("TypeofTypeAnnotation", {
  316. visitor: ["argument"],
  317. aliases: ["Flow", "FlowType"],
  318. fields: {
  319. argument: (0, _utils.validateType)("FlowType")
  320. }
  321. });
  322. (0, _utils.default)("TypeAlias", {
  323. visitor: ["id", "typeParameters", "right"],
  324. aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"],
  325. fields: {
  326. id: (0, _utils.validateType)("Identifier"),
  327. typeParameters: (0, _utils.validateOptionalType)("TypeParameterDeclaration"),
  328. right: (0, _utils.validateType)("FlowType")
  329. }
  330. });
  331. (0, _utils.default)("TypeAnnotation", {
  332. aliases: ["Flow"],
  333. visitor: ["typeAnnotation"],
  334. fields: {
  335. typeAnnotation: (0, _utils.validateType)("FlowType")
  336. }
  337. });
  338. (0, _utils.default)("TypeCastExpression", {
  339. visitor: ["expression", "typeAnnotation"],
  340. aliases: ["Flow", "ExpressionWrapper", "Expression"],
  341. fields: {
  342. expression: (0, _utils.validateType)("Expression"),
  343. typeAnnotation: (0, _utils.validateType)("TypeAnnotation")
  344. }
  345. });
  346. (0, _utils.default)("TypeParameter", {
  347. aliases: ["Flow"],
  348. visitor: ["bound", "default", "variance"],
  349. fields: {
  350. name: (0, _utils.validate)((0, _utils.assertValueType)("string")),
  351. bound: (0, _utils.validateOptionalType)("TypeAnnotation"),
  352. default: (0, _utils.validateOptionalType)("FlowType"),
  353. variance: (0, _utils.validateOptionalType)("Variance")
  354. }
  355. });
  356. (0, _utils.default)("TypeParameterDeclaration", {
  357. aliases: ["Flow"],
  358. visitor: ["params"],
  359. fields: {
  360. params: (0, _utils.validate)((0, _utils.arrayOfType)("TypeParameter"))
  361. }
  362. });
  363. (0, _utils.default)("TypeParameterInstantiation", {
  364. aliases: ["Flow"],
  365. visitor: ["params"],
  366. fields: {
  367. params: (0, _utils.validate)((0, _utils.arrayOfType)("FlowType"))
  368. }
  369. });
  370. (0, _utils.default)("UnionTypeAnnotation", {
  371. visitor: ["types"],
  372. aliases: ["Flow", "FlowType"],
  373. fields: {
  374. types: (0, _utils.validate)((0, _utils.arrayOfType)("FlowType"))
  375. }
  376. });
  377. (0, _utils.default)("Variance", {
  378. aliases: ["Flow"],
  379. builder: ["kind"],
  380. fields: {
  381. kind: (0, _utils.validate)((0, _utils.assertOneOf)("minus", "plus"))
  382. }
  383. });
  384. (0, _utils.default)("VoidTypeAnnotation", {
  385. aliases: ["Flow", "FlowType", "FlowBaseAnnotation"]
  386. });
  387. (0, _utils.default)("EnumDeclaration", {
  388. aliases: ["Statement", "Declaration"],
  389. visitor: ["id", "body"],
  390. fields: {
  391. id: (0, _utils.validateType)("Identifier"),
  392. body: (0, _utils.validateType)(["EnumBooleanBody", "EnumNumberBody", "EnumStringBody", "EnumSymbolBody"])
  393. }
  394. });
  395. (0, _utils.default)("EnumBooleanBody", {
  396. aliases: ["EnumBody"],
  397. visitor: ["members"],
  398. fields: {
  399. explicitType: (0, _utils.validate)((0, _utils.assertValueType)("boolean")),
  400. members: (0, _utils.validateArrayOfType)("EnumBooleanMember"),
  401. hasUnknownMembers: (0, _utils.validate)((0, _utils.assertValueType)("boolean"))
  402. }
  403. });
  404. (0, _utils.default)("EnumNumberBody", {
  405. aliases: ["EnumBody"],
  406. visitor: ["members"],
  407. fields: {
  408. explicitType: (0, _utils.validate)((0, _utils.assertValueType)("boolean")),
  409. members: (0, _utils.validateArrayOfType)("EnumNumberMember"),
  410. hasUnknownMembers: (0, _utils.validate)((0, _utils.assertValueType)("boolean"))
  411. }
  412. });
  413. (0, _utils.default)("EnumStringBody", {
  414. aliases: ["EnumBody"],
  415. visitor: ["members"],
  416. fields: {
  417. explicitType: (0, _utils.validate)((0, _utils.assertValueType)("boolean")),
  418. members: (0, _utils.validateArrayOfType)(["EnumStringMember", "EnumDefaultedMember"]),
  419. hasUnknownMembers: (0, _utils.validate)((0, _utils.assertValueType)("boolean"))
  420. }
  421. });
  422. (0, _utils.default)("EnumSymbolBody", {
  423. aliases: ["EnumBody"],
  424. visitor: ["members"],
  425. fields: {
  426. members: (0, _utils.validateArrayOfType)("EnumDefaultedMember"),
  427. hasUnknownMembers: (0, _utils.validate)((0, _utils.assertValueType)("boolean"))
  428. }
  429. });
  430. (0, _utils.default)("EnumBooleanMember", {
  431. aliases: ["EnumMember"],
  432. visitor: ["id"],
  433. fields: {
  434. id: (0, _utils.validateType)("Identifier"),
  435. init: (0, _utils.validateType)("BooleanLiteral")
  436. }
  437. });
  438. (0, _utils.default)("EnumNumberMember", {
  439. aliases: ["EnumMember"],
  440. visitor: ["id", "init"],
  441. fields: {
  442. id: (0, _utils.validateType)("Identifier"),
  443. init: (0, _utils.validateType)("NumericLiteral")
  444. }
  445. });
  446. (0, _utils.default)("EnumStringMember", {
  447. aliases: ["EnumMember"],
  448. visitor: ["id", "init"],
  449. fields: {
  450. id: (0, _utils.validateType)("Identifier"),
  451. init: (0, _utils.validateType)("StringLiteral")
  452. }
  453. });
  454. (0, _utils.default)("EnumDefaultedMember", {
  455. aliases: ["EnumMember"],
  456. visitor: ["id"],
  457. fields: {
  458. id: (0, _utils.validateType)("Identifier")
  459. }
  460. });
  461. (0, _utils.default)("IndexedAccessType", {
  462. visitor: ["objectType", "indexType"],
  463. aliases: ["Flow", "FlowType"],
  464. fields: {
  465. objectType: (0, _utils.validateType)("FlowType"),
  466. indexType: (0, _utils.validateType)("FlowType")
  467. }
  468. });
  469. (0, _utils.default)("OptionalIndexedAccessType", {
  470. visitor: ["objectType", "indexType"],
  471. aliases: ["Flow", "FlowType"],
  472. fields: {
  473. objectType: (0, _utils.validateType)("FlowType"),
  474. indexType: (0, _utils.validateType)("FlowType"),
  475. optional: (0, _utils.validate)((0, _utils.assertValueType)("boolean"))
  476. }
  477. });