brighterscript 1.0.0-alpha.24 → 1.0.0-alpha.25

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 (530) hide show
  1. package/CHANGELOG.md +493 -233
  2. package/README.md +45 -139
  3. package/bsconfig.schema.json +41 -0
  4. package/dist/ActionPipeline.d.ts +10 -0
  5. package/dist/ActionPipeline.js +40 -0
  6. package/dist/ActionPipeline.js.map +1 -0
  7. package/dist/AstValidationSegmenter.d.ts +25 -0
  8. package/dist/AstValidationSegmenter.js +152 -0
  9. package/dist/AstValidationSegmenter.js.map +1 -0
  10. package/dist/BsConfig.d.ts +39 -4
  11. package/dist/BusyStatusTracker.d.ts +31 -0
  12. package/dist/BusyStatusTracker.js +83 -0
  13. package/dist/BusyStatusTracker.js.map +1 -0
  14. package/dist/Cache.js +3 -3
  15. package/dist/Cache.js.map +1 -1
  16. package/dist/CacheVerifier.d.ts +7 -0
  17. package/dist/CacheVerifier.js +20 -0
  18. package/dist/CacheVerifier.js.map +1 -0
  19. package/dist/CodeActionUtil.d.ts +3 -3
  20. package/dist/CodeActionUtil.js.map +1 -1
  21. package/dist/CommentFlagProcessor.d.ts +3 -2
  22. package/dist/CommentFlagProcessor.js +5 -4
  23. package/dist/CommentFlagProcessor.js.map +1 -1
  24. package/dist/DependencyGraph.d.ts +3 -2
  25. package/dist/DependencyGraph.js +11 -10
  26. package/dist/DependencyGraph.js.map +1 -1
  27. package/dist/DiagnosticCollection.js +9 -5
  28. package/dist/DiagnosticCollection.js.map +1 -1
  29. package/dist/DiagnosticFilterer.d.ts +1 -0
  30. package/dist/DiagnosticFilterer.js +5 -3
  31. package/dist/DiagnosticFilterer.js.map +1 -1
  32. package/dist/DiagnosticMessages.d.ts +61 -13
  33. package/dist/DiagnosticMessages.js +116 -19
  34. package/dist/DiagnosticMessages.js.map +1 -1
  35. package/dist/DiagnosticSeverityAdjuster.d.ts +7 -0
  36. package/dist/DiagnosticSeverityAdjuster.js +41 -0
  37. package/dist/DiagnosticSeverityAdjuster.js.map +1 -0
  38. package/dist/FunctionScope.d.ts +28 -0
  39. package/dist/FunctionScope.js +52 -0
  40. package/dist/FunctionScope.js.map +1 -0
  41. package/dist/KeyedThrottler.d.ts +3 -3
  42. package/dist/KeyedThrottler.js +3 -3
  43. package/dist/KeyedThrottler.js.map +1 -1
  44. package/dist/LanguageServer.d.ts +23 -11
  45. package/dist/LanguageServer.js +150 -69
  46. package/dist/LanguageServer.js.map +1 -1
  47. package/dist/Logger.d.ts +3 -2
  48. package/dist/Logger.js +11 -3
  49. package/dist/Logger.js.map +1 -1
  50. package/dist/PluginInterface.d.ts +21 -3
  51. package/dist/PluginInterface.js +74 -6
  52. package/dist/PluginInterface.js.map +1 -1
  53. package/dist/Program.d.ts +158 -79
  54. package/dist/Program.js +831 -695
  55. package/dist/Program.js.map +1 -1
  56. package/dist/ProgramBuilder.d.ts +22 -12
  57. package/dist/ProgramBuilder.js +130 -103
  58. package/dist/ProgramBuilder.js.map +1 -1
  59. package/dist/Scope.d.ts +87 -133
  60. package/dist/Scope.js +450 -510
  61. package/dist/Scope.js.map +1 -1
  62. package/dist/Stopwatch.js +1 -1
  63. package/dist/Stopwatch.js.map +1 -1
  64. package/dist/SymbolTable.d.ts +89 -34
  65. package/dist/SymbolTable.js +239 -114
  66. package/dist/SymbolTable.js.map +1 -1
  67. package/dist/Throttler.d.ts +12 -0
  68. package/dist/Throttler.js +39 -0
  69. package/dist/Throttler.js.map +1 -1
  70. package/dist/Watcher.d.ts +0 -3
  71. package/dist/Watcher.js +0 -3
  72. package/dist/Watcher.js.map +1 -1
  73. package/dist/XmlScope.d.ts +4 -6
  74. package/dist/XmlScope.js +74 -69
  75. package/dist/XmlScope.js.map +1 -1
  76. package/dist/astUtils/CachedLookups.d.ts +48 -0
  77. package/dist/astUtils/CachedLookups.js +323 -0
  78. package/dist/astUtils/CachedLookups.js.map +1 -0
  79. package/dist/astUtils/{AstEditor.d.ts → Editor.d.ts} +9 -5
  80. package/dist/astUtils/{AstEditor.js → Editor.js} +10 -4
  81. package/dist/astUtils/Editor.js.map +1 -0
  82. package/dist/astUtils/{AstEditor.spec.js → Editor.spec.js} +68 -64
  83. package/dist/astUtils/Editor.spec.js.map +1 -0
  84. package/dist/astUtils/creators.d.ts +10 -10
  85. package/dist/astUtils/creators.js +26 -16
  86. package/dist/astUtils/creators.js.map +1 -1
  87. package/dist/astUtils/creators.spec.js +5 -5
  88. package/dist/astUtils/creators.spec.js.map +1 -1
  89. package/dist/astUtils/reflection.d.ts +132 -104
  90. package/dist/astUtils/reflection.js +220 -174
  91. package/dist/astUtils/reflection.js.map +1 -1
  92. package/dist/astUtils/reflection.spec.js +208 -126
  93. package/dist/astUtils/reflection.spec.js.map +1 -1
  94. package/dist/astUtils/stackedVisitor.spec.js +12 -12
  95. package/dist/astUtils/stackedVisitor.spec.js.map +1 -1
  96. package/dist/astUtils/visitors.d.ts +53 -35
  97. package/dist/astUtils/visitors.js +29 -3
  98. package/dist/astUtils/visitors.js.map +1 -1
  99. package/dist/astUtils/visitors.spec.js +178 -33
  100. package/dist/astUtils/visitors.spec.js.map +1 -1
  101. package/dist/astUtils/xml.d.ts +9 -9
  102. package/dist/astUtils/xml.js +9 -9
  103. package/dist/astUtils/xml.js.map +1 -1
  104. package/dist/bscPlugin/BscPlugin.d.ts +10 -2
  105. package/dist/bscPlugin/BscPlugin.js +33 -3
  106. package/dist/bscPlugin/BscPlugin.js.map +1 -1
  107. package/dist/bscPlugin/CallExpressionInfo.d.ts +36 -0
  108. package/dist/bscPlugin/CallExpressionInfo.js +131 -0
  109. package/dist/bscPlugin/CallExpressionInfo.js.map +1 -0
  110. package/dist/bscPlugin/FileWriter.d.ts +6 -0
  111. package/dist/bscPlugin/FileWriter.js +24 -0
  112. package/dist/bscPlugin/FileWriter.js.map +1 -0
  113. package/dist/bscPlugin/SignatureHelpUtil.d.ts +10 -0
  114. package/dist/bscPlugin/SignatureHelpUtil.js +135 -0
  115. package/dist/bscPlugin/SignatureHelpUtil.js.map +1 -0
  116. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js +14 -11
  117. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js.map +1 -1
  118. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js +16 -16
  119. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js.map +1 -1
  120. package/dist/bscPlugin/completions/CompletionsProcessor.d.ts +52 -1
  121. package/dist/bscPlugin/completions/CompletionsProcessor.js +517 -26
  122. package/dist/bscPlugin/completions/CompletionsProcessor.js.map +1 -1
  123. package/dist/bscPlugin/completions/CompletionsProcessor.spec.js +1909 -0
  124. package/dist/bscPlugin/completions/CompletionsProcessor.spec.js.map +1 -0
  125. package/dist/bscPlugin/fileProviders/FileProvider.d.ts +9 -0
  126. package/dist/bscPlugin/fileProviders/FileProvider.js +51 -0
  127. package/dist/bscPlugin/fileProviders/FileProvider.js.map +1 -0
  128. package/dist/bscPlugin/hover/HoverProcessor.d.ts +7 -7
  129. package/dist/bscPlugin/hover/HoverProcessor.js +123 -125
  130. package/dist/bscPlugin/hover/HoverProcessor.js.map +1 -1
  131. package/dist/bscPlugin/hover/HoverProcessor.spec.js +371 -53
  132. package/dist/bscPlugin/hover/HoverProcessor.spec.js.map +1 -1
  133. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.d.ts +2 -1
  134. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js +85 -23
  135. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js.map +1 -1
  136. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js +83 -6
  137. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js.map +1 -1
  138. package/dist/bscPlugin/serialize/BslibInjector.spec.js +19 -0
  139. package/dist/bscPlugin/serialize/BslibInjector.spec.js.map +1 -0
  140. package/dist/bscPlugin/serialize/BslibManager.d.ts +9 -0
  141. package/dist/bscPlugin/serialize/BslibManager.js +40 -0
  142. package/dist/bscPlugin/serialize/BslibManager.js.map +1 -0
  143. package/dist/bscPlugin/serialize/FileSerializer.d.ts +9 -0
  144. package/dist/bscPlugin/serialize/FileSerializer.js +72 -0
  145. package/dist/bscPlugin/serialize/FileSerializer.js.map +1 -0
  146. package/dist/bscPlugin/transpile/{BrsFilePreTranspileProcessor.d.ts → BrsFileTranspileProcessor.d.ts} +4 -2
  147. package/dist/bscPlugin/transpile/{BrsFilePreTranspileProcessor.js → BrsFileTranspileProcessor.js} +33 -9
  148. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.js.map +1 -0
  149. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.d.ts +1 -0
  150. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.js +41 -0
  151. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.js.map +1 -0
  152. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.d.ts +12 -0
  153. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.js +99 -0
  154. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.js.map +1 -0
  155. package/dist/bscPlugin/validation/BrsFileValidator.d.ts +13 -5
  156. package/dist/bscPlugin/validation/BrsFileValidator.js +259 -49
  157. package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -1
  158. package/dist/bscPlugin/validation/BrsFileValidator.spec.js +230 -14
  159. package/dist/bscPlugin/validation/BrsFileValidator.spec.js.map +1 -1
  160. package/dist/bscPlugin/validation/ProgramValidator.d.ts +10 -0
  161. package/dist/bscPlugin/validation/ProgramValidator.js +32 -0
  162. package/dist/bscPlugin/validation/ProgramValidator.js.map +1 -0
  163. package/dist/bscPlugin/validation/ScopeValidator.d.ts +54 -27
  164. package/dist/bscPlugin/validation/ScopeValidator.js +483 -286
  165. package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -1
  166. package/dist/bscPlugin/validation/ScopeValidator.spec.d.ts +1 -0
  167. package/dist/bscPlugin/validation/ScopeValidator.spec.js +2454 -0
  168. package/dist/bscPlugin/validation/ScopeValidator.spec.js.map +1 -0
  169. package/dist/bscPlugin/validation/XmlFileValidator.d.ts +8 -0
  170. package/dist/bscPlugin/validation/XmlFileValidator.js +44 -0
  171. package/dist/bscPlugin/validation/XmlFileValidator.js.map +1 -0
  172. package/dist/cli.js +104 -13
  173. package/dist/cli.js.map +1 -1
  174. package/dist/deferred.d.ts +3 -3
  175. package/dist/deferred.js.map +1 -1
  176. package/dist/diagnosticUtils.d.ts +8 -2
  177. package/dist/diagnosticUtils.js +47 -17
  178. package/dist/diagnosticUtils.js.map +1 -1
  179. package/dist/examples/plugins/removePrint.js +8 -10
  180. package/dist/examples/plugins/removePrint.js.map +1 -1
  181. package/dist/files/AssetFile.d.ts +26 -0
  182. package/dist/files/AssetFile.js +26 -0
  183. package/dist/files/AssetFile.js.map +1 -0
  184. package/dist/files/BrsFile.Class.spec.js +523 -493
  185. package/dist/files/BrsFile.Class.spec.js.map +1 -1
  186. package/dist/files/BrsFile.d.ts +112 -111
  187. package/dist/files/BrsFile.js +741 -1032
  188. package/dist/files/BrsFile.js.map +1 -1
  189. package/dist/files/BrsFile.spec.js +1728 -1232
  190. package/dist/files/BrsFile.spec.js.map +1 -1
  191. package/dist/files/BscFile.d.ts +104 -0
  192. package/dist/files/BscFile.js +16 -0
  193. package/dist/files/BscFile.js.map +1 -0
  194. package/dist/files/Factory.d.ts +25 -0
  195. package/dist/files/Factory.js +22 -0
  196. package/dist/files/Factory.js.map +1 -0
  197. package/dist/files/LazyFileData.d.ts +20 -0
  198. package/dist/files/LazyFileData.js +54 -0
  199. package/dist/files/LazyFileData.js.map +1 -0
  200. package/dist/files/LazyFileData.spec.d.ts +1 -0
  201. package/dist/files/LazyFileData.spec.js +27 -0
  202. package/dist/files/LazyFileData.spec.js.map +1 -0
  203. package/dist/files/XmlFile.d.ts +70 -32
  204. package/dist/files/XmlFile.js +106 -118
  205. package/dist/files/XmlFile.js.map +1 -1
  206. package/dist/files/XmlFile.spec.js +325 -262
  207. package/dist/files/XmlFile.spec.js.map +1 -1
  208. package/dist/files/tests/imports.spec.js +48 -40
  209. package/dist/files/tests/imports.spec.js.map +1 -1
  210. package/dist/files/tests/optionalChaning.spec.js +84 -24
  211. package/dist/files/tests/optionalChaning.spec.js.map +1 -1
  212. package/dist/globalCallables.js +16 -21
  213. package/dist/globalCallables.js.map +1 -1
  214. package/dist/index.d.ts +12 -1
  215. package/dist/index.js +12 -1
  216. package/dist/index.js.map +1 -1
  217. package/dist/interfaces.d.ts +389 -161
  218. package/dist/interfaces.js +27 -0
  219. package/dist/interfaces.js.map +1 -1
  220. package/dist/lexer/Character.spec.js +5 -5
  221. package/dist/lexer/Character.spec.js.map +1 -1
  222. package/dist/lexer/Lexer.d.ts +12 -5
  223. package/dist/lexer/Lexer.js +28 -13
  224. package/dist/lexer/Lexer.js.map +1 -1
  225. package/dist/lexer/Lexer.spec.js +181 -135
  226. package/dist/lexer/Lexer.spec.js.map +1 -1
  227. package/dist/lexer/Token.d.ts +9 -1
  228. package/dist/lexer/Token.js +9 -1
  229. package/dist/lexer/Token.js.map +1 -1
  230. package/dist/lexer/TokenKind.d.ts +8 -0
  231. package/dist/lexer/TokenKind.js +24 -4
  232. package/dist/lexer/TokenKind.js.map +1 -1
  233. package/dist/parser/AstNode.d.ts +162 -0
  234. package/dist/parser/AstNode.js +225 -0
  235. package/dist/parser/AstNode.js.map +1 -0
  236. package/dist/parser/AstNode.spec.d.ts +1 -0
  237. package/dist/parser/AstNode.spec.js +165 -0
  238. package/dist/parser/AstNode.spec.js.map +1 -0
  239. package/dist/parser/BrsTranspileState.d.ts +4 -7
  240. package/dist/parser/BrsTranspileState.js +4 -12
  241. package/dist/parser/BrsTranspileState.js.map +1 -1
  242. package/dist/parser/Expression.d.ts +126 -176
  243. package/dist/parser/Expression.js +523 -405
  244. package/dist/parser/Expression.js.map +1 -1
  245. package/dist/parser/Parser.Class.spec.js +151 -145
  246. package/dist/parser/Parser.Class.spec.js.map +1 -1
  247. package/dist/parser/Parser.d.ts +43 -201
  248. package/dist/parser/Parser.js +446 -962
  249. package/dist/parser/Parser.js.map +1 -1
  250. package/dist/parser/Parser.spec.d.ts +3 -1
  251. package/dist/parser/Parser.spec.js +1002 -846
  252. package/dist/parser/Parser.spec.js.map +1 -1
  253. package/dist/parser/SGParser.d.ts +9 -8
  254. package/dist/parser/SGParser.js +10 -8
  255. package/dist/parser/SGParser.js.map +1 -1
  256. package/dist/parser/SGParser.spec.js +27 -38
  257. package/dist/parser/SGParser.spec.js.map +1 -1
  258. package/dist/parser/SGTypes.d.ts +98 -35
  259. package/dist/parser/SGTypes.js +169 -99
  260. package/dist/parser/SGTypes.js.map +1 -1
  261. package/dist/parser/Statement.d.ts +183 -131
  262. package/dist/parser/Statement.js +549 -387
  263. package/dist/parser/Statement.js.map +1 -1
  264. package/dist/parser/Statement.spec.js +45 -21
  265. package/dist/parser/Statement.spec.js.map +1 -1
  266. package/dist/parser/TranspileState.d.ts +1 -1
  267. package/dist/parser/TranspileState.js +7 -12
  268. package/dist/parser/TranspileState.js.map +1 -1
  269. package/dist/parser/tests/Parser.spec.js +3 -2
  270. package/dist/parser/tests/Parser.spec.js.map +1 -1
  271. package/dist/parser/tests/controlFlow/For.spec.js +33 -23
  272. package/dist/parser/tests/controlFlow/For.spec.js.map +1 -1
  273. package/dist/parser/tests/controlFlow/ForEach.spec.js +25 -20
  274. package/dist/parser/tests/controlFlow/ForEach.spec.js.map +1 -1
  275. package/dist/parser/tests/controlFlow/If.spec.js +96 -94
  276. package/dist/parser/tests/controlFlow/If.spec.js.map +1 -1
  277. package/dist/parser/tests/controlFlow/While.spec.js +22 -16
  278. package/dist/parser/tests/controlFlow/While.spec.js.map +1 -1
  279. package/dist/parser/tests/expression/Additive.spec.js +8 -8
  280. package/dist/parser/tests/expression/Additive.spec.js.map +1 -1
  281. package/dist/parser/tests/expression/ArrayLiterals.spec.js +58 -21
  282. package/dist/parser/tests/expression/ArrayLiterals.spec.js.map +1 -1
  283. package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js +61 -20
  284. package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js.map +1 -1
  285. package/dist/parser/tests/expression/Boolean.spec.js +8 -8
  286. package/dist/parser/tests/expression/Boolean.spec.js.map +1 -1
  287. package/dist/parser/tests/expression/Call.spec.js +129 -21
  288. package/dist/parser/tests/expression/Call.spec.js.map +1 -1
  289. package/dist/parser/tests/expression/Exponential.spec.js +5 -5
  290. package/dist/parser/tests/expression/Exponential.spec.js.map +1 -1
  291. package/dist/parser/tests/expression/Function.spec.js +36 -36
  292. package/dist/parser/tests/expression/Function.spec.js.map +1 -1
  293. package/dist/parser/tests/expression/Indexing.spec.js +67 -22
  294. package/dist/parser/tests/expression/Indexing.spec.js.map +1 -1
  295. package/dist/parser/tests/expression/Multiplicative.spec.js +9 -9
  296. package/dist/parser/tests/expression/Multiplicative.spec.js.map +1 -1
  297. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js +59 -59
  298. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js.map +1 -1
  299. package/dist/parser/tests/expression/PrefixUnary.spec.js +12 -12
  300. package/dist/parser/tests/expression/PrefixUnary.spec.js.map +1 -1
  301. package/dist/parser/tests/expression/Primary.spec.js +12 -12
  302. package/dist/parser/tests/expression/Primary.spec.js.map +1 -1
  303. package/dist/parser/tests/expression/RegexLiteralExpression.spec.js +10 -10
  304. package/dist/parser/tests/expression/RegexLiteralExpression.spec.js.map +1 -1
  305. package/dist/parser/tests/expression/Relational.spec.js +13 -13
  306. package/dist/parser/tests/expression/Relational.spec.js.map +1 -1
  307. package/dist/parser/tests/expression/SourceLiteralExpression.spec.js +24 -24
  308. package/dist/parser/tests/expression/SourceLiteralExpression.spec.js.map +1 -1
  309. package/dist/parser/tests/expression/TemplateStringExpression.spec.js +96 -57
  310. package/dist/parser/tests/expression/TemplateStringExpression.spec.js.map +1 -1
  311. package/dist/parser/tests/expression/TernaryExpression.spec.js +89 -89
  312. package/dist/parser/tests/expression/TernaryExpression.spec.js.map +1 -1
  313. package/dist/parser/tests/expression/TypeExpression.spec.d.ts +1 -0
  314. package/dist/parser/tests/expression/TypeExpression.spec.js +127 -0
  315. package/dist/parser/tests/expression/TypeExpression.spec.js.map +1 -0
  316. package/dist/parser/tests/expression/UnaryExpression.spec.d.ts +1 -0
  317. package/dist/parser/tests/expression/UnaryExpression.spec.js +52 -0
  318. package/dist/parser/tests/expression/UnaryExpression.spec.js.map +1 -0
  319. package/dist/parser/tests/statement/AssignmentOperators.spec.js +15 -15
  320. package/dist/parser/tests/statement/AssignmentOperators.spec.js.map +1 -1
  321. package/dist/parser/tests/statement/ConstStatement.spec.js +82 -33
  322. package/dist/parser/tests/statement/ConstStatement.spec.js.map +1 -1
  323. package/dist/parser/tests/statement/Continue.spec.d.ts +1 -0
  324. package/dist/parser/tests/statement/Continue.spec.js +119 -0
  325. package/dist/parser/tests/statement/Continue.spec.js.map +1 -0
  326. package/dist/parser/tests/statement/Declaration.spec.js +19 -19
  327. package/dist/parser/tests/statement/Declaration.spec.js.map +1 -1
  328. package/dist/parser/tests/statement/Dim.spec.js +22 -22
  329. package/dist/parser/tests/statement/Dim.spec.js.map +1 -1
  330. package/dist/parser/tests/statement/Enum.spec.js +98 -302
  331. package/dist/parser/tests/statement/Enum.spec.js.map +1 -1
  332. package/dist/parser/tests/statement/For.spec.js +9 -10
  333. package/dist/parser/tests/statement/For.spec.js.map +1 -1
  334. package/dist/parser/tests/statement/ForEach.spec.js +8 -9
  335. package/dist/parser/tests/statement/ForEach.spec.js.map +1 -1
  336. package/dist/parser/tests/statement/Function.spec.js +44 -35
  337. package/dist/parser/tests/statement/Function.spec.js.map +1 -1
  338. package/dist/parser/tests/statement/Goto.spec.js +5 -5
  339. package/dist/parser/tests/statement/Goto.spec.js.map +1 -1
  340. package/dist/parser/tests/statement/Increment.spec.js +20 -20
  341. package/dist/parser/tests/statement/Increment.spec.js.map +1 -1
  342. package/dist/parser/tests/statement/InterfaceStatement.spec.js +30 -196
  343. package/dist/parser/tests/statement/InterfaceStatement.spec.js.map +1 -1
  344. package/dist/parser/tests/statement/LibraryStatement.spec.js +11 -11
  345. package/dist/parser/tests/statement/LibraryStatement.spec.js.map +1 -1
  346. package/dist/parser/tests/statement/Misc.spec.js +16 -78
  347. package/dist/parser/tests/statement/Misc.spec.js.map +1 -1
  348. package/dist/parser/tests/statement/PrintStatement.spec.js +35 -33
  349. package/dist/parser/tests/statement/PrintStatement.spec.js.map +1 -1
  350. package/dist/parser/tests/statement/ReturnStatement.spec.js +14 -12
  351. package/dist/parser/tests/statement/ReturnStatement.spec.js.map +1 -1
  352. package/dist/parser/tests/statement/Set.spec.js +48 -35
  353. package/dist/parser/tests/statement/Set.spec.js.map +1 -1
  354. package/dist/parser/tests/statement/Stop.spec.js +6 -6
  355. package/dist/parser/tests/statement/Stop.spec.js.map +1 -1
  356. package/dist/parser/tests/statement/Throw.spec.js +6 -6
  357. package/dist/parser/tests/statement/Throw.spec.js.map +1 -1
  358. package/dist/parser/tests/statement/TryCatch.spec.js +18 -16
  359. package/dist/parser/tests/statement/TryCatch.spec.js.map +1 -1
  360. package/dist/preprocessor/Manifest.d.ts +1 -1
  361. package/dist/preprocessor/Manifest.js +2 -2
  362. package/dist/preprocessor/Manifest.js.map +1 -1
  363. package/dist/preprocessor/Manifest.spec.js +8 -8
  364. package/dist/preprocessor/Manifest.spec.js.map +1 -1
  365. package/dist/preprocessor/Preprocessor.d.ts +5 -6
  366. package/dist/preprocessor/Preprocessor.js +5 -5
  367. package/dist/preprocessor/Preprocessor.js.map +1 -1
  368. package/dist/preprocessor/Preprocessor.spec.js +25 -25
  369. package/dist/preprocessor/Preprocessor.spec.js.map +1 -1
  370. package/dist/preprocessor/PreprocessorParser.d.ts +1 -1
  371. package/dist/preprocessor/PreprocessorParser.js +7 -1
  372. package/dist/preprocessor/PreprocessorParser.js.map +1 -1
  373. package/dist/preprocessor/PreprocessorParser.spec.js +13 -13
  374. package/dist/preprocessor/PreprocessorParser.spec.js.map +1 -1
  375. package/dist/roku-types/data.json +5892 -10081
  376. package/dist/roku-types/index.d.ts +622 -1719
  377. package/dist/types/ArrayType.d.ts +10 -9
  378. package/dist/types/ArrayType.js +65 -60
  379. package/dist/types/ArrayType.js.map +1 -1
  380. package/dist/types/ArrayType.spec.js +36 -68
  381. package/dist/types/ArrayType.spec.js.map +1 -1
  382. package/dist/types/AssociativeArrayType.d.ts +11 -0
  383. package/dist/types/AssociativeArrayType.js +52 -0
  384. package/dist/types/AssociativeArrayType.js.map +1 -0
  385. package/dist/types/BaseFunctionType.d.ts +9 -0
  386. package/dist/types/BaseFunctionType.js +25 -0
  387. package/dist/types/BaseFunctionType.js.map +1 -0
  388. package/dist/types/BooleanType.d.ts +8 -5
  389. package/dist/types/BooleanType.js +14 -7
  390. package/dist/types/BooleanType.js.map +1 -1
  391. package/dist/types/BooleanType.spec.js +10 -6
  392. package/dist/types/BooleanType.spec.js.map +1 -1
  393. package/dist/types/BscType.d.ts +32 -21
  394. package/dist/types/BscType.js +118 -21
  395. package/dist/types/BscType.js.map +1 -1
  396. package/dist/types/BscTypeKind.d.ts +25 -0
  397. package/dist/types/BscTypeKind.js +30 -0
  398. package/dist/types/BscTypeKind.js.map +1 -0
  399. package/dist/types/BuiltInInterfaceAdder.d.ts +23 -0
  400. package/dist/types/BuiltInInterfaceAdder.js +164 -0
  401. package/dist/types/BuiltInInterfaceAdder.js.map +1 -0
  402. package/dist/types/BuiltInInterfaceAdder.spec.d.ts +1 -0
  403. package/dist/types/BuiltInInterfaceAdder.spec.js +116 -0
  404. package/dist/types/BuiltInInterfaceAdder.spec.js.map +1 -0
  405. package/dist/types/ClassType.d.ts +17 -0
  406. package/dist/types/ClassType.js +58 -0
  407. package/dist/types/ClassType.js.map +1 -0
  408. package/dist/types/ClassType.spec.d.ts +1 -0
  409. package/dist/types/ClassType.spec.js +77 -0
  410. package/dist/types/ClassType.spec.js.map +1 -0
  411. package/dist/types/ComponentType.d.ts +26 -0
  412. package/dist/types/ComponentType.js +83 -0
  413. package/dist/types/ComponentType.js.map +1 -0
  414. package/dist/types/DoubleType.d.ts +8 -5
  415. package/dist/types/DoubleType.js +18 -16
  416. package/dist/types/DoubleType.js.map +1 -1
  417. package/dist/types/DoubleType.spec.js +12 -6
  418. package/dist/types/DoubleType.spec.js.map +1 -1
  419. package/dist/types/DynamicType.d.ts +9 -5
  420. package/dist/types/DynamicType.js +15 -4
  421. package/dist/types/DynamicType.js.map +1 -1
  422. package/dist/types/DynamicType.spec.js +16 -5
  423. package/dist/types/DynamicType.spec.js.map +1 -1
  424. package/dist/types/EnumType.d.ts +30 -12
  425. package/dist/types/EnumType.js +43 -17
  426. package/dist/types/EnumType.js.map +1 -1
  427. package/dist/types/EnumType.spec.d.ts +1 -0
  428. package/dist/types/EnumType.spec.js +33 -0
  429. package/dist/types/EnumType.spec.js.map +1 -0
  430. package/dist/types/FloatType.d.ts +8 -5
  431. package/dist/types/FloatType.js +18 -16
  432. package/dist/types/FloatType.js.map +1 -1
  433. package/dist/types/FloatType.spec.js +4 -6
  434. package/dist/types/FloatType.spec.js.map +1 -1
  435. package/dist/types/FunctionType.d.ts +13 -8
  436. package/dist/types/FunctionType.js +30 -14
  437. package/dist/types/FunctionType.js.map +1 -1
  438. package/dist/types/InheritableType.d.ts +28 -0
  439. package/dist/types/InheritableType.js +152 -0
  440. package/dist/types/InheritableType.js.map +1 -0
  441. package/dist/types/IntegerType.d.ts +8 -5
  442. package/dist/types/IntegerType.js +18 -16
  443. package/dist/types/IntegerType.js.map +1 -1
  444. package/dist/types/IntegerType.spec.js +8 -6
  445. package/dist/types/IntegerType.spec.js.map +1 -1
  446. package/dist/types/InterfaceType.d.ts +12 -13
  447. package/dist/types/InterfaceType.js +20 -48
  448. package/dist/types/InterfaceType.js.map +1 -1
  449. package/dist/types/InterfaceType.spec.js +90 -56
  450. package/dist/types/InterfaceType.spec.js.map +1 -1
  451. package/dist/types/InvalidType.d.ts +7 -5
  452. package/dist/types/InvalidType.js +13 -7
  453. package/dist/types/InvalidType.js.map +1 -1
  454. package/dist/types/InvalidType.spec.js +8 -6
  455. package/dist/types/InvalidType.spec.js.map +1 -1
  456. package/dist/types/LongIntegerType.d.ts +8 -5
  457. package/dist/types/LongIntegerType.js +17 -15
  458. package/dist/types/LongIntegerType.js.map +1 -1
  459. package/dist/types/LongIntegerType.spec.js +10 -6
  460. package/dist/types/LongIntegerType.spec.js.map +1 -1
  461. package/dist/types/NamespaceType.d.ts +12 -0
  462. package/dist/types/NamespaceType.js +28 -0
  463. package/dist/types/NamespaceType.js.map +1 -0
  464. package/dist/types/ObjectType.d.ts +9 -8
  465. package/dist/types/ObjectType.js +21 -11
  466. package/dist/types/ObjectType.js.map +1 -1
  467. package/dist/types/ObjectType.spec.js +3 -3
  468. package/dist/types/ObjectType.spec.js.map +1 -1
  469. package/dist/types/ReferenceType.d.ts +63 -0
  470. package/dist/types/ReferenceType.js +423 -0
  471. package/dist/types/ReferenceType.js.map +1 -0
  472. package/dist/types/ReferenceType.spec.d.ts +1 -0
  473. package/dist/types/ReferenceType.spec.js +137 -0
  474. package/dist/types/ReferenceType.spec.js.map +1 -0
  475. package/dist/types/StringType.d.ts +11 -5
  476. package/dist/types/StringType.js +18 -7
  477. package/dist/types/StringType.js.map +1 -1
  478. package/dist/types/StringType.spec.js +3 -5
  479. package/dist/types/StringType.spec.js.map +1 -1
  480. package/dist/types/TypedFunctionType.d.ts +22 -17
  481. package/dist/types/TypedFunctionType.js +78 -60
  482. package/dist/types/TypedFunctionType.js.map +1 -1
  483. package/dist/types/TypedFunctionType.spec.js +105 -20
  484. package/dist/types/TypedFunctionType.spec.js.map +1 -1
  485. package/dist/types/UninitializedType.d.ts +8 -6
  486. package/dist/types/UninitializedType.js +13 -7
  487. package/dist/types/UninitializedType.js.map +1 -1
  488. package/dist/types/UnionType.d.ts +20 -0
  489. package/dist/types/UnionType.js +123 -0
  490. package/dist/types/UnionType.js.map +1 -0
  491. package/dist/types/UnionType.spec.d.ts +1 -0
  492. package/dist/types/UnionType.spec.js +130 -0
  493. package/dist/types/UnionType.spec.js.map +1 -0
  494. package/dist/types/VoidType.d.ts +8 -5
  495. package/dist/types/VoidType.js +14 -7
  496. package/dist/types/VoidType.js.map +1 -1
  497. package/dist/types/VoidType.spec.js +3 -3
  498. package/dist/types/VoidType.spec.js.map +1 -1
  499. package/dist/types/helper.spec.d.ts +1 -0
  500. package/dist/types/helper.spec.js +145 -0
  501. package/dist/types/helper.spec.js.map +1 -0
  502. package/dist/types/helpers.d.ts +19 -37
  503. package/dist/types/helpers.js +159 -99
  504. package/dist/types/helpers.js.map +1 -1
  505. package/dist/types/index.d.ts +22 -0
  506. package/dist/types/index.js +39 -0
  507. package/dist/types/index.js.map +1 -0
  508. package/dist/util.d.ts +132 -137
  509. package/dist/util.js +796 -362
  510. package/dist/util.js.map +1 -1
  511. package/dist/validators/ClassValidator.d.ts +8 -25
  512. package/dist/validators/ClassValidator.js +96 -176
  513. package/dist/validators/ClassValidator.js.map +1 -1
  514. package/package.json +165 -152
  515. package/dist/astUtils/AstEditor.js.map +0 -1
  516. package/dist/astUtils/AstEditor.spec.js.map +0 -1
  517. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js.map +0 -1
  518. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.js +0 -32
  519. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.js.map +0 -1
  520. package/dist/parser/SGTypes.spec.js +0 -351
  521. package/dist/parser/SGTypes.spec.js.map +0 -1
  522. package/dist/types/CustomType.d.ts +0 -12
  523. package/dist/types/CustomType.js +0 -44
  524. package/dist/types/CustomType.js.map +0 -1
  525. package/dist/types/LazyType.d.ts +0 -16
  526. package/dist/types/LazyType.js +0 -44
  527. package/dist/types/LazyType.js.map +0 -1
  528. /package/dist/astUtils/{AstEditor.spec.d.ts → Editor.spec.d.ts} +0 -0
  529. /package/dist/bscPlugin/{transpile/BrsFilePreTranspileProcessor.spec.d.ts → completions/CompletionsProcessor.spec.d.ts} +0 -0
  530. /package/dist/{parser/SGTypes.spec.d.ts → bscPlugin/serialize/BslibInjector.spec.d.ts} +0 -0
