brighterscript 0.66.0-alpha.9 → 0.67.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (472) hide show
  1. package/CHANGELOG.md +123 -73
  2. package/README.md +14 -418
  3. package/dist/BsConfig.d.ts +25 -2
  4. package/dist/Cache.js +3 -3
  5. package/dist/Cache.js.map +1 -1
  6. package/dist/CodeActionUtil.d.ts +3 -3
  7. package/dist/CodeActionUtil.js.map +1 -1
  8. package/dist/CommentFlagProcessor.d.ts +3 -4
  9. package/dist/CommentFlagProcessor.js +4 -3
  10. package/dist/CommentFlagProcessor.js.map +1 -1
  11. package/dist/DependencyGraph.js +8 -8
  12. package/dist/DependencyGraph.js.map +1 -1
  13. package/dist/DiagnosticFilterer.d.ts +8 -4
  14. package/dist/DiagnosticFilterer.js +71 -38
  15. package/dist/DiagnosticFilterer.js.map +1 -1
  16. package/dist/DiagnosticMessages.d.ts +15 -36
  17. package/dist/DiagnosticMessages.js +15 -61
  18. package/dist/DiagnosticMessages.js.map +1 -1
  19. package/dist/DiagnosticSeverityAdjuster.js +3 -0
  20. package/dist/DiagnosticSeverityAdjuster.js.map +1 -1
  21. package/dist/FunctionScope.d.ts +2 -3
  22. package/dist/FunctionScope.js +0 -3
  23. package/dist/FunctionScope.js.map +1 -1
  24. package/dist/LanguageServer.d.ts +1 -2
  25. package/dist/LanguageServer.js +31 -35
  26. package/dist/LanguageServer.js.map +1 -1
  27. package/dist/Logger.d.ts +5 -9
  28. package/dist/Logger.js +18 -22
  29. package/dist/Logger.js.map +1 -1
  30. package/dist/PluginInterface.d.ts +13 -15
  31. package/dist/PluginInterface.js +16 -70
  32. package/dist/PluginInterface.js.map +1 -1
  33. package/dist/Program.d.ts +105 -138
  34. package/dist/Program.js +479 -702
  35. package/dist/Program.js.map +1 -1
  36. package/dist/ProgramBuilder.d.ts +8 -19
  37. package/dist/ProgramBuilder.js +85 -89
  38. package/dist/ProgramBuilder.js.map +1 -1
  39. package/dist/Scope.d.ts +56 -46
  40. package/dist/Scope.js +281 -217
  41. package/dist/Scope.js.map +1 -1
  42. package/dist/Stopwatch.js +1 -1
  43. package/dist/Stopwatch.js.map +1 -1
  44. package/dist/SymbolTable.d.ts +12 -68
  45. package/dist/SymbolTable.js +28 -213
  46. package/dist/SymbolTable.js.map +1 -1
  47. package/dist/XmlScope.d.ts +5 -7
  48. package/dist/XmlScope.js +36 -76
  49. package/dist/XmlScope.js.map +1 -1
  50. package/dist/astUtils/{Editor.d.ts → AstEditor.d.ts} +1 -6
  51. package/dist/astUtils/{Editor.js → AstEditor.js} +3 -9
  52. package/dist/astUtils/AstEditor.js.map +1 -0
  53. package/dist/astUtils/{Editor.spec.js → AstEditor.spec.js} +6 -10
  54. package/dist/astUtils/AstEditor.spec.js.map +1 -0
  55. package/dist/astUtils/creators.d.ts +8 -19
  56. package/dist/astUtils/creators.js +22 -54
  57. package/dist/astUtils/creators.js.map +1 -1
  58. package/dist/astUtils/creators.spec.js +0 -10
  59. package/dist/astUtils/creators.spec.js.map +1 -1
  60. package/dist/astUtils/reflection.d.ts +45 -81
  61. package/dist/astUtils/reflection.js +157 -220
  62. package/dist/astUtils/reflection.js.map +1 -1
  63. package/dist/astUtils/reflection.spec.js +19 -96
  64. package/dist/astUtils/reflection.spec.js.map +1 -1
  65. package/dist/astUtils/stackedVisitor.spec.js.map +1 -1
  66. package/dist/astUtils/visitors.d.ts +14 -18
  67. package/dist/astUtils/visitors.js +9 -22
  68. package/dist/astUtils/visitors.js.map +1 -1
  69. package/dist/astUtils/visitors.spec.js +9 -62
  70. package/dist/astUtils/visitors.spec.js.map +1 -1
  71. package/dist/astUtils/xml.d.ts +9 -9
  72. package/dist/astUtils/xml.js +6 -6
  73. package/dist/astUtils/xml.js.map +1 -1
  74. package/dist/bscPlugin/BscPlugin.d.ts +8 -11
  75. package/dist/bscPlugin/BscPlugin.js +21 -29
  76. package/dist/bscPlugin/BscPlugin.js.map +1 -1
  77. package/dist/bscPlugin/CallExpressionInfo.d.ts +6 -5
  78. package/dist/bscPlugin/CallExpressionInfo.js +2 -2
  79. package/dist/bscPlugin/CallExpressionInfo.js.map +1 -1
  80. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js +11 -11
  81. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js.map +1 -1
  82. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js +4 -4
  83. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js.map +1 -1
  84. package/dist/bscPlugin/completions/CompletionsProcessor.d.ts +1 -49
  85. package/dist/bscPlugin/completions/CompletionsProcessor.js +23 -424
  86. package/dist/bscPlugin/completions/CompletionsProcessor.js.map +1 -1
  87. package/dist/bscPlugin/definition/DefinitionProvider.d.ts +13 -0
  88. package/dist/bscPlugin/definition/DefinitionProvider.js +200 -0
  89. package/dist/bscPlugin/definition/DefinitionProvider.js.map +1 -0
  90. package/dist/bscPlugin/definition/DefinitionProvider.spec.js +87 -0
  91. package/dist/bscPlugin/definition/DefinitionProvider.spec.js.map +1 -0
  92. package/dist/bscPlugin/hover/HoverProcessor.d.ts +3 -7
  93. package/dist/bscPlugin/hover/HoverProcessor.js +88 -128
  94. package/dist/bscPlugin/hover/HoverProcessor.js.map +1 -1
  95. package/dist/bscPlugin/hover/HoverProcessor.spec.js +24 -336
  96. package/dist/bscPlugin/hover/HoverProcessor.spec.js.map +1 -1
  97. package/dist/bscPlugin/references/ReferencesProvider.d.ts +12 -0
  98. package/dist/bscPlugin/references/ReferencesProvider.js +56 -0
  99. package/dist/bscPlugin/references/ReferencesProvider.js.map +1 -0
  100. package/dist/bscPlugin/references/ReferencesProvider.spec.js +51 -0
  101. package/dist/bscPlugin/references/ReferencesProvider.spec.js.map +1 -0
  102. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.d.ts +0 -1
  103. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js +5 -49
  104. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js.map +1 -1
  105. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js +0 -22
  106. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js.map +1 -1
  107. package/dist/bscPlugin/symbols/DocumentSymbolProcessor.d.ts +7 -0
  108. package/dist/bscPlugin/symbols/DocumentSymbolProcessor.js +22 -0
  109. package/dist/bscPlugin/symbols/DocumentSymbolProcessor.js.map +1 -0
  110. package/dist/bscPlugin/symbols/DocumentSymbolProcessor.spec.js +290 -0
  111. package/dist/bscPlugin/symbols/DocumentSymbolProcessor.spec.js.map +1 -0
  112. package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.d.ts +7 -0
  113. package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.js +26 -0
  114. package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.js.map +1 -0
  115. package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.spec.js +245 -0
  116. package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.spec.js.map +1 -0
  117. package/dist/bscPlugin/symbols/symbolUtils.d.ts +5 -0
  118. package/dist/bscPlugin/symbols/symbolUtils.js +140 -0
  119. package/dist/bscPlugin/symbols/symbolUtils.js.map +1 -0
  120. package/dist/bscPlugin/transpile/{BrsFileTranspileProcessor.d.ts → BrsFilePreTranspileProcessor.d.ts} +2 -4
  121. package/dist/bscPlugin/transpile/{BrsFileTranspileProcessor.js → BrsFilePreTranspileProcessor.js} +15 -36
  122. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js.map +1 -0
  123. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.js +46 -0
  124. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.js.map +1 -0
  125. package/dist/bscPlugin/validation/BrsFileValidator.d.ts +1 -0
  126. package/dist/bscPlugin/validation/BrsFileValidator.js +30 -41
  127. package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -1
  128. package/dist/bscPlugin/validation/BrsFileValidator.spec.js +2 -2
  129. package/dist/bscPlugin/validation/BrsFileValidator.spec.js.map +1 -1
  130. package/dist/bscPlugin/validation/ProgramValidator.d.ts +3 -3
  131. package/dist/bscPlugin/validation/ProgramValidator.js +6 -6
  132. package/dist/bscPlugin/validation/ProgramValidator.js.map +1 -1
  133. package/dist/bscPlugin/validation/ScopeValidator.d.ts +6 -28
  134. package/dist/bscPlugin/validation/ScopeValidator.js +166 -387
  135. package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -1
  136. package/dist/bscPlugin/validation/XmlFileValidator.js +9 -9
  137. package/dist/bscPlugin/validation/XmlFileValidator.js.map +1 -1
  138. package/dist/diagnosticUtils.d.ts +2 -3
  139. package/dist/diagnosticUtils.js +5 -5
  140. package/dist/diagnosticUtils.js.map +1 -1
  141. package/dist/examples/plugins/removePrint.js +1 -1
  142. package/dist/examples/plugins/removePrint.js.map +1 -1
  143. package/dist/files/BrsFile.Class.spec.js +143 -114
  144. package/dist/files/BrsFile.Class.spec.js.map +1 -1
  145. package/dist/files/BrsFile.d.ts +61 -83
  146. package/dist/files/BrsFile.js +559 -612
  147. package/dist/files/BrsFile.js.map +1 -1
  148. package/dist/files/BrsFile.spec.js +1365 -1201
  149. package/dist/files/BrsFile.spec.js.map +1 -1
  150. package/dist/files/XmlFile.d.ts +28 -56
  151. package/dist/files/XmlFile.js +103 -89
  152. package/dist/files/XmlFile.js.map +1 -1
  153. package/dist/files/XmlFile.spec.js +179 -122
  154. package/dist/files/XmlFile.spec.js.map +1 -1
  155. package/dist/files/tests/imports.spec.js +19 -29
  156. package/dist/files/tests/imports.spec.js.map +1 -1
  157. package/dist/files/tests/optionalChaning.spec.js +14 -14
  158. package/dist/files/tests/optionalChaning.spec.js.map +1 -1
  159. package/dist/globalCallables.js +83 -88
  160. package/dist/globalCallables.js.map +1 -1
  161. package/dist/index.d.ts +1 -9
  162. package/dist/index.js +1 -9
  163. package/dist/index.js.map +1 -1
  164. package/dist/interfaces.d.ts +173 -423
  165. package/dist/interfaces.js +0 -24
  166. package/dist/interfaces.js.map +1 -1
  167. package/dist/lexer/Lexer.d.ts +9 -15
  168. package/dist/lexer/Lexer.js +35 -46
  169. package/dist/lexer/Lexer.js.map +1 -1
  170. package/dist/lexer/Lexer.spec.js +48 -40
  171. package/dist/lexer/Lexer.spec.js.map +1 -1
  172. package/dist/lexer/Token.d.ts +1 -5
  173. package/dist/lexer/Token.js +1 -1
  174. package/dist/lexer/Token.js.map +1 -1
  175. package/dist/lexer/TokenKind.d.ts +0 -6
  176. package/dist/lexer/TokenKind.js +2 -14
  177. package/dist/lexer/TokenKind.js.map +1 -1
  178. package/dist/logging.d.ts +9 -0
  179. package/dist/logging.js +16 -0
  180. package/dist/logging.js.map +1 -0
  181. package/dist/parser/AstNode.d.ts +6 -90
  182. package/dist/parser/AstNode.js +5 -96
  183. package/dist/parser/AstNode.js.map +1 -1
  184. package/dist/parser/AstNode.spec.js.map +1 -1
  185. package/dist/parser/BrsTranspileState.d.ts +3 -4
  186. package/dist/parser/BrsTranspileState.js +2 -3
  187. package/dist/parser/BrsTranspileState.js.map +1 -1
  188. package/dist/parser/Expression.d.ts +114 -137
  189. package/dist/parser/Expression.js +244 -373
  190. package/dist/parser/Expression.js.map +1 -1
  191. package/dist/parser/Parser.Class.spec.js +19 -46
  192. package/dist/parser/Parser.Class.spec.js.map +1 -1
  193. package/dist/parser/Parser.d.ts +18 -14
  194. package/dist/parser/Parser.js +196 -175
  195. package/dist/parser/Parser.js.map +1 -1
  196. package/dist/parser/Parser.spec.d.ts +0 -2
  197. package/dist/parser/Parser.spec.js +10 -674
  198. package/dist/parser/Parser.spec.js.map +1 -1
  199. package/dist/parser/SGParser.d.ts +6 -44
  200. package/dist/parser/SGParser.js +198 -194
  201. package/dist/parser/SGParser.js.map +1 -1
  202. package/dist/parser/SGParser.spec.js +11 -14
  203. package/dist/parser/SGParser.spec.js.map +1 -1
  204. package/dist/parser/SGTypes.d.ts +52 -280
  205. package/dist/parser/SGTypes.js +185 -562
  206. package/dist/parser/SGTypes.js.map +1 -1
  207. package/dist/parser/Statement.d.ts +140 -172
  208. package/dist/parser/Statement.js +201 -337
  209. package/dist/parser/Statement.js.map +1 -1
  210. package/dist/parser/Statement.spec.js.map +1 -1
  211. package/dist/parser/TranspileState.d.ts +3 -2
  212. package/dist/parser/TranspileState.js +8 -10
  213. package/dist/parser/TranspileState.js.map +1 -1
  214. package/dist/parser/tests/Parser.spec.js +3 -5
  215. package/dist/parser/tests/Parser.spec.js.map +1 -1
  216. package/dist/parser/tests/controlFlow/For.spec.js +8 -16
  217. package/dist/parser/tests/controlFlow/For.spec.js.map +1 -1
  218. package/dist/parser/tests/controlFlow/ForEach.spec.js +6 -12
  219. package/dist/parser/tests/controlFlow/ForEach.spec.js.map +1 -1
  220. package/dist/parser/tests/controlFlow/While.spec.js +4 -8
  221. package/dist/parser/tests/controlFlow/While.spec.js.map +1 -1
  222. package/dist/parser/tests/expression/Call.spec.js +4 -4
  223. package/dist/parser/tests/expression/Call.spec.js.map +1 -1
  224. package/dist/parser/tests/expression/Indexing.spec.js +25 -0
  225. package/dist/parser/tests/expression/Indexing.spec.js.map +1 -1
  226. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js +73 -29
  227. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js.map +1 -1
  228. package/dist/parser/tests/expression/RegexLiteralExpression.spec.js +10 -10
  229. package/dist/parser/tests/expression/RegexLiteralExpression.spec.js.map +1 -1
  230. package/dist/parser/tests/expression/SourceLiteralExpression.spec.js +24 -24
  231. package/dist/parser/tests/expression/SourceLiteralExpression.spec.js.map +1 -1
  232. package/dist/parser/tests/expression/TemplateStringExpression.spec.js +47 -35
  233. package/dist/parser/tests/expression/TemplateStringExpression.spec.js.map +1 -1
  234. package/dist/parser/tests/expression/TernaryExpression.spec.js +83 -36
  235. package/dist/parser/tests/expression/TernaryExpression.spec.js.map +1 -1
  236. package/dist/parser/tests/expression/UnaryExpression.spec.js +2 -2
  237. package/dist/parser/tests/expression/UnaryExpression.spec.js.map +1 -1
  238. package/dist/parser/tests/statement/ConstStatement.spec.js +26 -27
  239. package/dist/parser/tests/statement/ConstStatement.spec.js.map +1 -1
  240. package/dist/parser/tests/statement/Continue.spec.js +2 -2
  241. package/dist/parser/tests/statement/Continue.spec.js.map +1 -1
  242. package/dist/parser/tests/statement/Dim.spec.js.map +1 -1
  243. package/dist/parser/tests/statement/Enum.spec.js +393 -90
  244. package/dist/parser/tests/statement/Enum.spec.js.map +1 -1
  245. package/dist/parser/tests/statement/For.spec.js +6 -6
  246. package/dist/parser/tests/statement/For.spec.js.map +1 -1
  247. package/dist/parser/tests/statement/ForEach.spec.js +4 -4
  248. package/dist/parser/tests/statement/ForEach.spec.js.map +1 -1
  249. package/dist/parser/tests/statement/Function.spec.js +1 -1
  250. package/dist/parser/tests/statement/Function.spec.js.map +1 -1
  251. package/dist/parser/tests/statement/InterfaceStatement.spec.js +18 -18
  252. package/dist/parser/tests/statement/InterfaceStatement.spec.js.map +1 -1
  253. package/dist/parser/tests/statement/Misc.spec.js.map +1 -1
  254. package/dist/parser/tests/statement/PrintStatement.spec.js +13 -16
  255. package/dist/parser/tests/statement/PrintStatement.spec.js.map +1 -1
  256. package/dist/parser/tests/statement/ReturnStatement.spec.js +3 -5
  257. package/dist/parser/tests/statement/ReturnStatement.spec.js.map +1 -1
  258. package/dist/parser/tests/statement/Set.spec.js +13 -26
  259. package/dist/parser/tests/statement/Set.spec.js.map +1 -1
  260. package/dist/parser/tests/statement/Throw.spec.js.map +1 -1
  261. package/dist/parser/tests/statement/TryCatch.spec.js.map +1 -1
  262. package/dist/preprocessor/Chunk.js +1 -2
  263. package/dist/preprocessor/Chunk.js.map +1 -1
  264. package/dist/preprocessor/Preprocessor.d.ts +3 -4
  265. package/dist/preprocessor/Preprocessor.js +3 -3
  266. package/dist/preprocessor/Preprocessor.js.map +1 -1
  267. package/dist/preprocessor/PreprocessorParser.js +8 -1
  268. package/dist/preprocessor/PreprocessorParser.js.map +1 -1
  269. package/dist/roku-types/data.json +293 -243
  270. package/dist/roku-types/index.d.ts +38 -17
  271. package/dist/types/ArrayType.d.ts +4 -9
  272. package/dist/types/ArrayType.js +24 -72
  273. package/dist/types/ArrayType.js.map +1 -1
  274. package/dist/types/ArrayType.spec.js +10 -39
  275. package/dist/types/ArrayType.spec.js.map +1 -1
  276. package/dist/types/BooleanType.d.ts +4 -8
  277. package/dist/types/BooleanType.js +8 -19
  278. package/dist/types/BooleanType.js.map +1 -1
  279. package/dist/types/BooleanType.spec.js +3 -9
  280. package/dist/types/BooleanType.spec.js.map +1 -1
  281. package/dist/types/BscType.d.ts +2 -29
  282. package/dist/types/BscType.js +0 -113
  283. package/dist/types/BscType.js.map +1 -1
  284. package/dist/types/CustomType.d.ts +9 -0
  285. package/dist/types/CustomType.js +32 -0
  286. package/dist/types/CustomType.js.map +1 -0
  287. package/dist/types/DoubleType.d.ts +4 -8
  288. package/dist/types/DoubleType.js +20 -23
  289. package/dist/types/DoubleType.js.map +1 -1
  290. package/dist/types/DoubleType.spec.js +3 -11
  291. package/dist/types/DoubleType.spec.js.map +1 -1
  292. package/dist/types/DynamicType.d.ts +3 -9
  293. package/dist/types/DynamicType.js +2 -18
  294. package/dist/types/DynamicType.js.map +1 -1
  295. package/dist/types/DynamicType.spec.js +4 -15
  296. package/dist/types/DynamicType.spec.js.map +1 -1
  297. package/dist/types/FloatType.d.ts +4 -8
  298. package/dist/types/FloatType.js +20 -23
  299. package/dist/types/FloatType.js.map +1 -1
  300. package/dist/types/FloatType.spec.js +3 -3
  301. package/dist/types/FloatType.spec.js.map +1 -1
  302. package/dist/types/FunctionType.d.ts +20 -10
  303. package/dist/types/FunctionType.js +52 -27
  304. package/dist/types/FunctionType.js.map +1 -1
  305. package/dist/types/FunctionType.spec.js +23 -0
  306. package/dist/types/FunctionType.spec.js.map +1 -0
  307. package/dist/types/IntegerType.d.ts +4 -8
  308. package/dist/types/IntegerType.js +20 -23
  309. package/dist/types/IntegerType.js.map +1 -1
  310. package/dist/types/IntegerType.spec.js +3 -7
  311. package/dist/types/IntegerType.spec.js.map +1 -1
  312. package/dist/types/InterfaceType.d.ts +10 -12
  313. package/dist/types/InterfaceType.js +48 -23
  314. package/dist/types/InterfaceType.js.map +1 -1
  315. package/dist/types/InterfaceType.spec.js +45 -82
  316. package/dist/types/InterfaceType.spec.js.map +1 -1
  317. package/dist/types/InvalidType.d.ts +4 -7
  318. package/dist/types/InvalidType.js +8 -18
  319. package/dist/types/InvalidType.js.map +1 -1
  320. package/dist/types/InvalidType.spec.js +3 -7
  321. package/dist/types/InvalidType.spec.js.map +1 -1
  322. package/dist/types/LongIntegerType.d.ts +4 -8
  323. package/dist/types/LongIntegerType.js +20 -23
  324. package/dist/types/LongIntegerType.js.map +1 -1
  325. package/dist/types/LongIntegerType.spec.js +3 -9
  326. package/dist/types/LongIntegerType.spec.js.map +1 -1
  327. package/dist/types/ObjectType.d.ts +4 -8
  328. package/dist/types/ObjectType.js +7 -21
  329. package/dist/types/ObjectType.js.map +1 -1
  330. package/dist/types/ObjectType.spec.js +2 -2
  331. package/dist/types/ObjectType.spec.js.map +1 -1
  332. package/dist/types/StringType.d.ts +4 -11
  333. package/dist/types/StringType.js +8 -23
  334. package/dist/types/StringType.js.map +1 -1
  335. package/dist/types/StringType.spec.js +2 -2
  336. package/dist/types/StringType.spec.js.map +1 -1
  337. package/dist/types/UninitializedType.d.ts +3 -7
  338. package/dist/types/UninitializedType.js +3 -14
  339. package/dist/types/UninitializedType.js.map +1 -1
  340. package/dist/types/VoidType.d.ts +4 -8
  341. package/dist/types/VoidType.js +8 -18
  342. package/dist/types/VoidType.js.map +1 -1
  343. package/dist/types/VoidType.spec.js +2 -2
  344. package/dist/types/VoidType.spec.js.map +1 -1
  345. package/dist/util.d.ts +43 -104
  346. package/dist/util.js +243 -640
  347. package/dist/util.js.map +1 -1
  348. package/dist/validators/ClassValidator.d.ts +6 -1
  349. package/dist/validators/ClassValidator.js +61 -20
  350. package/dist/validators/ClassValidator.js.map +1 -1
  351. package/package.json +13 -11
  352. package/dist/ActionPipeline.d.ts +0 -10
  353. package/dist/ActionPipeline.js +0 -40
  354. package/dist/ActionPipeline.js.map +0 -1
  355. package/dist/AstValidationSegmenter.d.ts +0 -25
  356. package/dist/AstValidationSegmenter.js +0 -150
  357. package/dist/AstValidationSegmenter.js.map +0 -1
  358. package/dist/CacheVerifier.d.ts +0 -7
  359. package/dist/CacheVerifier.js +0 -20
  360. package/dist/CacheVerifier.js.map +0 -1
  361. package/dist/astUtils/Editor.js.map +0 -1
  362. package/dist/astUtils/Editor.spec.js.map +0 -1
  363. package/dist/bscPlugin/FileWriter.d.ts +0 -6
  364. package/dist/bscPlugin/FileWriter.js +0 -24
  365. package/dist/bscPlugin/FileWriter.js.map +0 -1
  366. package/dist/bscPlugin/completions/CompletionsProcessor.spec.js +0 -1658
  367. package/dist/bscPlugin/completions/CompletionsProcessor.spec.js.map +0 -1
  368. package/dist/bscPlugin/fileProviders/FileProvider.d.ts +0 -9
  369. package/dist/bscPlugin/fileProviders/FileProvider.js +0 -51
  370. package/dist/bscPlugin/fileProviders/FileProvider.js.map +0 -1
  371. package/dist/bscPlugin/serialize/BslibInjector.spec.js +0 -19
  372. package/dist/bscPlugin/serialize/BslibInjector.spec.js.map +0 -1
  373. package/dist/bscPlugin/serialize/BslibManager.d.ts +0 -9
  374. package/dist/bscPlugin/serialize/BslibManager.js +0 -40
  375. package/dist/bscPlugin/serialize/BslibManager.js.map +0 -1
  376. package/dist/bscPlugin/serialize/FileSerializer.d.ts +0 -9
  377. package/dist/bscPlugin/serialize/FileSerializer.js +0 -72
  378. package/dist/bscPlugin/serialize/FileSerializer.js.map +0 -1
  379. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.js.map +0 -1
  380. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.js +0 -41
  381. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.js.map +0 -1
  382. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.d.ts +0 -11
  383. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.js +0 -53
  384. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.js.map +0 -1
  385. package/dist/bscPlugin/validation/ScopeValidator.spec.js +0 -2004
  386. package/dist/bscPlugin/validation/ScopeValidator.spec.js.map +0 -1
  387. package/dist/files/AssetFile.d.ts +0 -26
  388. package/dist/files/AssetFile.js +0 -26
  389. package/dist/files/AssetFile.js.map +0 -1
  390. package/dist/files/Factory.d.ts +0 -25
  391. package/dist/files/Factory.js +0 -22
  392. package/dist/files/Factory.js.map +0 -1
  393. package/dist/files/File.d.ts +0 -106
  394. package/dist/files/File.js +0 -16
  395. package/dist/files/File.js.map +0 -1
  396. package/dist/files/LazyFileData.d.ts +0 -20
  397. package/dist/files/LazyFileData.js +0 -54
  398. package/dist/files/LazyFileData.js.map +0 -1
  399. package/dist/files/LazyFileData.spec.js +0 -27
  400. package/dist/files/LazyFileData.spec.js.map +0 -1
  401. package/dist/parser/tests/expression/TypeExpression.spec.js +0 -127
  402. package/dist/parser/tests/expression/TypeExpression.spec.js.map +0 -1
  403. package/dist/types/AssociativeArrayType.d.ts +0 -11
  404. package/dist/types/AssociativeArrayType.js +0 -52
  405. package/dist/types/AssociativeArrayType.js.map +0 -1
  406. package/dist/types/BaseFunctionType.d.ts +0 -9
  407. package/dist/types/BaseFunctionType.js +0 -25
  408. package/dist/types/BaseFunctionType.js.map +0 -1
  409. package/dist/types/BscTypeKind.d.ts +0 -25
  410. package/dist/types/BscTypeKind.js +0 -30
  411. package/dist/types/BscTypeKind.js.map +0 -1
  412. package/dist/types/BuiltInInterfaceAdder.d.ts +0 -23
  413. package/dist/types/BuiltInInterfaceAdder.js +0 -160
  414. package/dist/types/BuiltInInterfaceAdder.js.map +0 -1
  415. package/dist/types/BuiltInInterfaceAdder.spec.d.ts +0 -1
  416. package/dist/types/BuiltInInterfaceAdder.spec.js +0 -116
  417. package/dist/types/BuiltInInterfaceAdder.spec.js.map +0 -1
  418. package/dist/types/ClassType.d.ts +0 -17
  419. package/dist/types/ClassType.js +0 -58
  420. package/dist/types/ClassType.js.map +0 -1
  421. package/dist/types/ClassType.spec.d.ts +0 -1
  422. package/dist/types/ClassType.spec.js +0 -77
  423. package/dist/types/ClassType.spec.js.map +0 -1
  424. package/dist/types/ComponentType.d.ts +0 -26
  425. package/dist/types/ComponentType.js +0 -83
  426. package/dist/types/ComponentType.js.map +0 -1
  427. package/dist/types/EnumType.d.ts +0 -40
  428. package/dist/types/EnumType.js +0 -81
  429. package/dist/types/EnumType.js.map +0 -1
  430. package/dist/types/EnumType.spec.d.ts +0 -1
  431. package/dist/types/EnumType.spec.js +0 -33
  432. package/dist/types/EnumType.spec.js.map +0 -1
  433. package/dist/types/InheritableType.d.ts +0 -28
  434. package/dist/types/InheritableType.js +0 -152
  435. package/dist/types/InheritableType.js.map +0 -1
  436. package/dist/types/NamespaceType.d.ts +0 -12
  437. package/dist/types/NamespaceType.js +0 -28
  438. package/dist/types/NamespaceType.js.map +0 -1
  439. package/dist/types/ReferenceType.d.ts +0 -63
  440. package/dist/types/ReferenceType.js +0 -423
  441. package/dist/types/ReferenceType.js.map +0 -1
  442. package/dist/types/ReferenceType.spec.d.ts +0 -1
  443. package/dist/types/ReferenceType.spec.js +0 -137
  444. package/dist/types/ReferenceType.spec.js.map +0 -1
  445. package/dist/types/TypedFunctionType.d.ts +0 -33
  446. package/dist/types/TypedFunctionType.js +0 -106
  447. package/dist/types/TypedFunctionType.js.map +0 -1
  448. package/dist/types/TypedFunctionType.spec.d.ts +0 -1
  449. package/dist/types/TypedFunctionType.spec.js +0 -122
  450. package/dist/types/TypedFunctionType.spec.js.map +0 -1
  451. package/dist/types/UnionType.d.ts +0 -20
  452. package/dist/types/UnionType.js +0 -123
  453. package/dist/types/UnionType.js.map +0 -1
  454. package/dist/types/UnionType.spec.d.ts +0 -1
  455. package/dist/types/UnionType.spec.js +0 -130
  456. package/dist/types/UnionType.spec.js.map +0 -1
  457. package/dist/types/helper.spec.d.ts +0 -1
  458. package/dist/types/helper.spec.js +0 -145
  459. package/dist/types/helper.spec.js.map +0 -1
  460. package/dist/types/helpers.d.ts +0 -24
  461. package/dist/types/helpers.js +0 -178
  462. package/dist/types/helpers.js.map +0 -1
  463. package/dist/types/index.d.ts +0 -22
  464. package/dist/types/index.js +0 -39
  465. package/dist/types/index.js.map +0 -1
  466. /package/dist/astUtils/{Editor.spec.d.ts → AstEditor.spec.d.ts} +0 -0
  467. /package/dist/bscPlugin/{completions/CompletionsProcessor.spec.d.ts → definition/DefinitionProvider.spec.d.ts} +0 -0
  468. /package/dist/bscPlugin/{serialize/BslibInjector.spec.d.ts → references/ReferencesProvider.spec.d.ts} +0 -0
  469. /package/dist/bscPlugin/{transpile/BrsFileTranspileProcessor.spec.d.ts → symbols/DocumentSymbolProcessor.spec.d.ts} +0 -0
  470. /package/dist/bscPlugin/{validation/ScopeValidator.spec.d.ts → symbols/WorkspaceSymbolProcessor.spec.d.ts} +0 -0
  471. /package/dist/{files/LazyFileData.spec.d.ts → bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.d.ts} +0 -0
  472. /package/dist/{parser/tests/expression/TypeExpression.spec.d.ts → types/FunctionType.spec.d.ts} +0 -0