@@ -1,20 +1,25 @@
1
+ /// <reference types="node" />
1
2
  import type { Range, Diagnostic, CodeAction, SemanticTokenTypes, SemanticTokenModifiers, Position, CompletionItem } from 'vscode-languageserver';
2
3
  import type { Scope } from './Scope';
3
4
  import type { BrsFile } from './files/BrsFile';
4
5
  import type { XmlFile } from './files/XmlFile';
6
+ import type { FunctionScope } from './FunctionScope';
5
7
  import type { TypedFunctionType } from './types/TypedFunctionType';
6
8
  import type { ParseMode } from './parser/Parser';
7
9
  import type { Program } from './Program';
8
10
  import type { ProgramBuilder } from './ProgramBuilder';
9
- import type { ClassStatement, EnumStatement, FunctionStatement, InterfaceStatement, Statement } from './parser/Statement';
10
- import type { Expression, FunctionExpression } from './parser/Expression';
11
+ import type { ClassStatement, ConstStatement, EnumStatement, FunctionStatement, NamespaceStatement } from './parser/Statement';
12
+ import type { AstNode, Expression, Statement } from './parser/AstNode';
11
13
  import type { TranspileState } from './parser/TranspileState';
12
- import type { SourceMapGenerator, SourceNode } from 'source-map';
13
- import type { BscType, SymbolContainer } from './types/BscType';
14
- import type { Token } from './lexer/Token';
15
- import type { AstEditor } from './astUtils/AstEditor';
16
- import type { CustomType } from './types/CustomType';
17
- import type { InterfaceType } from './types/InterfaceType';
14
+ import type { SourceNode } from 'source-map';
15
+ import type { BscType } from './types/BscType';
16
+ import type { Editor } from './astUtils/Editor';
17
+ import type { Identifier, Token } from './lexer/Token';
18
+ import type { BscFile } from './files/BscFile';
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';
18
23
  export interface BsDiagnostic extends Diagnostic {
19
24
  file: BscFile;
20
25
  /**
@@ -22,7 +27,16 @@ export interface BsDiagnostic extends Diagnostic {
22
27
  */
23
28
  data?: any;
24
29
  }