@@ -1,50 +1,36 @@
1
- /// <reference types="node" />
2
- import type { Range, Diagnostic, CodeAction, SemanticTokenTypes, SemanticTokenModifiers, Position, CompletionItem } from 'vscode-languageserver';
1
+ import type { Range, Diagnostic, CodeAction, Position, CompletionItem, Location, DocumentSymbol, WorkspaceSymbol } from 'vscode-languageserver-protocol';
3
2
  import type { Scope } from './Scope';
4
3
  import type { BrsFile } from './files/BrsFile';
5
4
  import type { XmlFile } from './files/XmlFile';
6
5
  import type { FunctionScope } from './FunctionScope';
7
- import type { TypedFunctionType } from './types/TypedFunctionType';
6
+ import type { FunctionType } from './types/FunctionType';
8
7
  import type { ParseMode } from './parser/Parser';
9
- import type { Program } from './Program';
8
+ import type { Program, SourceObj, TranspileObj } from './Program';
10
9
  import type { ProgramBuilder } from './ProgramBuilder';
11
- import type { ClassStatement, ConstStatement, EnumStatement, FunctionStatement, NamespaceStatement } from './parser/Statement';
12
- import type { AstNode, Expression, Statement } from './parser/AstNode';
10
+ import type { FunctionStatement } from './parser/Statement';
11
+ import type { Expression } from './parser/AstNode';
13
12
  import type { TranspileState } from './parser/TranspileState';
14
- import type { SourceNode } from 'source-map';
13
+ import type { SourceMapGenerator, SourceNode } from 'source-map';
15
14
  import type { BscType } from './types/BscType';
16
- import type { Editor } from './astUtils/Editor';
17
- import type { Identifier, Token } from './lexer/Token';
18
- import type { File } from './files/File';
19
- import type { FileFactory } from './files/Factory';
20
- import type { LazyFileData } from './files/LazyFileData';
21
- import type { SymbolTable, SymbolTypeFlag } from './SymbolTable';
22
- import type { CallExpression } from './parser/Expression';
15
+ import type { AstEditor } from './astUtils/AstEditor';
16
+ import type { Token } from './lexer/Token';
17
+ import type { SemanticTokenModifiers, SemanticTokenTypes } from 'vscode-languageserver';
23
18
  export interface BsDiagnostic extends Diagnostic {
24
- file: File;
19
+ file: BscFile;
25
20
  /**
26
21
  * A generic data container where additional details of the diagnostic can be stored. These are stripped out before being sent to a languageclient, and not printed to the console.
27
22
  */
28
23
  data?: any;
29
24
  }
30
- export declare enum DiagnosticOrigin {
31
- Program = "Program",
32
- Scope = "Scope",
33
- File = "File",
34
- ASTSegment = "AstSegment"
35
- }
36
- export interface BsDiagnosticWithOrigin extends BsDiagnostic {
37
- origin: DiagnosticOrigin;
38
- astSegment?: AstNode;
39
- }
25
+ export declare type BscFile = BrsFile | XmlFile;
40
26
  export interface Callable {
41
- file: File;
27
+ file: BscFile;
42
28
  name: string;
43
29
  /**
44
30
  * Is the callable declared as "sub". If falsey, assumed declared as "function"
45
31
  */
46
32
  isSub: boolean;
47
- type: TypedFunctionType;
33
+ type: FunctionType;
48
34
  /**
49
35
  * A short description of the callable. Should be a short sentence.
50
36
  */
@@ -78,7 +64,6 @@ export interface FunctionCall {
78
64
  * The full range of this function call (from the start of the function name to its closing paren)
79
65
  */
80
66
  range: Range;
81
- expression: CallExpression;
82
67
  functionScope: FunctionScope;
83
68
  file: File;
84
69
  name: string;
@@ -116,12 +101,12 @@ export interface FileObj {
116
101
  */
117
102
  export interface FileReference {
118
103
  /**
119
- * The destPath for the referenced file.
104
+ * The pkgPath to the referenced file.
120
105
  */
121
- destPath: string;
106
+ pkgPath: string;
122
107
  text: string;
123
108
  /**
124
- * The file that is doing the import. Note this is NOT the file the destPath points to.
109
+ * The file that is doing the import. Note this is NOT the file the pkgPath points to.
125
110
  */
126
111
  sourceFile: XmlFile | BrsFile;
127
112
  /**
@@ -132,9 +117,17 @@ export interface FileReference {
132
117
  */
133
118
  filePathRange?: Range;
134
119
  }
120
+ export interface File {
121
+ /**
122
+ * The absolute path to the file, relative to the pkg
123
+ */
124
+ pkgPath: string;
125
+ srcPath: string;
126
+ getDiagnostics(): BsDiagnostic[];
127
+ }
135
128
  export interface VariableDeclaration {
136
129
  name: string;
137
- getType: () => BscType;
130
+ type: BscType;
138
131
  /**
139
132
  * The range for the variable name
140
133
  */
@@ -165,7 +158,7 @@ export interface CallableContainer {
165
158
  }
166
159
  export declare type CallableContainerMap = Map<string, CallableContainer[]>;
167
160
  export interface CommentFlag {
168
- file: File;
161
+ file: BscFile;
169
162
  /**
170
163
  * The location of the ignore comment.
171
164
  */
@@ -176,45 +169,22 @@ export interface CommentFlag {
176
169
  affectedRange: Range;
177
170
  codes: DiagnosticCode[] | null;
178
171
  }
172
+ declare type ValidateHandler = (scope: Scope, files: BscFile[], callables: CallableContainerMap) => void;
179
173
  export declare type CompilerPluginFactory = () => CompilerPlugin;
180
174
  export interface CompilerPlugin {
181
175
  name: string;
182
- /**
183
- * Called before a new program is created
184
- */
185
- beforeProgramCreate?: PluginHandler<BeforeProgramCreateEvent>;
186
- /**
187
- * Called after a new program is created
188
- */
189
- afterProgramCreate?: PluginHandler<AfterProgramCreateEvent>;
190
- /**
191
- * Called before the program gets prepared for building
192
- */
193
- beforePrepareProgram?: PluginHandler<BeforePrepareProgramEvent>;
194
- /**
195
- * Called when the program gets prepared for building
196
- */
197
- prepareProgram?: PluginHandler<PrepareProgramEvent>;
198
- /**
199
- * Called after the program gets prepared for building
200
- */
201
- afterPrepareProgram?: PluginHandler<AfterPrepareProgramEvent>;
202
- /**
203
- * Called before the entire program is validated
204
- */
205
- beforeProgramValidate?: PluginHandler<BeforeProgramValidateEvent>;
206
- /**
207
- * Called before the entire program is validated
208
- */
209
- onProgramValidate?: PluginHandler<OnProgramValidateEvent>;
210
- /**
211
- * Called after the program has been validated
212
- */
213
- afterProgramValidate?: PluginHandler<AfterProgramValidateEvent>;
214
- /**
215
- * Called right before the program is disposed/destroyed
216
- */
176
+ beforeProgramCreate?: (builder: ProgramBuilder) => void;
177
+ beforePrepublish?: (builder: ProgramBuilder, files: FileObj[]) => void;
178
+ afterPrepublish?: (builder: ProgramBuilder, files: FileObj[]) => void;
179
+ beforePublish?: (builder: ProgramBuilder, files: FileObj[]) => void;
180
+ afterPublish?: (builder: ProgramBuilder, files: FileObj[]) => void;
181
+ afterProgramCreate?: (program: Program) => void;
182
+ beforeProgramValidate?: (program: Program) => void;
183
+ afterProgramValidate?: (program: Program) => void;
184
+ beforeProgramTranspile?: (program: Program, entries: TranspileObj[], editor: AstEditor) => void;
185
+ afterProgramTranspile?: (program: Program, entries: TranspileObj[], editor: AstEditor) => void;
217
186
  beforeProgramDispose?: PluginHandler<BeforeProgramDisposeEvent>;
187
+ onGetCodeActions?: PluginHandler<OnGetCodeActionsEvent>;
218
188
  /**
219
189
  * Emitted before the program starts collecting completions
220
190
  */
@@ -240,165 +210,108 @@ export interface CompilerPlugin {
240
210
  */
241
211
  afterProvideHover?: PluginHandler<AfterProvideHoverEvent>;
242
212
  /**
243
- * Called after a scope was created
244
- */
245
- afterScopeCreate?: PluginHandler<AfterScopeCreateEvent>;
246
- beforeScopeDispose?: PluginHandler<BeforeScopeDisposeEvent>;
247
- onScopeDispose?: PluginHandler<OnScopeDisposeEvent>;
248
- afterScopeDispose?: PluginHandler<AfterScopeDisposeEvent>;
249
- beforeScopeValidate?: PluginHandler<BeforeScopeValidateEvent>;
250
- onScopeValidate?: PluginHandler<OnScopeValidateEvent>;
251
- afterScopeValidate?: PluginHandler<BeforeScopeValidateEvent>;
252
- onGetCodeActions?: PluginHandler<OnGetCodeActionsEvent>;
253
- onGetSemanticTokens?: PluginHandler<OnGetSemanticTokensEvent>;
254
- /**
255
- * Called before plugins are asked to provide files to the program. (excludes virtual files produced by `provideFile` events).
256
- * Call the `setFileData()` method to override the file contents.
257
- */
258
- beforeProvideFile?: PluginHandler<BeforeProvideFileEvent>;
259
- /**
260
- * Give plugins the opportunity to handle processing a file. (excludes virtual files produced by `provideFile` events)
261
- */
262
- provideFile?: PluginHandler<ProvideFileEvent>;
263
- /**
264
- * Called after a file was added to the program. (excludes virtual files produced by `provideFile` events)
265
- */
266
- afterProvideFile?: PluginHandler<AfterProvideFileEvent>;
267
- /**
268
- * Called before a file is added to the program.
269
- * Includes physical files as well as any virtual files produced by `provideFile` events
270
- */
271
- beforeFileAdd?: PluginHandler<BeforeFileAddEvent>;
272
- /**
273
- * Called after a file has been added to the program.
274
- * Includes physical files as well as any virtual files produced by `provideFile` events
275
- */
276
- afterFileAdd?: PluginHandler<AfterFileAddEvent>;
277
- /**
278
- * Called before a file is removed from the program. This includes physical and virtual files
279
- */
280
- beforeFileRemove?: PluginHandler<BeforeFileRemoveEvent>;
281
- /**
282
- * Called after a file has been removed from the program. This includes physical and virtual files
283
- */
284
- afterFileRemove?: PluginHandler<AfterFileRemoveEvent>;
285
- /**
286
- * Called before each file is validated
287
- */
288
- beforeFileValidate?: PluginHandler<BeforeFileValidateEvent>;
289
- /**
290
- * Called during the file validation process. If your plugin contributes file validations, this is a good place to contribute them.
291
- */
292
- onFileValidate?: PluginHandler<OnFileValidateEvent>;
293
- /**
294
- * Called after each file is validated
213
+ * Called before the `provideDefinition` hook
295
214
  */
296
- afterFileValidate?: PluginHandler<AfterFileValidateEvent>;
215
+ beforeProvideDefinition?(event: BeforeProvideDefinitionEvent): any;
297
216
  /**
298
- * Called right before the program builds (i.e. generates the code and puts it in the stagingDir
217
+ * Provide one or more `Location`s where the symbol at the given position was originally defined
218
+ * @param event
299
219
  */
300
- beforeBuildProgram?: PluginHandler<BeforeBuildProgramEvent>;
220
+ provideDefinition?(event: ProvideDefinitionEvent): any;
301
221
  /**
302
- * Called right after the program builds (i.e. generates the code and puts it in the stagingDir
222
+ * Called after `provideDefinition`. Use this if you want to intercept or sanitize the definition data provided by bsc or other plugins
223
+ * @param event
303
224
  */
304
- afterBuildProgram?: PluginHandler<AfterBuildProgramEvent>;
225
+ afterProvideDefinition?(event: AfterProvideDefinitionEvent): any;
305
226
  /**
306
- * Before preparing the file for building
227
+ * Called before the `provideReferences` hook
307
228
  */
308
- beforePrepareFile?: PluginHandler<BeforePrepareFileEvent>;
229
+ beforeProvideReferences?(event: BeforeProvideReferencesEvent): any;
309
230
  /**
310
- * Prepare the file for building
231
+ * Provide all of the `Location`s where the symbol at the given position is located
232
+ * @param event
311
233
  */
312
- prepareFile?: PluginHandler<PrepareFileEvent>;
234
+ provideReferences?(event: ProvideReferencesEvent): any;
313
235
  /**
314
- * After preparing the file for building
236
+ * Called after `provideReferences`. Use this if you want to intercept or sanitize the references data provided by bsc or other plugins
237
+ * @param event
315
238
  */
316
- afterPrepareFile?: PluginHandler<AfterPrepareFileEvent>;
239
+ afterProvideReferences?(event: AfterProvideReferencesEvent): any;
317
240
  /**
318
- * Before the program turns all file objects into their final buffers
241
+ * Called before the `provideDocumentSymbols` hook
319
242
  */
320
- beforeSerializeProgram?: PluginHandler<BeforeSerializeProgramEvent>;
243
+ beforeProvideDocumentSymbols?(event: BeforeProvideDocumentSymbolsEvent): any;
321
244
  /**
322
- * Emitted right at the start of the program turning all file objects into their final buffers
245
+ * Provide all of the `DocumentSymbol`s for the given file
246
+ * @param event
323
247
  */
324
- onSerializeProgram?: PluginHandler<OnSerializeProgramEvent>;
248
+ provideDocumentSymbols?(event: ProvideDocumentSymbolsEvent): any;
325
249
  /**
326
- * After the program turns all file objects into their final buffers
250
+ * Called after `provideDocumentSymbols`. Use this if you want to intercept or sanitize the document symbols data provided by bsc or other plugins
251
+ * @param event
327
252
  */
328
- afterSerializeProgram?: PluginHandler<AfterSerializeProgramEvent>;
253
+ afterProvideDocumentSymbols?(event: AfterProvideDocumentSymbolsEvent): any;
329
254
  /**
330
- * Before turning the file into its final contents
255
+ * Called before the `provideWorkspaceSymbols` hook
331
256
  */
332
- beforeSerializeFile?: PluginHandler<BeforeSerializeFileEvent>;
257
+ beforeProvideWorkspaceSymbols?(event: BeforeProvideWorkspaceSymbolsEvent): any;
333
258
  /**
334
- * Turn the file into its final contents (i.e. transpile a bs file, compress a jpeg, etc)
259
+ * Provide all of the workspace symbols for the entire project
260
+ * @param event
335
261
  */
336
- serializeFile?: PluginHandler<SerializeFileEvent>;
262
+ provideWorkspaceSymbols?(event: ProvideWorkspaceSymbolsEvent): any;
337
263
  /**
338
- * After turning the file into its final contents
264
+ * Called after `provideWorkspaceSymbols`. Use this if you want to intercept or sanitize the workspace symbols data provided by bsc or other plugins
265
+ * @param event
339
266
  */
340
- afterSerializeFile?: PluginHandler<AfterSerializeFileEvent>;
341
- /**
342
- * Called before any files are written
343
- */
344
- beforeWriteProgram?: PluginHandler<BeforeWriteProgramEvent>;
345
- /**
346
- * Called after all files are written
347
- */
348
- afterWriteProgram?: PluginHandler<AfterWriteProgramEvent>;
267
+ afterProvideWorkspaceSymbols?(event: AfterProvideWorkspaceSymbolsEvent): any;
268
+ onGetSemanticTokens?: PluginHandler<OnGetSemanticTokensEvent>;
269
+ afterScopeCreate?: (scope: Scope) => void;
270
+ beforeScopeDispose?: (scope: Scope) => void;
271
+ afterScopeDispose?: (scope: Scope) => void;
272
+ beforeScopeValidate?: ValidateHandler;
273
+ onScopeValidate?: PluginHandler<OnScopeValidateEvent>;
274
+ afterScopeValidate?: ValidateHandler;
275
+ beforeFileParse?: (source: SourceObj) => void;
276
+ afterFileParse?: (file: BscFile) => void;
349
277
  /**
350
- * Before a file is written to disk. These are raw files that contain the final output. One `File` may produce several of these
278
+ * Called before each file is validated
351
279
  */
352
- beforeWriteFile?: PluginHandler<BeforeWriteFileEvent>;
280
+ beforeFileValidate?: PluginHandler<BeforeFileValidateEvent>;
353
281
  /**
354
- * Called when a file should be persisted (usually writing to storage). These are raw files that contain the final output. One `File` may produce several of these.
355
- * When a plugin has handled a file, it should be pushed to the `handledFiles` set so future plugins don't write the file multiple times
282
+ * Called during the file validation process. If your plugin contributes file validations, this is a good place to contribute them.
356
283
  */
357
- writeFile?: PluginHandler<WriteFileEvent>;
284
+ onFileValidate?: PluginHandler<OnFileValidateEvent>;
358
285
  /**
359
- * Before a file is written to disk. These are raw files that contain the final output. One `File` may produce several of these
286
+ * Called after each file is validated
360
287
  */
361
- afterWriteFile?: PluginHandler<AfterWriteFileEvent>;
288
+ afterFileValidate?: (file: BscFile) => void;
289
+ beforeFileTranspile?: PluginHandler<BeforeFileTranspileEvent>;
290
+ afterFileTranspile?: PluginHandler<AfterFileTranspileEvent>;
291
+ beforeFileDispose?: (file: BscFile) => void;
292
+ afterFileDispose?: (file: BscFile) => void;
362
293
  }
363
294
  export declare type PluginHandler<T, R = void> = (event: T) => R;
364
- export interface OnGetCodeActionsEvent<TFile extends File = File> {
295
+ export interface OnGetCodeActionsEvent {
365
296
  program: Program;
366
- file: TFile;
297
+ file: BscFile;
367
298
  range: Range;
368
299
  scopes: Scope[];
369
300
  diagnostics: BsDiagnostic[];
370
301
  codeActions: CodeAction[];
371
302
  }
372
- export interface BeforeProgramCreateEvent {
373
- builder: ProgramBuilder;
374
- }
375
- export interface AfterProgramCreateEvent {
376
- builder: ProgramBuilder;
377
- program: Program;
378
- }
379
- export interface BeforeProgramValidateEvent {
380
- program: Program;
381
- }
382
- export declare type OnProgramValidateEvent = BeforeProgramValidateEvent;
383
- export declare type AfterProgramValidateEvent = BeforeProgramValidateEvent;
384
- export interface ProvideCompletionsEvent<TFile extends File = File> {
303
+ export interface ProvideCompletionsEvent<TFile extends BscFile = BscFile> {
385
304
  program: Program;
386
305
  file: TFile;
387
306
  scopes: Scope[];
388
307
  position: Position;
389
308
  completions: CompletionItem[];
390
309
  }
391
- export declare type BeforeProvideCompletionsEvent<TFile extends File = File> = ProvideCompletionsEvent<TFile>;
392
- export declare type AfterProvideCompletionsEvent<TFile extends File = File> = ProvideCompletionsEvent<TFile>;
393
- export interface BeforeBuildProgramEvent {
394
- program: Program;
395
- files: File[];
396
- editor: Editor;
397
- }
398
- export declare type AfterBuildProgramEvent = BeforeBuildProgramEvent;
310
+ export declare type BeforeProvideCompletionsEvent<TFile extends BscFile = BscFile> = ProvideCompletionsEvent<TFile>;
311
+ export declare type AfterProvideCompletionsEvent<TFile extends BscFile = BscFile> = ProvideCompletionsEvent<TFile>;
399
312
  export interface ProvideHoverEvent {
400
313
  program: Program;
401
- file: File;
314
+ file: BscFile;
402
315
  position: Position;
403
316
  scopes: Scope[];
404
317
  hovers: Hover[];
@@ -420,42 +333,63 @@ export interface Hover {
420
333
  }
421
334
  export declare type BeforeProvideHoverEvent = ProvideHoverEvent;
422
335
  export declare type AfterProvideHoverEvent = ProvideHoverEvent;
423
- export interface AfterScopeCreateEvent {
424
- program: Program;
425
- scope: Scope;
426
- }
427
- export interface BeforeScopeDisposeEvent {
428
- program: Program;
429
- scope: Scope;
430
- }
431
- export interface OnScopeDisposeEvent {
432
- program: Program;
433
- scope: Scope;
434
- }
435
- export interface AfterScopeDisposeEvent {
436
- program: Program;
437
- scope: Scope;
438
- }
439
- export interface BeforeScopeValidateEvent {
336
+ export interface ProvideDefinitionEvent<TFile = BscFile> {
440
337
  program: Program;
441
- scope: Scope;
338
+ /**
339
+ * The file that the getDefinition request was invoked in
340
+ */
341
+ file: TFile;
342
+ /**
343
+ * The position in the text document where the getDefinition request was invoked
344
+ */
345
+ position: Position;
346
+ /**
347
+ * The list of locations for where the item at the file and position was defined
348
+ */
349
+ definitions: Location[];
442
350
  }
443
- export declare type AfterScopeValidateEvent = BeforeScopeValidateEvent;
444
- export interface BeforeFileParseEvent {
351
+ export declare type BeforeProvideDefinitionEvent<TFile = BscFile> = ProvideDefinitionEvent<TFile>;
352
+ export declare type AfterProvideDefinitionEvent<TFile = BscFile> = ProvideDefinitionEvent<TFile>;
353
+ export interface ProvideReferencesEvent<TFile = BscFile> {
445
354
  program: Program;
446
- srcPath: string;
447
- source: string;
355
+ /**
356
+ * The file that the getDefinition request was invoked in
357
+ */
358
+ file: TFile;
359
+ /**
360
+ * The position in the text document where the getDefinition request was invoked
361
+ */
362
+ position: Position;
363
+ /**
364
+ * The list of locations for where the item at the file and position was defined
365
+ */
366
+ references: Location[];
448
367
  }
449
- export interface OnFileParseEvent {
368
+ export declare type BeforeProvideReferencesEvent<TFile = BscFile> = ProvideReferencesEvent<TFile>;
369
+ export declare type AfterProvideReferencesEvent<TFile = BscFile> = ProvideReferencesEvent<TFile>;
370
+ export interface ProvideDocumentSymbolsEvent<TFile = BscFile> {
450
371
  program: Program;
451
- srcPath: string;
452
- source: string;
372
+ /**
373
+ * The file that the `documentSymbol` request was invoked in
374
+ */
375
+ file: TFile;
376
+ /**
377
+ * The result list of symbols
378
+ */
379
+ documentSymbols: DocumentSymbol[];
453
380
  }
454
- export interface AfterFileParseEvent {
381
+ export declare type BeforeProvideDocumentSymbolsEvent<TFile = BscFile> = ProvideDocumentSymbolsEvent<TFile>;
382
+ export declare type AfterProvideDocumentSymbolsEvent<TFile = BscFile> = ProvideDocumentSymbolsEvent<TFile>;
383
+ export interface ProvideWorkspaceSymbolsEvent {
455
384
  program: Program;
456
- file: File;
385
+ /**
386
+ * The result list of symbols
387
+ */
388
+ workspaceSymbols: WorkspaceSymbol[];
457
389
  }
458
- export interface OnGetSemanticTokensEvent<T extends File = File> {
390
+ export declare type BeforeProvideWorkspaceSymbolsEvent = ProvideWorkspaceSymbolsEvent;
391
+ export declare type AfterProvideWorkspaceSymbolsEvent = ProvideWorkspaceSymbolsEvent;
392
+ export interface OnGetSemanticTokensEvent<T extends BscFile = BscFile> {
459
393
  /**
460
394
  * The program this file is from
461
395
  */
@@ -473,32 +407,31 @@ export interface OnGetSemanticTokensEvent<T extends File = File> {
473
407
  */
474
408
  semanticTokens: SemanticToken[];
475
409
  }
476
- export declare type BeforeFileValidateEvent = OnFileValidateEvent;
477
- export interface OnFileValidateEvent<T extends File = File> {
410
+ export interface BeforeFileValidateEvent<T extends BscFile = BscFile> {
478
411
  program: Program;
479
412
  file: T;
480
413
  }
481
- export declare type AfterFileValidateEvent = OnFileValidateEvent;
482
- export interface OnFileValidateEvent<T extends File = File> {
414
+ export interface OnFileValidateEvent<T extends BscFile = BscFile> {
483
415
  program: Program;
484
416
  file: T;
485
417
  }
486
- export interface TranspileEntry {
487
- file: File;
488
- outputPath: string;
489
- }
490
- export interface ScopeValidationOptions {
491
- changedFiles?: File[];
492
- changedSymbols?: Map<SymbolTypeFlag, Set<string>>;
493
- force?: boolean;
494
- }
495
418
  export interface OnScopeValidateEvent {
496
419
  program: Program;
497
420
  scope: Scope;
498
- changedFiles?: File[];
499
- changedSymbols?: Map<SymbolTypeFlag, Set<string>>;
500
421
  }
501
- export interface AfterFileTranspileEvent<TFile extends File = File> {
422
+ export declare type Editor = Pick<AstEditor, 'addToArray' | 'hasChanges' | 'removeFromArray' | 'setArrayValue' | 'setProperty' | 'overrideTranspileResult' | 'arrayPop' | 'arrayPush' | 'arrayShift' | 'arraySplice' | 'arrayUnshift' | 'removeProperty' | 'edit'>;
423
+ export interface BeforeFileTranspileEvent<TFile extends BscFile = BscFile> {
424
+ program: Program;
425
+ file: TFile;
426
+ outputPath: string;
427
+ /**
428
+ * An editor that can be used to transform properties or arrays. Once the `afterFileTranspile` event has fired, these changes will be reverted,
429
+ * restoring the objects to their prior state. This is useful for changing code right before a file gets transpiled, but when you don't want
430
+ * the changes to persist in the in-memory file.
431
+ */
432
+ editor: Editor;
433
+ }
434
+ export interface AfterFileTranspileEvent<TFile extends BscFile = BscFile> {
502
435
  /**
503
436
  * The program this event was triggered for
504
437
  */
@@ -512,147 +445,18 @@ export interface AfterFileTranspileEvent<TFile extends File = File> {
512
445
  /**
513
446
  * The sourceMaps for the generated code (if emitting source maps is enabled)
514
447
  */
515
- map?: string;
448
+ map?: SourceMapGenerator;
516
449
  /**
517
450
  * The generated type definition file contents (if emitting type definitions are enabled)
518
451
  */
519
452
  typedef?: string;
520
- }
521
- export declare type BeforeProvideFileEvent<TFile extends File = File> = ProvideFileEvent<TFile>;
522
- export interface ProvideFileEvent<TFile extends File = File> {
523
- /**
524
- * The lower-case file extension for the srcPath. (i.e. ".brs", ".xml")
525
- */
526
- srcExtension: string;
527
- /**
528
- * The srcPath for the file. (i.e. `/user/bob/projects/VideoApp/source/main.bs`)
529
- */
530
- srcPath: string;
531
- /**
532
- * The destPath for the file. (i.e. for `/user/bob/projects/VideoApp/source/main.bs`, destPath would be `source/main.bs`)
533
- */
534
- destPath: string;
535
- /**
536
- * A lazy-loading container for this file's data. Call `.get()` to lazy load the data, and `.set()` to override file contents
537
- */
538
- data: LazyFileData;
539
- /**
540
- * An array of files that should be added to the program as a result of this event
541
- */
542
- files: TFile[];
543
- /**
544
- * The program for this event
545
- */
546
- program: Program;
547
453
  /**
548
- * A factory used to create new instances of the BrighterScript built-in file types. This mitigates the issue
549
- * of a plugin's version of a File not being the same as the LanguageServer or CLI version of BrighterScript
550
- * (due to npm installing multiple versions of brighterscript)
454
+ * An editor that can be used to transform properties or arrays. Once the `afterFileTranspile` event has fired, these changes will be reverted,
455
+ * restoring the objects to their prior state. This is useful for changing code right before a file gets transpiled, but when you don't want
456
+ * the changes to persist in the in-memory file.
551
457
  */
552
- fileFactory: FileFactory;
553
- }
554
- export declare type AfterProvideFileEvent<TFile extends File = File> = ProvideFileEvent<TFile>;
555
- export interface BeforeFileAddEvent<TFile extends File = File> {
556
- file: TFile;
557
- program: Program;
558
- }
559
- export declare type AfterFileAddEvent<TFile extends File = File> = BeforeFileAddEvent<TFile>;
560
- export interface BeforeFileRemoveEvent<TFile extends File = File> {
561
- file: TFile;
562
- program: Program;
563
- }
564
- export declare type AfterFileRemoveEvent<TFile extends File = File> = BeforeFileRemoveEvent<TFile>;
565
- export declare type BeforePrepareProgramEvent = PrepareProgramEvent;
566
- /**
567
- * Event for when the program prepares itself for building
568
- */
569
- export interface PrepareProgramEvent {
570
- program: Program;
571
- editor: Editor;
572
- }
573
- export declare type AfterPrepareProgramEvent = PrepareProgramEvent;
574
- export declare type BeforePrepareFileEvent<TFile extends File = File> = PrepareFileEvent<TFile>;
575
- /**
576
- * Prepare the file for building
577
- */
578
- export interface PrepareFileEvent<TFile extends File = File> {
579
- program: Program;
580
- file: TFile;
581
458
  editor: Editor;
582
459
  }
583
- export declare type OnPrepareFileEvent<TFile extends File = File> = PrepareFileEvent<TFile>;
584
- export declare type AfterPrepareFileEvent<TFile extends File = File> = PrepareFileEvent<TFile>;
585
- /**
586
- * A container that holds the code, map, and typedef for serialized code files.
587
- */
588
- export interface SerializedCodeFile {
589
- code?: string;
590
- map?: string;
591
- typedef?: string;
592
- }
593
- export interface BeforeSerializeProgramEvent {
594
- program: Program;
595
- files: File[];
596
- result: Map<File, SerializedFile[]>;
597
- }
598
- export declare type OnSerializeProgramEvent = BeforeSerializeProgramEvent;
599
- export declare type AfterSerializeProgramEvent = BeforeSerializeProgramEvent;
600
- /**
601
- * During the `SerializeFile` events, this is how plugins will contribute file data for a specific file
602
- */
603
- export interface SerializedFile {
604
- /**
605
- * The raw data for this file (i.e. a binary buffer for a .jpeg file, or the transpiled code for a .bs file)
606
- */
607
- data: Buffer;
608
- /**
609
- * The pkgPath for this chunk of data.
610
- */
611
- pkgPath: string;
612
- }
613
- export declare type BeforeSerializeFileEvent<TFile extends File = File> = SerializeFileEvent<TFile>;
614
- export interface SerializeFileEvent<TFile extends File = File> {
615
- program: Program;
616
- file: TFile;
617
- /**
618
- * The list of all files created across all the `SerializeFile` events.
619
- * The key is the pkgPath of the file, and the
620
- */
621
- result: Map<TFile, SerializedFile[]>;
622
- }
623
- export declare type AfterSerializeFileEvent<TFile extends File = File> = SerializeFileEvent<TFile>;
624
- export interface BeforeWriteProgramEvent {
625
- program: Program;
626
- stagingDir: string;
627
- files: Map<File, SerializedFile[]>;
628
- }
629
- export declare type AfterWriteProgramEvent = BeforeWriteProgramEvent;
630
- export declare type BeforeWriteFileEvent = WriteFileEvent;
631
- export interface WriteFileEvent {
632
- program: Program;
633
- file: SerializedFile;
634
- /**
635
- * The full path to where the file was (or will be) written to.
636
- */
637
- outputPath: string;
638
- /**
639
- * A set of all files that have been properly written. Plugins should add any handled files to this list so future plugins don't write then again
640
- */
641
- processedFiles: Set<SerializedFile>;
642
- }
643
- export declare type AfterWriteFileEvent = BeforeWriteFileEvent;
644
- export interface TranspileObj {
645
- file: File;
646
- /**
647
- * The absolute path to where the file should be written during build. (i.e. somewhere inside the stagingDir)
648
- */
649
- outputPath: string;
650
- }
651
- export interface BeforeFileDisposeEvent {
652
- program: Program;
653
- file: File;
654
- }
655
- export declare type AfterFileDisposeEvent = BeforeFileDisposeEvent;
656
460
  export interface BeforeProgramDisposeEvent {
657
461
  program: Program;
658
462
  }
@@ -665,10 +469,16 @@ export interface SemanticToken {
665
469
  tokenModifiers?: SemanticTokenModifiers[];
666
470
  }
667
471
  export interface TypedefProvider {
668
- getTypedef(state: TranspileState): Array<SourceNode | string>;
472
+ getTypedef(state: TranspileState): TranspileResult;
669
473
  }
670
- export declare type TranspileResult = Array<(string | SourceNode)>;
671
- export declare type FileResolver = (srcPath: string) => string | Buffer | undefined | Thenable<string | Buffer | undefined> | void;
474
+ export declare type TranspileResult = Array<(string | SourceNode | TranspileResult)>;
475
+ /**
476
+ * This is the type that the SourceNode class is declared as taking in its constructor.
477
+ * The actual type that SourceNode accepts is the more permissive TranspileResult, but
478
+ * we need to use this declared type for some type casts.
479
+ */
480
+ export declare type FlattenedTranspileResult = Array<string | SourceNode>;
481
+ export declare type FileResolver = (srcPath: string) => string | undefined | Thenable<string | undefined> | void;
672
482
  export interface ExpressionInfo {
673
483
  expressions: Expression[];
674
484
  varExpressions: Expression[];
@@ -679,64 +489,4 @@ export interface FileLink<T> {
679
489
  item: T;
680
490
  file: BrsFile;
681
491
  }
682
- export interface ExtraSymbolData {
683
- definingNode?: AstNode;
684
- description?: string;
685
- completionPriority?: number;
686
- flags?: SymbolTypeFlag;
687
- }
688
- export interface GetTypeOptions {
689
- flags: SymbolTypeFlag;
690
- typeChain?: TypeChainEntry[];
691
- data?: ExtraSymbolData;
692
- ignoreCall?: boolean;
693
- onlyCacheResolvedTypes?: boolean;
694
- }
695
- export declare class TypeChainEntry {
696
- name: string;
697
- type: BscType;
698
- flags: SymbolTypeFlag;
699
- range: Range;
700
- separatorToken: Token;
701
- constructor(name: string, type: BscType, flags: SymbolTypeFlag, range: Range, separatorToken?: Token);
702
- get isResolved(): boolean;
703
- }
704
- export interface TypeChainProcessResult {
705
- itemName: string;
706
- itemParentTypeName: string;
707
- fullNameOfItem: string;
708
- fullChainName: string;
709
- range: Range;
710
- containsDynamic: boolean;
711
- }
712
- export interface TypeCompatibilityData {
713
- missingFields?: {
714
- name: string;
715
- expectedType: BscType;
716
- }[];
717
- fieldMismatches?: {
718
- name: string;
719
- expectedType: BscType;
720
- actualType: BscType;
721
- }[];
722
- depth?: number;
723
- }
724
- export interface NamespaceContainer {
725
- file: File;
726
- fullName: string;
727
- fullNameLower: string;
728
- parentNameLower: string;
729
- nameParts: Identifier[];
730
- nameRange: Range;
731
- lastPartName: string;
732
- lastPartNameLower: string;
733
- functionStatements: Map<string, FunctionStatement>;
734
- isTopLevel: boolean;
735
- namespaceStatements?: NamespaceStatement[];
736
- statements?: Statement[];
737
- classStatements?: Map<string, ClassStatement>;
738
- enumStatements?: Map<string, EnumStatement>;
739
- constStatements?: Map<string, ConstStatement>;
740
- namespaces?: Map<string, NamespaceContainer>;
741
- symbolTable: SymbolTable;
742
- }
492
+ export {};