25
- export declare type BscFile = BrsFile | XmlFile;
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
+ }
26
40
  export interface Callable {
27
41
  file: BscFile;
28
42
  name: string;
@@ -64,12 +78,12 @@ export interface FunctionCall {
64
78
  * The full range of this function call (from the start of the function name to its closing paren)
65
79
  */
66
80
  range: Range;
67
- functionExpression: FunctionExpression;
81
+ expression: CallExpression;
82
+ functionScope: FunctionScope;
68
83
  file: BscFile;
69
- name: Token;
84
+ name: string;
70
85
  args: CallableArg[];
71
86
  nameRange: Range;
72
- isDottedInvocation: boolean;
73
87
  }
74
88
  /**
75
89
  * An argument for an expression call.
@@ -102,12 +116,12 @@ export interface FileObj {
102
116
  */
103
117
  export interface FileReference {
104
118
  /**
105
- * The pkgPath to the referenced file.
119
+ * The destPath for the referenced file.
106
120
  */
107
- pkgPath: string;
121
+ destPath: string;
108
122
  text: string;
109
123
  /**
110
- * The file that is doing the import. Note this is NOT the file the pkgPath points to.
124
+ * The file that is doing the import. Note this is NOT the file the destPath points to.
111
125
  */
112
126
  sourceFile: XmlFile | BrsFile;
113
127
  /**
@@ -120,7 +134,7 @@ export interface FileReference {
120
134
  }
121
135
  export interface VariableDeclaration {
122
136
  name: string;
123
- type: BscType;
137
+ getType: () => BscType;
124
138
  /**
125
139
  * The range for the variable name
126
140
  */
@@ -165,17 +179,42 @@ export interface CommentFlag {
165
179
  export declare type CompilerPluginFactory = () => CompilerPlugin;
166
180
  export interface CompilerPlugin {
167
181
  name: string;
182
+ /**
183
+ * Called before a new program is created
184
+ */
168
185
  beforeProgramCreate?: PluginHandler<BeforeProgramCreateEvent>;
186
+ /**
187
+ * Called after a new program is created
188
+ */
169
189
  afterProgramCreate?: PluginHandler<AfterProgramCreateEvent>;
170
- beforePrepublish?: PluginHandler<BeforePrepublishEvent>;
171
- afterPrepublish?: PluginHandler<AfterPrepublishEvent>;
172
- beforePublish?: PluginHandler<BeforePublishEvent>;
173
- afterPublish?: PluginHandler<AfterPublishEvent>;
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
+ */
174
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
+ */
175
213
  afterProgramValidate?: PluginHandler<AfterProgramValidateEvent>;
176
- beforeProgramTranspile?: PluginHandler<BeforeProgramTranspileEvent>;
177
- afterProgramTranspile?: PluginHandler<AfterProgramTranspileEvent>;
178
- onGetCodeActions?: PluginHandler<OnGetCodeActionsEvent>;
214
+ /**
215
+ * Called right before the program is disposed/destroyed
216
+ */
217
+ beforeProgramDispose?: PluginHandler<BeforeProgramDisposeEvent>;
179
218
  /**
180
219
  * Emitted before the program starts collecting completions
181
220
  */
@@ -200,15 +239,49 @@ export interface CompilerPlugin {
200
239
  * Called after the `provideHover` hook. Use this if you want to intercept or sanitize the hover data (even from other plugins) before it gets sent to the client.
201
240
  */
202
241
  afterProvideHover?: PluginHandler<AfterProvideHoverEvent>;
203
- onGetSemanticTokens?: PluginHandler<OnGetSemanticTokensEvent>;
242
+ /**
243
+ * Called after a scope was created
244
+ */
204
245
  afterScopeCreate?: PluginHandler<AfterScopeCreateEvent>;
205
246
  beforeScopeDispose?: PluginHandler<BeforeScopeDisposeEvent>;
247
+ onScopeDispose?: PluginHandler<OnScopeDisposeEvent>;
206
248
  afterScopeDispose?: PluginHandler<AfterScopeDisposeEvent>;
207
249
  beforeScopeValidate?: PluginHandler<BeforeScopeValidateEvent>;
208
250
  onScopeValidate?: PluginHandler<OnScopeValidateEvent>;
209
- afterScopeValidate?: PluginHandler<AfterScopeValidateEvent>;
210
- beforeFileParse?: PluginHandler<BeforeFileParseEvent>;
211
- afterFileParse?: PluginHandler<AfterFileParseEvent>;
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>;
212
285
  /**
213
286
  * Called before each file is validated
214
287
  */
@@ -221,34 +294,83 @@ export interface CompilerPlugin {
221
294
  * Called after each file is validated
222
295
  */
223
296
  afterFileValidate?: PluginHandler<AfterFileValidateEvent>;
224
- beforeFileTranspile?: PluginHandler<BeforeFileTranspileEvent>;
225
- afterFileTranspile?: PluginHandler<AfterFileTranspileEvent>;
226
- beforeFileDispose?: PluginHandler<BeforeFileDisposeEvent>;
227
- afterFileDispose?: PluginHandler<AfterFileDisposeEvent>;
297
+ /**
298
+ * Called right before the program builds (i.e. generates the code and puts it in the stagingDir
299
+ */
300
+ beforeBuildProgram?: PluginHandler<BeforeBuildProgramEvent>;
301
+ /**
302
+ * Called right after the program builds (i.e. generates the code and puts it in the stagingDir
303
+ */
304
+ afterBuildProgram?: PluginHandler<AfterBuildProgramEvent>;
305
+ /**
306
+ * Before preparing the file for building
307
+ */
308
+ beforePrepareFile?: PluginHandler<BeforePrepareFileEvent>;
309
+ /**
310
+ * Prepare the file for building
311
+ */
312
+ prepareFile?: PluginHandler<PrepareFileEvent>;
313
+ /**
314
+ * After preparing the file for building
315
+ */
316
+ afterPrepareFile?: PluginHandler<AfterPrepareFileEvent>;
317
+ /**
318
+ * Before the program turns all file objects into their final buffers
319
+ */
320
+ beforeSerializeProgram?: PluginHandler<BeforeSerializeProgramEvent>;
321
+ /**
322
+ * Emitted right at the start of the program turning all file objects into their final buffers
323
+ */
324
+ onSerializeProgram?: PluginHandler<OnSerializeProgramEvent>;
325
+ /**
326
+ * After the program turns all file objects into their final buffers
327
+ */
328
+ afterSerializeProgram?: PluginHandler<AfterSerializeProgramEvent>;
329
+ /**
330
+ * Before turning the file into its final contents
331
+ */
332
+ beforeSerializeFile?: PluginHandler<BeforeSerializeFileEvent>;
333
+ /**
334
+ * Turn the file into its final contents (i.e. transpile a bs file, compress a jpeg, etc)
335
+ */
336
+ serializeFile?: PluginHandler<SerializeFileEvent>;
337
+ /**
338
+ * After turning the file into its final contents
339
+ */
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>;
349
+ /**
350
+ * Before a file is written to disk. These are raw files that contain the final output. One `File` may produce several of these
351
+ */
352
+ beforeWriteFile?: PluginHandler<BeforeWriteFileEvent>;
353
+ /**
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
356
+ */
357
+ writeFile?: PluginHandler<WriteFileEvent>;
358
+ /**
359
+ * Before a file is written to disk. These are raw files that contain the final output. One `File` may produce several of these
360
+ */
361
+ afterWriteFile?: PluginHandler<AfterWriteFileEvent>;
228
362
  }
229
363
  export declare type PluginHandler<T, R = void> = (event: T) => R;
230
- export interface BeforeProgramCreateEvent {
231
- builder: ProgramBuilder;
232
- }
233
- export interface BeforePrepublishEvent {
234
- builder: ProgramBuilder;
235
- program: Program;
236
- files: FileObj[];
237
- }
238
- export interface AfterPrepublishEvent {
239
- builder: ProgramBuilder;
240
- program: Program;
241
- files: FileObj[];
242
- }
243
- export interface BeforePublishEvent {
244
- builder: ProgramBuilder;
364
+ export interface OnGetCodeActionsEvent<TFile extends BscFile = BscFile> {
245
365
  program: Program;
246
- files: FileObj[];
366
+ file: TFile;
367
+ range: Range;
368
+ scopes: Scope[];
369
+ diagnostics: BsDiagnostic[];
370
+ codeActions: CodeAction[];
247
371
  }
248
- export interface AfterPublishEvent {
372
+ export interface BeforeProgramCreateEvent {
249
373
  builder: ProgramBuilder;
250
- program: Program;
251
- files: FileObj[];
252
374
  }
253
375
  export interface AfterProgramCreateEvent {
254
376
  builder: ProgramBuilder;
@@ -257,27 +379,8 @@ export interface AfterProgramCreateEvent {
257
379
  export interface BeforeProgramValidateEvent {
258
380
  program: Program;
259
381
  }
260
- export interface AfterProgramValidateEvent {
261
- program: Program;
262
- }
263
- export interface BeforeProgramTranspileEvent {
264
- program: Program;
265
- entries: TranspileEntry[];
266
- editor: AstEditor;
267
- }
268
- export interface AfterProgramTranspileEvent {
269
- program: Program;
270
- entries: TranspileEntry[];
271
- editor: AstEditor;
272
- }
273
- export interface OnGetCodeActionsEvent {
274
- program: Program;
275
- file: BscFile;
276
- range: Range;
277
- scopes: Scope[];
278
- diagnostics: BsDiagnostic[];
279
- codeActions: CodeAction[];
280
- }
382
+ export declare type OnProgramValidateEvent = BeforeProgramValidateEvent;
383
+ export declare type AfterProgramValidateEvent = BeforeProgramValidateEvent;
281
384
  export interface ProvideCompletionsEvent<TFile extends BscFile = BscFile> {
282
385
  program: Program;
283
386
  file: TFile;
@@ -287,6 +390,12 @@ export interface ProvideCompletionsEvent<TFile extends BscFile = BscFile> {
287
390
  }
288
391
  export declare type BeforeProvideCompletionsEvent<TFile extends BscFile = BscFile> = ProvideCompletionsEvent<TFile>;
289
392
  export declare type AfterProvideCompletionsEvent<TFile extends BscFile = BscFile> = ProvideCompletionsEvent<TFile>;
393
+ export interface BeforeBuildProgramEvent {
394
+ program: Program;
395
+ files: BscFile[];
396
+ editor: Editor;
397
+ }
398
+ export declare type AfterBuildProgramEvent = BeforeBuildProgramEvent;
290
399
  export interface ProvideHoverEvent {
291
400
  program: Program;
292
401
  file: BscFile;
@@ -319,30 +428,25 @@ export interface BeforeScopeDisposeEvent {
319
428
  program: Program;
320
429
  scope: Scope;
321
430
  }
322
- export interface AfterScopeDisposeEvent {
431
+ export interface OnScopeDisposeEvent {
323
432
  program: Program;
324
433
  scope: Scope;
325
434
  }
326
- export interface BeforeScopeValidateEvent {
435
+ export interface AfterScopeDisposeEvent {
327
436
  program: Program;
328
437
  scope: Scope;
329
438
  }
330
- export interface AfterScopeValidateEvent {
439
+ export interface BeforeScopeValidateEvent {
331
440
  program: Program;
332
441
  scope: Scope;
333
442
  }
334
- export interface OnScopeGetCodeActionsEvent {
443
+ export declare type AfterScopeValidateEvent = BeforeScopeValidateEvent;
444
+ export interface BeforeFileParseEvent {
335
445
  program: Program;
336
- scope: Scope;
337
- file: BscFile;
338
- range: Range;
339
- /**
340
- * A filtered list of diagnostics whose lines touch the lines of the given range
341
- */
342
- diagnostics: BsDiagnostic[];
343
- codeActions: CodeAction[];
446
+ srcPath: string;
447
+ source: string;
344
448
  }
345
- export interface BeforeFileParseEvent {
449
+ export interface OnFileParseEvent {
346
450
  program: Program;
347
451
  srcPath: string;
348
452
  source: string;
@@ -369,28 +473,30 @@ export interface OnGetSemanticTokensEvent<T extends BscFile = BscFile> {
369
473
  */
370
474
  semanticTokens: SemanticToken[];
371
475
  }
372
- export interface BeforeFileValidateEvent<T extends BscFile = BscFile> {
476
+ export declare type BeforeFileValidateEvent = OnFileValidateEvent;
477
+ export interface OnFileValidateEvent<T extends BscFile = BscFile> {
373
478
  program: Program;
374
479
  file: T;
375
480
  }
481
+ export declare type AfterFileValidateEvent = OnFileValidateEvent;
376
482
  export interface OnFileValidateEvent<T extends BscFile = BscFile> {
377
483
  program: Program;
378
484
  file: T;
379
485
  }
380
- export interface AfterFileValidateEvent<T extends BscFile = BscFile> {
381
- program: Program;
382
- file: T;
486
+ export interface TranspileEntry {
487
+ file: BscFile;
488
+ outputPath: string;
489
+ }
490
+ export interface ScopeValidationOptions {
491
+ changedFiles?: BscFile[];
492
+ changedSymbols?: Map<SymbolTypeFlag, Set<string>>;
493
+ force?: boolean;
383
494
  }
384
- export interface BeforeFileTranspileEvent<TFile extends BscFile = BscFile> {
495
+ export interface OnScopeValidateEvent {
385
496
  program: Program;
386
- file: TFile;
387
- outputPath: string;
388
- /**
389
- * An editor that can be used to transform properties or arrays. Once the `afterFileTranspile` event has fired, these changes will be reverted,
390
- * 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
391
- * the changes to persist in the in-memory file.
392
- */
393
- editor: Editor;
497
+ scope: Scope;
498
+ changedFiles?: BscFile[];
499
+ changedSymbols?: Map<SymbolTypeFlag, Set<string>>;
394
500
  }
395
501
  export interface AfterFileTranspileEvent<TFile extends BscFile = BscFile> {
396
502
  /**
@@ -406,45 +512,150 @@ export interface AfterFileTranspileEvent<TFile extends BscFile = BscFile> {
406
512
  /**
407
513
  * The sourceMaps for the generated code (if emitting source maps is enabled)
408
514
  */
409
- map?: SourceMapGenerator;
515
+ map?: string;
410
516
  /**
411
517
  * The generated type definition file contents (if emitting type definitions are enabled)
412
518
  */
413
519
  typedef?: string;
520
+ }
521
+ export declare type BeforeProvideFileEvent<TFile extends BscFile = BscFile> = ProvideFileEvent<TFile>;
522
+ export interface ProvideFileEvent<TFile extends BscFile = BscFile> {
523
+ /**
524
+ * The lower-case file extension for the srcPath. (i.e. ".brs", ".xml")
525
+ */
526
+ srcExtension: string;
414
527
  /**
415
- * An editor that can be used to transform properties or arrays. Once the `afterFileTranspile` event has fired, these changes will be reverted,
416
- * 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
417
- * the changes to persist in the in-memory file.
528
+ * The srcPath for the file. (i.e. `/user/bob/projects/VideoApp/source/main.bs`)
418
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
+ /**
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)
551
+ */
552
+ fileFactory: FileFactory;
553
+ }
554
+ export declare type AfterProvideFileEvent<TFile extends BscFile = BscFile> = ProvideFileEvent<TFile>;
555
+ export interface BeforeFileAddEvent<TFile extends BscFile = BscFile> {
556
+ file: TFile;
557
+ program: Program;
558
+ }
559
+ export declare type AfterFileAddEvent<TFile extends BscFile = BscFile> = BeforeFileAddEvent<TFile>;
560
+ export interface BeforeFileRemoveEvent<TFile extends BscFile = BscFile> {
561
+ file: TFile;
562
+ program: Program;
563
+ }
564
+ export declare type AfterFileRemoveEvent<TFile extends BscFile = BscFile> = 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;
419
571
  editor: Editor;
420
572
  }
421
- export interface BeforeFileDisposeEvent {
573
+ export declare type AfterPrepareProgramEvent = PrepareProgramEvent;
574
+ export declare type BeforePrepareFileEvent<TFile extends BscFile = BscFile> = PrepareFileEvent<TFile>;
575
+ /**
576
+ * Prepare the file for building
577
+ */
578
+ export interface PrepareFileEvent<TFile extends BscFile = BscFile> {
422
579
  program: Program;
423
- file: BscFile;
580
+ file: TFile;
581
+ editor: Editor;
424
582
  }
425
- export interface AfterFileDisposeEvent {
583
+ export declare type OnPrepareFileEvent<TFile extends BscFile = BscFile> = PrepareFileEvent<TFile>;
584
+ export declare type AfterPrepareFileEvent<TFile extends BscFile = BscFile> = 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 {
426
594
  program: Program;
427
- file: BscFile;
595
+ files: BscFile[];
596
+ result: Map<BscFile, 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;
428
612
  }
429
- export interface OnFileGetCodeActionsEvent {
613
+ export declare type BeforeSerializeFileEvent<TFile extends BscFile = BscFile> = SerializeFileEvent<TFile>;
614
+ export interface SerializeFileEvent<TFile extends BscFile = BscFile> {
430
615
  program: Program;
431
- file: BscFile;
432
- range: Range;
616
+ file: TFile;
433
617
  /**
434
- * A filtered list of diagnostics whose lines touch the lines of the given range
618
+ * The list of all files created across all the `SerializeFile` events.
619
+ * The key is the pkgPath of the file, and the
435
620
  */
436
- diagnostics: BsDiagnostic[];
437
- codeActions: CodeAction[];
621
+ result: Map<TFile, SerializedFile[]>;
438
622
  }
439
- export interface TranspileEntry {
623
+ export declare type AfterSerializeFileEvent<TFile extends BscFile = BscFile> = SerializeFileEvent<TFile>;
624
+ export interface BeforeWriteProgramEvent {
625
+ program: Program;
626
+ stagingDir: string;
627
+ files: Map<BscFile, 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 {
440
645
  file: BscFile;
646
+ /**
647
+ * The absolute path to where the file should be written during build. (i.e. somewhere inside the stagingDir)
648
+ */
441
649
  outputPath: string;
442
650
  }
443
- export interface OnScopeValidateEvent {
651
+ export interface BeforeFileDisposeEvent {
652
+ program: Program;
653
+ file: BscFile;
654
+ }
655
+ export declare type AfterFileDisposeEvent = BeforeFileDisposeEvent;
656
+ export interface BeforeProgramDisposeEvent {
444
657
  program: Program;
445
- scope: Scope;
446
658
  }
447
- export declare type Editor = Pick<AstEditor, 'addToArray' | 'hasChanges' | 'removeFromArray' | 'setArrayValue' | 'setProperty' | 'overrideTranspileResult' | 'arrayPop' | 'arrayPush' | 'arrayShift' | 'arraySplice' | 'arrayUnshift' | 'removeProperty' | 'edit'>;
448
659
  export interface SemanticToken {
449
660
  range: Range;
450
661
  tokenType: SemanticTokenTypes;
@@ -457,10 +668,7 @@ export interface TypedefProvider {
457
668
  getTypedef(state: TranspileState): Array<SourceNode | string>;
458
669
  }
459
670
  export declare type TranspileResult = Array<(string | SourceNode)>;
460
- /**
461
- * @param srcPath The absolute path to the source file on disk
462
- */
463
- export declare type FileResolver = (srcPath: string) => string | undefined | Thenable<string | undefined> | void;
671
+ export declare type FileResolver = (srcPath: string) => string | Buffer | undefined | Thenable<string | Buffer | undefined> | void;
464
672
  export interface ExpressionInfo {
465
673
  expressions: Expression[];
466
674
  varExpressions: Expression[];
@@ -471,46 +679,66 @@ export interface FileLink<T> {
471
679
  item: T;
472
680
  file: BrsFile;
473
681
  }
474
- /**
475
- * Common interface to support Statements which define entities that have a member table
476
- * e.g. Class, Interface
477
- */
478
- export interface MemberSymbolTableProvider extends SymbolContainer {
479
- buildSymbolTable(parent?: InheritableStatement): void;
480
- hasParent(): boolean;
481
- getPossibleFullParentNames(): string[];
482
- getName(parseMode: ParseMode): string;
483
- getThisBscType(): BscType;
484
- }
485
- export declare type InheritableStatement = ClassStatement | InterfaceStatement;
486
- export declare type InheritableType = CustomType | InterfaceType;
487
- export declare type NamedTypeStatement = InheritableStatement | EnumStatement;
488
- /**
489
- * Options for the parser functionDeclaration() method
490
- */
491
- export interface FunctionDeclarationParseOptions {
492
- /**
493
- * Function should have a name. Add a diagnostic if it is not there
494
- * False for for anonymous functions
495
- */
496
- hasName?: boolean;
497
- /**
498
- * Function should have a body. Add a diagnostic if it is not there
499
- * False for for functions defined in Interfaces
500
- */
501
- hasBody?: boolean;
502
- /**
503
- * Function should have an end token. Add a diagnostic if it is not there
504
- * False for for functions defined in Interfaces
505
- */
506
- hasEnd?: boolean;
507
- /**
508
- *This function is only callable as a member for a class or interface, etc.
509
- */
510
- onlyCallableAsMember?: boolean;
511
- }
512
- export declare type AstNode = Expression | Statement;
513
- export interface MinMax {
514
- min: number;
515
- max: number;
682
+ export interface ExtraSymbolData {
683
+ definingNode?: AstNode;
684
+ description?: string;
685
+ completionPriority?: number;
686
+ flags?: SymbolTypeFlag;
687
+ memberOfAncestor?: boolean;
688
+ }
689
+ export interface GetTypeOptions {
690
+ flags: SymbolTypeFlag;
691
+ typeChain?: TypeChainEntry[];
692
+ data?: ExtraSymbolData;
693
+ ignoreCall?: boolean;
694
+ onlyCacheResolvedTypes?: boolean;
695
+ ignoreCacheForRetrieval?: boolean;
696
+ }
697
+ export declare class TypeChainEntry {
698
+ name: string;
699
+ type: BscType;
700
+ range: Range;
701
+ separatorToken: Token;
702
+ data: ExtraSymbolData;
703
+ constructor(name: string, type: BscType, data: ExtraSymbolData, range: Range, separatorToken?: Token);
704
+ get isResolved(): boolean;
705
+ }
706
+ export interface TypeChainProcessResult {
707
+ itemName: string;
708
+ itemParentTypeName: string;
709
+ fullNameOfItem: string;
710
+ fullChainName: string;
711
+ range: Range;
712
+ containsDynamic: boolean;
713
+ }
714
+ export interface TypeCompatibilityData {
715
+ missingFields?: {
716
+ name: string;
717
+ expectedType: BscType;
718
+ }[];
719
+ fieldMismatches?: {
720
+ name: string;
721
+ expectedType: BscType;
722
+ actualType: BscType;
723
+ }[];
724
+ depth?: number;
725
+ }
726
+ export interface NamespaceContainer {
727
+ file: BscFile;
728
+ fullName: string;
729
+ fullNameLower: string;
730
+ parentNameLower: string;
731
+ nameParts: Identifier[];
732
+ nameRange: Range;
733
+ lastPartName: string;
734
+ lastPartNameLower: string;
735
+ functionStatements: Map<string, FunctionStatement>;
736
+ isTopLevel: boolean;
737
+ namespaceStatements?: NamespaceStatement[];
738
+ statements?: Statement[];
739
+ classStatements?: Map<string, ClassStatement>;
740
+ enumStatements?: Map<string, EnumStatement>;
741
+ constStatements?: Map<string, ConstStatement>;
742
+ namespaces?: Map<string, NamespaceContainer>;
743
+ symbolTable: SymbolTable;
516
744
  }