brighterscript 1.0.0-alpha.24 → 1.0.0-alpha.26

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 (536) hide show
  1. package/CHANGELOG.md +521 -233
  2. package/README.md +45 -139
  3. package/bsconfig.schema.json +46 -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 +40 -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 +841 -706
  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 +86 -137
  60. package/dist/Scope.js +453 -519
  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 -11
  74. package/dist/XmlScope.js +75 -88
  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} +69 -65
  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 +54 -24
  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 +256 -157
  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 +208 -52
  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 +11 -2
  105. package/dist/bscPlugin/BscPlugin.js +37 -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 +136 -0
  115. package/dist/bscPlugin/SignatureHelpUtil.js.map +1 -0
  116. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js +16 -13
  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/definition/DefinitionProvider.d.ts +13 -0
  126. package/dist/bscPlugin/definition/DefinitionProvider.js +210 -0
  127. package/dist/bscPlugin/definition/DefinitionProvider.js.map +1 -0
  128. package/dist/bscPlugin/definition/DefinitionProvider.spec.js +88 -0
  129. package/dist/bscPlugin/definition/DefinitionProvider.spec.js.map +1 -0
  130. package/dist/bscPlugin/fileProviders/FileProvider.d.ts +9 -0
  131. package/dist/bscPlugin/fileProviders/FileProvider.js +51 -0
  132. package/dist/bscPlugin/fileProviders/FileProvider.js.map +1 -0
  133. package/dist/bscPlugin/hover/HoverProcessor.d.ts +7 -7
  134. package/dist/bscPlugin/hover/HoverProcessor.js +123 -125
  135. package/dist/bscPlugin/hover/HoverProcessor.js.map +1 -1
  136. package/dist/bscPlugin/hover/HoverProcessor.spec.js +371 -53
  137. package/dist/bscPlugin/hover/HoverProcessor.spec.js.map +1 -1
  138. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.d.ts +2 -1
  139. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js +83 -23
  140. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js.map +1 -1
  141. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js +83 -6
  142. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js.map +1 -1
  143. package/dist/bscPlugin/serialize/BslibInjector.spec.d.ts +1 -0
  144. package/dist/bscPlugin/serialize/BslibInjector.spec.js +19 -0
  145. package/dist/bscPlugin/serialize/BslibInjector.spec.js.map +1 -0
  146. package/dist/bscPlugin/serialize/BslibManager.d.ts +9 -0
  147. package/dist/bscPlugin/serialize/BslibManager.js +40 -0
  148. package/dist/bscPlugin/serialize/BslibManager.js.map +1 -0
  149. package/dist/bscPlugin/serialize/FileSerializer.d.ts +9 -0
  150. package/dist/bscPlugin/serialize/FileSerializer.js +72 -0
  151. package/dist/bscPlugin/serialize/FileSerializer.js.map +1 -0
  152. package/dist/bscPlugin/transpile/{BrsFilePreTranspileProcessor.d.ts → BrsFileTranspileProcessor.d.ts} +4 -2
  153. package/dist/bscPlugin/transpile/{BrsFilePreTranspileProcessor.js → BrsFileTranspileProcessor.js} +38 -12
  154. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.js.map +1 -0
  155. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.d.ts +1 -0
  156. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.js +41 -0
  157. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.js.map +1 -0
  158. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.d.ts +12 -0
  159. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.js +99 -0
  160. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.js.map +1 -0
  161. package/dist/bscPlugin/validation/BrsFileValidator.d.ts +13 -5
  162. package/dist/bscPlugin/validation/BrsFileValidator.js +262 -52
  163. package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -1
  164. package/dist/bscPlugin/validation/BrsFileValidator.spec.js +230 -14
  165. package/dist/bscPlugin/validation/BrsFileValidator.spec.js.map +1 -1
  166. package/dist/bscPlugin/validation/ProgramValidator.d.ts +10 -0
  167. package/dist/bscPlugin/validation/ProgramValidator.js +32 -0
  168. package/dist/bscPlugin/validation/ProgramValidator.js.map +1 -0
  169. package/dist/bscPlugin/validation/ScopeValidator.d.ts +58 -27
  170. package/dist/bscPlugin/validation/ScopeValidator.js +514 -286
  171. package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -1
  172. package/dist/bscPlugin/validation/ScopeValidator.spec.d.ts +1 -0
  173. package/dist/bscPlugin/validation/ScopeValidator.spec.js +2527 -0
  174. package/dist/bscPlugin/validation/ScopeValidator.spec.js.map +1 -0
  175. package/dist/bscPlugin/validation/XmlFileValidator.d.ts +8 -0
  176. package/dist/bscPlugin/validation/XmlFileValidator.js +44 -0
  177. package/dist/bscPlugin/validation/XmlFileValidator.js.map +1 -0
  178. package/dist/cli.js +104 -13
  179. package/dist/cli.js.map +1 -1
  180. package/dist/deferred.d.ts +3 -3
  181. package/dist/deferred.js.map +1 -1
  182. package/dist/diagnosticUtils.d.ts +8 -2
  183. package/dist/diagnosticUtils.js +47 -17
  184. package/dist/diagnosticUtils.js.map +1 -1
  185. package/dist/examples/plugins/removePrint.js +8 -10
  186. package/dist/examples/plugins/removePrint.js.map +1 -1
  187. package/dist/files/AssetFile.d.ts +26 -0
  188. package/dist/files/AssetFile.js +26 -0
  189. package/dist/files/AssetFile.js.map +1 -0
  190. package/dist/files/BrsFile.Class.spec.js +523 -493
  191. package/dist/files/BrsFile.Class.spec.js.map +1 -1
  192. package/dist/files/BrsFile.d.ts +111 -117
  193. package/dist/files/BrsFile.js +684 -1142
  194. package/dist/files/BrsFile.js.map +1 -1
  195. package/dist/files/BrsFile.spec.js +1783 -1233
  196. package/dist/files/BrsFile.spec.js.map +1 -1
  197. package/dist/files/BscFile.d.ts +104 -0
  198. package/dist/files/BscFile.js +16 -0
  199. package/dist/files/BscFile.js.map +1 -0
  200. package/dist/files/Factory.d.ts +25 -0
  201. package/dist/files/Factory.js +22 -0
  202. package/dist/files/Factory.js.map +1 -0
  203. package/dist/files/LazyFileData.d.ts +20 -0
  204. package/dist/files/LazyFileData.js +54 -0
  205. package/dist/files/LazyFileData.js.map +1 -0
  206. package/dist/files/LazyFileData.spec.d.ts +1 -0
  207. package/dist/files/LazyFileData.spec.js +27 -0
  208. package/dist/files/LazyFileData.spec.js.map +1 -0
  209. package/dist/files/XmlFile.d.ts +70 -32
  210. package/dist/files/XmlFile.js +106 -118
  211. package/dist/files/XmlFile.js.map +1 -1
  212. package/dist/files/XmlFile.spec.js +325 -262
  213. package/dist/files/XmlFile.spec.js.map +1 -1
  214. package/dist/files/tests/imports.spec.js +48 -40
  215. package/dist/files/tests/imports.spec.js.map +1 -1
  216. package/dist/files/tests/optionalChaning.spec.js +84 -24
  217. package/dist/files/tests/optionalChaning.spec.js.map +1 -1
  218. package/dist/globalCallables.js +16 -21
  219. package/dist/globalCallables.js.map +1 -1
  220. package/dist/index.d.ts +12 -1
  221. package/dist/index.js +12 -1
  222. package/dist/index.js.map +1 -1
  223. package/dist/interfaces.d.ts +421 -162
  224. package/dist/interfaces.js +27 -0
  225. package/dist/interfaces.js.map +1 -1
  226. package/dist/lexer/Character.spec.js +5 -5
  227. package/dist/lexer/Character.spec.js.map +1 -1
  228. package/dist/lexer/Lexer.d.ts +12 -5
  229. package/dist/lexer/Lexer.js +28 -13
  230. package/dist/lexer/Lexer.js.map +1 -1
  231. package/dist/lexer/Lexer.spec.js +181 -135
  232. package/dist/lexer/Lexer.spec.js.map +1 -1
  233. package/dist/lexer/Token.d.ts +9 -1
  234. package/dist/lexer/Token.js +9 -1
  235. package/dist/lexer/Token.js.map +1 -1
  236. package/dist/lexer/TokenKind.d.ts +8 -0
  237. package/dist/lexer/TokenKind.js +24 -4
  238. package/dist/lexer/TokenKind.js.map +1 -1
  239. package/dist/parser/AstNode.d.ts +162 -0
  240. package/dist/parser/AstNode.js +225 -0
  241. package/dist/parser/AstNode.js.map +1 -0
  242. package/dist/parser/AstNode.spec.d.ts +1 -0
  243. package/dist/parser/AstNode.spec.js +165 -0
  244. package/dist/parser/AstNode.spec.js.map +1 -0
  245. package/dist/parser/BrsTranspileState.d.ts +4 -7
  246. package/dist/parser/BrsTranspileState.js +4 -12
  247. package/dist/parser/BrsTranspileState.js.map +1 -1
  248. package/dist/parser/Expression.d.ts +376 -283
  249. package/dist/parser/Expression.js +742 -585
  250. package/dist/parser/Expression.js.map +1 -1
  251. package/dist/parser/Parser.Class.spec.js +151 -145
  252. package/dist/parser/Parser.Class.spec.js.map +1 -1
  253. package/dist/parser/Parser.d.ts +48 -201
  254. package/dist/parser/Parser.js +705 -1026
  255. package/dist/parser/Parser.js.map +1 -1
  256. package/dist/parser/Parser.spec.d.ts +3 -1
  257. package/dist/parser/Parser.spec.js +861 -848
  258. package/dist/parser/Parser.spec.js.map +1 -1
  259. package/dist/parser/SGParser.d.ts +9 -8
  260. package/dist/parser/SGParser.js +10 -8
  261. package/dist/parser/SGParser.js.map +1 -1
  262. package/dist/parser/SGParser.spec.js +27 -38
  263. package/dist/parser/SGParser.spec.js.map +1 -1
  264. package/dist/parser/SGTypes.d.ts +98 -35
  265. package/dist/parser/SGTypes.js +169 -99
  266. package/dist/parser/SGTypes.js.map +1 -1
  267. package/dist/parser/Statement.d.ts +468 -272
  268. package/dist/parser/Statement.js +904 -631
  269. package/dist/parser/Statement.js.map +1 -1
  270. package/dist/parser/Statement.spec.js +47 -23
  271. package/dist/parser/Statement.spec.js.map +1 -1
  272. package/dist/parser/TranspileState.d.ts +1 -1
  273. package/dist/parser/TranspileState.js +7 -12
  274. package/dist/parser/TranspileState.js.map +1 -1
  275. package/dist/parser/tests/Parser.spec.js +3 -2
  276. package/dist/parser/tests/Parser.spec.js.map +1 -1
  277. package/dist/parser/tests/controlFlow/For.spec.js +33 -23
  278. package/dist/parser/tests/controlFlow/For.spec.js.map +1 -1
  279. package/dist/parser/tests/controlFlow/ForEach.spec.js +25 -20
  280. package/dist/parser/tests/controlFlow/ForEach.spec.js.map +1 -1
  281. package/dist/parser/tests/controlFlow/If.spec.js +96 -94
  282. package/dist/parser/tests/controlFlow/If.spec.js.map +1 -1
  283. package/dist/parser/tests/controlFlow/While.spec.js +22 -16
  284. package/dist/parser/tests/controlFlow/While.spec.js.map +1 -1
  285. package/dist/parser/tests/expression/Additive.spec.js +8 -8
  286. package/dist/parser/tests/expression/Additive.spec.js.map +1 -1
  287. package/dist/parser/tests/expression/ArrayLiterals.spec.js +58 -21
  288. package/dist/parser/tests/expression/ArrayLiterals.spec.js.map +1 -1
  289. package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js +62 -21
  290. package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js.map +1 -1
  291. package/dist/parser/tests/expression/Boolean.spec.js +8 -8
  292. package/dist/parser/tests/expression/Boolean.spec.js.map +1 -1
  293. package/dist/parser/tests/expression/Call.spec.js +129 -21
  294. package/dist/parser/tests/expression/Call.spec.js.map +1 -1
  295. package/dist/parser/tests/expression/Exponential.spec.js +5 -5
  296. package/dist/parser/tests/expression/Exponential.spec.js.map +1 -1
  297. package/dist/parser/tests/expression/Function.spec.js +36 -36
  298. package/dist/parser/tests/expression/Function.spec.js.map +1 -1
  299. package/dist/parser/tests/expression/Indexing.spec.js +92 -22
  300. package/dist/parser/tests/expression/Indexing.spec.js.map +1 -1
  301. package/dist/parser/tests/expression/Multiplicative.spec.js +9 -9
  302. package/dist/parser/tests/expression/Multiplicative.spec.js.map +1 -1
  303. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js +59 -59
  304. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js.map +1 -1
  305. package/dist/parser/tests/expression/PrefixUnary.spec.js +12 -12
  306. package/dist/parser/tests/expression/PrefixUnary.spec.js.map +1 -1
  307. package/dist/parser/tests/expression/Primary.spec.js +12 -12
  308. package/dist/parser/tests/expression/Primary.spec.js.map +1 -1
  309. package/dist/parser/tests/expression/RegexLiteralExpression.spec.js +10 -10
  310. package/dist/parser/tests/expression/RegexLiteralExpression.spec.js.map +1 -1
  311. package/dist/parser/tests/expression/Relational.spec.js +13 -13
  312. package/dist/parser/tests/expression/Relational.spec.js.map +1 -1
  313. package/dist/parser/tests/expression/SourceLiteralExpression.spec.js +24 -24
  314. package/dist/parser/tests/expression/SourceLiteralExpression.spec.js.map +1 -1
  315. package/dist/parser/tests/expression/TemplateStringExpression.spec.js +96 -57
  316. package/dist/parser/tests/expression/TemplateStringExpression.spec.js.map +1 -1
  317. package/dist/parser/tests/expression/TernaryExpression.spec.js +89 -89
  318. package/dist/parser/tests/expression/TernaryExpression.spec.js.map +1 -1
  319. package/dist/parser/tests/expression/TypeExpression.spec.d.ts +1 -0
  320. package/dist/parser/tests/expression/TypeExpression.spec.js +127 -0
  321. package/dist/parser/tests/expression/TypeExpression.spec.js.map +1 -0
  322. package/dist/parser/tests/expression/UnaryExpression.spec.d.ts +1 -0
  323. package/dist/parser/tests/expression/UnaryExpression.spec.js +52 -0
  324. package/dist/parser/tests/expression/UnaryExpression.spec.js.map +1 -0
  325. package/dist/parser/tests/statement/AssignmentOperators.spec.js +15 -15
  326. package/dist/parser/tests/statement/AssignmentOperators.spec.js.map +1 -1
  327. package/dist/parser/tests/statement/ConstStatement.spec.js +82 -33
  328. package/dist/parser/tests/statement/ConstStatement.spec.js.map +1 -1
  329. package/dist/parser/tests/statement/Continue.spec.d.ts +1 -0
  330. package/dist/parser/tests/statement/Continue.spec.js +119 -0
  331. package/dist/parser/tests/statement/Continue.spec.js.map +1 -0
  332. package/dist/parser/tests/statement/Declaration.spec.js +19 -19
  333. package/dist/parser/tests/statement/Declaration.spec.js.map +1 -1
  334. package/dist/parser/tests/statement/Dim.spec.js +22 -22
  335. package/dist/parser/tests/statement/Dim.spec.js.map +1 -1
  336. package/dist/parser/tests/statement/Enum.spec.js +98 -302
  337. package/dist/parser/tests/statement/Enum.spec.js.map +1 -1
  338. package/dist/parser/tests/statement/For.spec.js +9 -10
  339. package/dist/parser/tests/statement/For.spec.js.map +1 -1
  340. package/dist/parser/tests/statement/ForEach.spec.js +8 -9
  341. package/dist/parser/tests/statement/ForEach.spec.js.map +1 -1
  342. package/dist/parser/tests/statement/Function.spec.js +44 -35
  343. package/dist/parser/tests/statement/Function.spec.js.map +1 -1
  344. package/dist/parser/tests/statement/Goto.spec.js +5 -5
  345. package/dist/parser/tests/statement/Goto.spec.js.map +1 -1
  346. package/dist/parser/tests/statement/Increment.spec.js +20 -20
  347. package/dist/parser/tests/statement/Increment.spec.js.map +1 -1
  348. package/dist/parser/tests/statement/InterfaceStatement.spec.js +30 -196
  349. package/dist/parser/tests/statement/InterfaceStatement.spec.js.map +1 -1
  350. package/dist/parser/tests/statement/LibraryStatement.spec.js +11 -11
  351. package/dist/parser/tests/statement/LibraryStatement.spec.js.map +1 -1
  352. package/dist/parser/tests/statement/Misc.spec.js +16 -78
  353. package/dist/parser/tests/statement/Misc.spec.js.map +1 -1
  354. package/dist/parser/tests/statement/PrintStatement.spec.js +36 -34
  355. package/dist/parser/tests/statement/PrintStatement.spec.js.map +1 -1
  356. package/dist/parser/tests/statement/ReturnStatement.spec.js +14 -12
  357. package/dist/parser/tests/statement/ReturnStatement.spec.js.map +1 -1
  358. package/dist/parser/tests/statement/Set.spec.js +48 -35
  359. package/dist/parser/tests/statement/Set.spec.js.map +1 -1
  360. package/dist/parser/tests/statement/Stop.spec.js +6 -6
  361. package/dist/parser/tests/statement/Stop.spec.js.map +1 -1
  362. package/dist/parser/tests/statement/Throw.spec.js +6 -6
  363. package/dist/parser/tests/statement/Throw.spec.js.map +1 -1
  364. package/dist/parser/tests/statement/TryCatch.spec.js +18 -16
  365. package/dist/parser/tests/statement/TryCatch.spec.js.map +1 -1
  366. package/dist/preprocessor/Manifest.d.ts +1 -1
  367. package/dist/preprocessor/Manifest.js +2 -2
  368. package/dist/preprocessor/Manifest.js.map +1 -1
  369. package/dist/preprocessor/Manifest.spec.js +8 -8
  370. package/dist/preprocessor/Manifest.spec.js.map +1 -1
  371. package/dist/preprocessor/Preprocessor.d.ts +5 -6
  372. package/dist/preprocessor/Preprocessor.js +5 -5
  373. package/dist/preprocessor/Preprocessor.js.map +1 -1
  374. package/dist/preprocessor/Preprocessor.spec.js +25 -25
  375. package/dist/preprocessor/Preprocessor.spec.js.map +1 -1
  376. package/dist/preprocessor/PreprocessorParser.d.ts +1 -1
  377. package/dist/preprocessor/PreprocessorParser.js +7 -1
  378. package/dist/preprocessor/PreprocessorParser.js.map +1 -1
  379. package/dist/preprocessor/PreprocessorParser.spec.js +13 -13
  380. package/dist/preprocessor/PreprocessorParser.spec.js.map +1 -1
  381. package/dist/roku-types/data.json +5892 -10081
  382. package/dist/roku-types/index.d.ts +622 -1719
  383. package/dist/types/ArrayType.d.ts +10 -9
  384. package/dist/types/ArrayType.js +65 -60
  385. package/dist/types/ArrayType.js.map +1 -1
  386. package/dist/types/ArrayType.spec.js +36 -68
  387. package/dist/types/ArrayType.spec.js.map +1 -1
  388. package/dist/types/AssociativeArrayType.d.ts +11 -0
  389. package/dist/types/AssociativeArrayType.js +52 -0
  390. package/dist/types/AssociativeArrayType.js.map +1 -0
  391. package/dist/types/BaseFunctionType.d.ts +9 -0
  392. package/dist/types/BaseFunctionType.js +25 -0
  393. package/dist/types/BaseFunctionType.js.map +1 -0
  394. package/dist/types/BooleanType.d.ts +8 -5
  395. package/dist/types/BooleanType.js +14 -7
  396. package/dist/types/BooleanType.js.map +1 -1
  397. package/dist/types/BooleanType.spec.js +10 -6
  398. package/dist/types/BooleanType.spec.js.map +1 -1
  399. package/dist/types/BscType.d.ts +32 -21
  400. package/dist/types/BscType.js +118 -21
  401. package/dist/types/BscType.js.map +1 -1
  402. package/dist/types/BscTypeKind.d.ts +25 -0
  403. package/dist/types/BscTypeKind.js +30 -0
  404. package/dist/types/BscTypeKind.js.map +1 -0
  405. package/dist/types/BuiltInInterfaceAdder.d.ts +23 -0
  406. package/dist/types/BuiltInInterfaceAdder.js +171 -0
  407. package/dist/types/BuiltInInterfaceAdder.js.map +1 -0
  408. package/dist/types/BuiltInInterfaceAdder.spec.d.ts +1 -0
  409. package/dist/types/BuiltInInterfaceAdder.spec.js +116 -0
  410. package/dist/types/BuiltInInterfaceAdder.spec.js.map +1 -0
  411. package/dist/types/ClassType.d.ts +17 -0
  412. package/dist/types/ClassType.js +58 -0
  413. package/dist/types/ClassType.js.map +1 -0
  414. package/dist/types/ClassType.spec.d.ts +1 -0
  415. package/dist/types/ClassType.spec.js +77 -0
  416. package/dist/types/ClassType.spec.js.map +1 -0
  417. package/dist/types/ComponentType.d.ts +26 -0
  418. package/dist/types/ComponentType.js +83 -0
  419. package/dist/types/ComponentType.js.map +1 -0
  420. package/dist/types/DoubleType.d.ts +8 -5
  421. package/dist/types/DoubleType.js +18 -16
  422. package/dist/types/DoubleType.js.map +1 -1
  423. package/dist/types/DoubleType.spec.js +12 -6
  424. package/dist/types/DoubleType.spec.js.map +1 -1
  425. package/dist/types/DynamicType.d.ts +9 -5
  426. package/dist/types/DynamicType.js +15 -4
  427. package/dist/types/DynamicType.js.map +1 -1
  428. package/dist/types/DynamicType.spec.js +16 -5
  429. package/dist/types/DynamicType.spec.js.map +1 -1
  430. package/dist/types/EnumType.d.ts +30 -12
  431. package/dist/types/EnumType.js +43 -17
  432. package/dist/types/EnumType.js.map +1 -1
  433. package/dist/types/EnumType.spec.d.ts +1 -0
  434. package/dist/types/EnumType.spec.js +33 -0
  435. package/dist/types/EnumType.spec.js.map +1 -0
  436. package/dist/types/FloatType.d.ts +8 -5
  437. package/dist/types/FloatType.js +18 -16
  438. package/dist/types/FloatType.js.map +1 -1
  439. package/dist/types/FloatType.spec.js +4 -6
  440. package/dist/types/FloatType.spec.js.map +1 -1
  441. package/dist/types/FunctionType.d.ts +13 -8
  442. package/dist/types/FunctionType.js +30 -14
  443. package/dist/types/FunctionType.js.map +1 -1
  444. package/dist/types/InheritableType.d.ts +28 -0
  445. package/dist/types/InheritableType.js +152 -0
  446. package/dist/types/InheritableType.js.map +1 -0
  447. package/dist/types/IntegerType.d.ts +8 -5
  448. package/dist/types/IntegerType.js +18 -16
  449. package/dist/types/IntegerType.js.map +1 -1
  450. package/dist/types/IntegerType.spec.js +8 -6
  451. package/dist/types/IntegerType.spec.js.map +1 -1
  452. package/dist/types/InterfaceType.d.ts +12 -13
  453. package/dist/types/InterfaceType.js +20 -48
  454. package/dist/types/InterfaceType.js.map +1 -1
  455. package/dist/types/InterfaceType.spec.js +90 -56
  456. package/dist/types/InterfaceType.spec.js.map +1 -1
  457. package/dist/types/InvalidType.d.ts +7 -5
  458. package/dist/types/InvalidType.js +13 -7
  459. package/dist/types/InvalidType.js.map +1 -1
  460. package/dist/types/InvalidType.spec.js +8 -6
  461. package/dist/types/InvalidType.spec.js.map +1 -1
  462. package/dist/types/LongIntegerType.d.ts +8 -5
  463. package/dist/types/LongIntegerType.js +17 -15
  464. package/dist/types/LongIntegerType.js.map +1 -1
  465. package/dist/types/LongIntegerType.spec.js +10 -6
  466. package/dist/types/LongIntegerType.spec.js.map +1 -1
  467. package/dist/types/NamespaceType.d.ts +12 -0
  468. package/dist/types/NamespaceType.js +28 -0
  469. package/dist/types/NamespaceType.js.map +1 -0
  470. package/dist/types/ObjectType.d.ts +9 -8
  471. package/dist/types/ObjectType.js +21 -11
  472. package/dist/types/ObjectType.js.map +1 -1
  473. package/dist/types/ObjectType.spec.js +3 -3
  474. package/dist/types/ObjectType.spec.js.map +1 -1
  475. package/dist/types/ReferenceType.d.ts +63 -0
  476. package/dist/types/ReferenceType.js +423 -0
  477. package/dist/types/ReferenceType.js.map +1 -0
  478. package/dist/types/ReferenceType.spec.d.ts +1 -0
  479. package/dist/types/ReferenceType.spec.js +137 -0
  480. package/dist/types/ReferenceType.spec.js.map +1 -0
  481. package/dist/types/StringType.d.ts +11 -5
  482. package/dist/types/StringType.js +18 -7
  483. package/dist/types/StringType.js.map +1 -1
  484. package/dist/types/StringType.spec.js +3 -5
  485. package/dist/types/StringType.spec.js.map +1 -1
  486. package/dist/types/TypedFunctionType.d.ts +22 -17
  487. package/dist/types/TypedFunctionType.js +78 -60
  488. package/dist/types/TypedFunctionType.js.map +1 -1
  489. package/dist/types/TypedFunctionType.spec.js +105 -20
  490. package/dist/types/TypedFunctionType.spec.js.map +1 -1
  491. package/dist/types/UninitializedType.d.ts +8 -6
  492. package/dist/types/UninitializedType.js +13 -7
  493. package/dist/types/UninitializedType.js.map +1 -1
  494. package/dist/types/UnionType.d.ts +20 -0
  495. package/dist/types/UnionType.js +123 -0
  496. package/dist/types/UnionType.js.map +1 -0
  497. package/dist/types/UnionType.spec.d.ts +1 -0
  498. package/dist/types/UnionType.spec.js +130 -0
  499. package/dist/types/UnionType.spec.js.map +1 -0
  500. package/dist/types/VoidType.d.ts +8 -5
  501. package/dist/types/VoidType.js +14 -7
  502. package/dist/types/VoidType.js.map +1 -1
  503. package/dist/types/VoidType.spec.js +3 -3
  504. package/dist/types/VoidType.spec.js.map +1 -1
  505. package/dist/types/helper.spec.d.ts +1 -0
  506. package/dist/types/helper.spec.js +145 -0
  507. package/dist/types/helper.spec.js.map +1 -0
  508. package/dist/types/helpers.d.ts +19 -37
  509. package/dist/types/helpers.js +159 -99
  510. package/dist/types/helpers.js.map +1 -1
  511. package/dist/types/index.d.ts +22 -0
  512. package/dist/types/index.js +39 -0
  513. package/dist/types/index.js.map +1 -0
  514. package/dist/util.d.ts +143 -139
  515. package/dist/util.js +864 -385
  516. package/dist/util.js.map +1 -1
  517. package/dist/validators/ClassValidator.d.ts +8 -25
  518. package/dist/validators/ClassValidator.js +99 -179
  519. package/dist/validators/ClassValidator.js.map +1 -1
  520. package/package.json +165 -152
  521. package/dist/astUtils/AstEditor.js.map +0 -1
  522. package/dist/astUtils/AstEditor.spec.js.map +0 -1
  523. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js.map +0 -1
  524. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.js +0 -32
  525. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.js.map +0 -1
  526. package/dist/parser/SGTypes.spec.js +0 -351
  527. package/dist/parser/SGTypes.spec.js.map +0 -1
  528. package/dist/types/CustomType.d.ts +0 -12
  529. package/dist/types/CustomType.js +0 -44
  530. package/dist/types/CustomType.js.map +0 -1
  531. package/dist/types/LazyType.d.ts +0 -16
  532. package/dist/types/LazyType.js +0 -44
  533. package/dist/types/LazyType.js.map +0 -1
  534. /package/dist/astUtils/{AstEditor.spec.d.ts → Editor.spec.d.ts} +0 -0
  535. /package/dist/bscPlugin/{transpile/BrsFilePreTranspileProcessor.spec.d.ts → completions/CompletionsProcessor.spec.d.ts} +0 -0
  536. /package/dist/{parser/SGTypes.spec.d.ts → bscPlugin/definition/DefinitionProvider.spec.d.ts} +0 -0
package/dist/Program.d.ts CHANGED
@@ -1,40 +1,45 @@
1
- import type { CodeAction, CompletionItem, Position, Range, SignatureInformation, Location, SymbolInformation } from 'vscode-languageserver';
2
- import type { BsConfig } from './BsConfig';
1
+ import type { CodeAction, Position, Range, SignatureInformation, Location } from 'vscode-languageserver';
2
+ import type { BsConfig, FinalizedBsConfig } from './BsConfig';
3
3
  import { Scope } from './Scope';
4
- import { BrsFile } from './files/BrsFile';
5
- import { XmlFile } from './files/XmlFile';
6
- import type { BsDiagnostic, FileReference, FileObj, BscFile, SemanticToken, FileLink, Hover } from './interfaces';
4
+ import type { BrsFile, ProvidedSymbolInfo } from './files/BrsFile';
5
+ import type { XmlFile } from './files/XmlFile';
6
+ import type { BsDiagnostic, FileObj, SemanticToken, FileLink, Hover } from './interfaces';
7
7
  import { XmlScope } from './XmlScope';
8
8
  import { Logger } from './Logger';
9
9
  import PluginInterface from './PluginInterface';
10
- import type { FunctionStatement, Statement } from './parser/Statement';
11
- import type { SourceMapGenerator } from 'source-map';
12
- export interface SourceObj {
13
- srcPath: string;
14
- source: string;
15
- definitions?: string;
16
- }
17
- export interface TranspileObj {
18
- file: BscFile;
19
- outputPath: string;
20
- }
10
+ import type { FunctionStatement } from './parser/Statement';
11
+ import { Editor } from './astUtils/Editor';
12
+ import type { Statement } from './parser/AstNode';
13
+ import type { FileData } from './files/LazyFileData';
14
+ import type { UnresolvedSymbol } from './AstValidationSegmenter';
15
+ import type { BscFile } from './files/BscFile';
21
16
  export interface SignatureInfoObj {
22
17
  index: number;
23
18
  key: string;
24
19
  signature: SignatureInformation;
25
20
  }
26
21
  export declare class Program {
27
- /**
28
- * The root directory for this program
29
- */
30
- options: BsConfig;
31
22
  constructor(
32
23
  /**
33
24
  * The root directory for this program
34
25
  */
35
26
  options: BsConfig, logger?: Logger, plugins?: PluginInterface);
27
+ options: FinalizedBsConfig;
36
28
  logger: Logger;
29
+ /**
30
+ * An editor that plugins can use to modify program-level things during the build flow. Don't use this to edit files (they have their own `.editor`)
31
+ */
32
+ editor: Editor;
33
+ /**
34
+ * A factory that creates `File` instances
35
+ */
36
+ private fileFactory;
37
37
  private createGlobalScope;
38
+ private recursivelyAddNodeToSymbolTable;
39
+ /**
40
+ * Do all setup required for the global symbol table.
41
+ */
42
+ private populateGlobalSymbolTable;
38
43
  /**
39
44
  * A graph of all files and their dependencies.
40
45
  * For example:
@@ -43,6 +48,7 @@ export declare class Program {
43
48
  */
44
49
  private dependencyGraph;
45
50
  private diagnosticFilterer;
51
+ private diagnosticAdjuster;
46
52
  /**
47
53
  * A scope that contains all built-in global functions.
48
54
  * All scopes should directly or indirectly inherit from this scope
@@ -57,23 +63,31 @@ export declare class Program {
57
63
  * Should only be set from `this.validate()`
58
64
  */
59
65
  private diagnostics;
66
+ private fileSymbolInformation;
67
+ addFileSymbolInfo(file: BrsFile): void;
68
+ getFileSymbolInfo(file: BrsFile): {
69
+ provides: ProvidedSymbolInfo;
70
+ requires: UnresolvedSymbol[];
71
+ };
60
72
  /**
61
73
  * The path to bslib.brs (the BrightScript runtime for certain BrighterScript features)
62
74
  */
63
- get bslibPkgPath(): "pkg:/source/roku_modules/bslib/bslib.brs" | "pkg:/source/roku_modules/rokucommunity_bslib/bslib.brs" | "pkg:/source/bslib.brs";
75
+ get bslibPkgPath(): string;
64
76
  get bslibPrefix(): "rokucommunity_bslib" | "bslib";
65
77
  /**
66
- * A map of every file loaded ino this program, indexed by its lower-case pkgPath
78
+ * A map of every file loaded into this program, indexed by its original file location
67
79
  */
68
- private pkgMap;
80
+ files: Record<string, BscFile>;
69
81
  /**
70
- * A map of every file loaded into this program, indexed by its lower-case srcPath
82
+ * A map of every file loaded into this program, indexed by its destPath
71
83
  */
72
- private files;
84
+ private destMap;
73
85
  /**
74
- * Get a copy of the list of files currently loaded in the program
86
+ * Plugins can contribute multiple virtual files for a single physical file.
87
+ * This collection links the virtual files back to the physical file that produced them.
88
+ * The key is the standardized and lower-cased srcPath
75
89
  */
76
- getAllFiles(): BscFile[];
90
+ private fileClusters;
77
91
  private scopes;
78
92
  protected addScope(scope: Scope): void;
79
93
  /**
@@ -90,6 +104,10 @@ export declare class Program {
90
104
  file: XmlFile;
91
105
  scope: XmlScope;
92
106
  };
107
+ /**
108
+ * Keeps a set of all the components that need to have their types updated during the current validation cycle
109
+ */
110
+ private componentSymbolsToUpdate;
93
111
  /**
94
112
  * Register (or replace) the reference to a component in the component map
95
113
  */
@@ -98,6 +116,18 @@ export declare class Program {
98
116
  * Remove the specified component from the components map
99
117
  */
100
118
  private unregisterComponent;
119
+ /**
120
+ * Adds a component described in an XML to the set of components that needs to be updated this validation cycle.
121
+ * @param xmlFile XML file with <component> tag
122
+ */
123
+ private addDeferredComponentTypeSymbolCreation;
124
+ private getComponentKey;
125
+ /**
126
+ * Updates the global symbol table with the first component in this.components to have the same name as the component in the file
127
+ * @param componentKey key getting a component from `this.components`
128
+ * @param componentName the unprefixed name of the component that will be added (e.g. 'MyLabel' NOT 'roSgNodeMyLabel')
129
+ */
130
+ private updateComponentSymbolInGlobalScope;
101
131
  /**
102
132
  * re-attach the dependency graph with a new key for any component who changed
103
133
  * their position in their own named array (only matters when there are multiple
@@ -117,15 +147,15 @@ export declare class Program {
117
147
  addDiagnostics(diagnostics: BsDiagnostic[]): void;
118
148
  /**
119
149
  * Determine if the specified file is loaded in this program right now.
120
- * @param filePath
150
+ * @param filePath the absolute or relative path to the file
121
151
  * @param normalizePath should the provided path be normalized before use
122
152
  */
123
153
  hasFile(filePath: string, normalizePath?: boolean): boolean;
124
154
  /**
125
155
  * roku filesystem is case INsensitive, so find the scope by key case insensitive
126
- * @param scopeName
156
+ * @param scopeName xml scope names are their `destPath`. Source scope is stored with the key `"source"`
127
157
  */
128
- getScopeByName(scopeName: string): Scope;
158
+ getScopeByName(scopeName: string): Scope | undefined;
129
159
  /**
130
160
  * Return all scopes
131
161
  */
@@ -145,16 +175,34 @@ export declare class Program {
145
175
  /**
146
176
  * Load a file into the program. If that file already exists, it is replaced.
147
177
  * If file contents are provided, those are used, Otherwise, the file is loaded from the file system
148
- * @param srcDestOrPkgPath the absolute path, or the pkg path (i.e. `pkg:/path/to/file.brs`) or the destPath (i.e. `path/to/file.brs` relative to `pkg:/`)
149
- * @param fileContents the file contents
178
+ * @param srcDestOrPkgPath the absolute path, the pkg path (i.e. `pkg:/path/to/file.brs`), or the destPath (i.e. `path/to/file.brs` relative to `pkg:/`)
179
+ * @param fileData the file contents. omit or pass `undefined` to prevent loading the data at this time
150
180
  */
151
- setFile<T extends BscFile>(srcDestOrPkgPath: string, fileContents: string): T;
181
+ setFile<T extends BscFile>(srcDestOrPkgPath: string, fileData?: FileData): T;
152
182
  /**
153
183
  * Load a file into the program. If that file already exists, it is replaced.
154
184
  * @param fileEntry an object that specifies src and dest for the file.
155
- * @param fileContents the file contents. If not provided, the file will be loaded from disk
185
+ * @param fileData the file contents. omit or pass `undefined` to prevent loading the data at this time
186
+ */
187
+ setFile<T extends BscFile>(fileEntry: FileObj, fileData: FileData): T;
188
+ /**
189
+ * Given a srcPath, a destPath, or both, resolve whichever is missing, relative to rootDir.
190
+ * @param fileParam an object representing file paths
191
+ * @param rootDir must be a pre-normalized path
156
192
  */
157
- setFile<T extends BscFile>(fileEntry: FileObj, fileContents: string): T;
193
+ private getPaths;
194
+ /**
195
+ * Remove any leading `pkg:/` found in the path
196
+ */
197
+ private removePkgPrefix;
198
+ /**
199
+ * Is this file a .brs file found somewhere within the `pkg:/source/` folder?
200
+ */
201
+ private isSourceBrsFile;
202
+ /**
203
+ * Is this file a .brs file found somewhere within the `pkg:/source/` folder?
204
+ */
205
+ private isComponentsXmlFile;
158
206
  /**
159
207
  * Ensure source scope is created.
160
208
  * Note: automatically called internally, and no-op if it exists already.
@@ -162,34 +210,39 @@ export declare class Program {
162
210
  createSourceScope(): void;
163
211
  /**
164
212
  * Remove a set of files from the program
165
- * @param filePaths can be an array of srcPath or destPath strings
213
+ * @param srcPaths can be an array of srcPath or destPath strings
166
214
  * @param normalizePath should this function repair and standardize the filePaths? Passing false should have a performance boost if you can guarantee your paths are already sanitized
167
215
  */
168
216
  removeFiles(srcPaths: string[], normalizePath?: boolean): void;
169
217
  /**
170
218
  * Remove a file from the program
171
- * @param filePath can be a srcPath, a pkgPath, or a destPath (same as pkgPath but without `pkg:/`)
219
+ * @param filePath can be a srcPath, a destPath, or a destPath with leading `pkg:/`
172
220
  * @param normalizePath should this function repair and standardize the path? Passing false should have a performance boost if you can guarantee your path is already sanitized
173
221
  */
174
- removeFile(filePath: string, normalizePath?: boolean): void;
175
- /**
176
- * Remove all files from the program that are in the specified folder path (recursive)
177
- * @param folderSrcPath The absolute path to the folder on disk
178
- * @param normalizePath should the provided path be normalized before use?
179
- */
180
- removeFilesInFolder(folderSrcPath: string, normalizePath?: boolean): void;
222
+ removeFile(filePath: string, normalizePath?: boolean, keepSymbolInformation?: boolean): void;
223
+ lastValidationInfo: Map<string, {
224
+ symbolsNotDefinedInEveryScope: {
225
+ symbol: UnresolvedSymbol;
226
+ scope: Scope;
227
+ }[];
228
+ duplicateSymbolsInSameScope: {
229
+ symbol: UnresolvedSymbol;
230
+ scope: Scope;
231
+ }[];
232
+ symbolsNotConsistentAcrossScopes: {
233
+ symbol: UnresolvedSymbol;
234
+ scopes: Scope[];
235
+ }[];
236
+ }>;
181
237
  /**
182
238
  * Traverse the entire project, and validate all scopes
183
239
  */
184
240
  validate(): void;
241
+ private detectIncompatibleSymbolsAcrossScopes;
185
242
  /**
186
243
  * Flag all duplicate component names
187
244
  */
188
245
  private detectDuplicateComponentNames;
189
- /**
190
- * Determine at least one scope has the file
191
- */
192
- private fileIsIncludedInAnyScope;
193
246
  /**
194
247
  * Get the files for a list of filePaths
195
248
  * @param filePaths can be an array of srcPath or a destPath strings
@@ -198,64 +251,50 @@ export declare class Program {
198
251
  getFiles<T extends BscFile>(filePaths: string[], normalizePath?: boolean): T[];
199
252
  /**
200
253
  * Get the file at the given path
201
- * @param filePath can be a srcPath, a pkgPath, or a destPath (same as pkgPath but without `pkg:/`)
254
+ * @param filePath can be a srcPath or a destPath
202
255
  * @param normalizePath should this function repair and standardize the path? Passing false should have a performance boost if you can guarantee your path is already sanitized
203
256
  */
204
257
  getFile<T extends BscFile>(filePath: string, normalizePath?: boolean): T;
205
258
  /**
206
259
  * Get a list of all scopes the file is loaded into
207
- * @param file
260
+ * @param file the file
208
261
  */
209
- getScopesForFile(file: XmlFile | BrsFile | string): Scope[];
262
+ getScopesForFile(file: BscFile | string): Scope[];
210
263
  /**
211
264
  * Get the first found scope for a file.
212
265
  */
213
- getFirstScopeForFile(file: XmlFile | BrsFile): Scope;
266
+ getFirstScopeForFile(file: BscFile): Scope | undefined;
214
267
  getStatementsByName(name: string, originFile: BrsFile, namespaceName?: string): FileLink<Statement>[];
215
268
  getStatementsForXmlFile(scope: XmlScope, filterName?: string): FileLink<FunctionStatement>[];
216
269
  /**
217
270
  * Find all available completion items at the given position
218
- * @param srcPath The absolute path to the source file on disk
219
- * @param lineIndex
220
- * @param columnIndex
271
+ * @param filePath can be a srcPath or a destPath
272
+ * @param position the position (line & column) where completions should be found
221
273
  */
222
- getCompletions(srcPath: string, position: Position): CompletionItem[];
274
+ getCompletions(filePath: string, position: Position): import("vscode-languageserver").CompletionItem[];
223
275
  /**
224
276
  * Goes through each file and builds a list of workspace symbols for the program. Used by LanguageServer's onWorkspaceSymbol functionality
225
277
  */
226
- getWorkspaceSymbols(): SymbolInformation[];
278
+ getWorkspaceSymbols(): import("vscode-languageserver").SymbolInformation[];
227
279
  /**
228
280
  * Given a position in a file, if the position is sitting on some type of identifier,
229
281
  * go to the definition of that identifier (where this thing was first defined)
230
- * @param srcPath The absolute path to the source file on disk
231
282
  */
232
283
  getDefinition(srcPath: string, position: Position): Location[];
233
284
  /**
234
285
  * Get hover information for a file and position
235
- * @param srcPath The absolute path to the source file on disk
236
286
  */
237
287
  getHover(srcPath: string, position: Position): Hover[];
238
288
  /**
239
289
  * Compute code actions for the given file and range
240
- * @param srcPath The absolute path to the source file on disk
241
290
  */
242
291
  getCodeActions(srcPath: string, range: Range): CodeAction[];
243
292
  /**
244
293
  * Get semantic tokens for the specified file
245
294
  */
246
- getSemanticTokens(srcPath: string): SemanticToken[];
295
+ getSemanticTokens(srcPath: string): SemanticToken[] | undefined;
247
296
  getSignatureHelp(filepath: string, position: Position): SignatureInfoObj[];
248
- private getPartialStatementInfo;
249
- private getPartialItemCounts;
250
- /**
251
- * @param srcPath The absolute path to the source file on disk
252
- */
253
297
  getReferences(srcPath: string, position: Position): Location[] | Promise<Location[]>;
254
- /**
255
- * Get a list of all script imports, relative to the specified pkgPath
256
- * @param sourcePkgPath - the pkgPath of the source that wants to resolve script imports.
257
- */
258
- getScriptImportCompletions(sourcePkgPath: string, scriptImport: FileReference): CompletionItem[];
259
298
  /**
260
299
  * Transpile a single file and get the result as a string.
261
300
  * This does not write anything to the file system.
@@ -265,14 +304,31 @@ export declare class Program {
265
304
  * @param filePath can be a srcPath or a destPath
266
305
  */
267
306
  getTranspiledFileContents(filePath: string): Promise<FileTranspileResult>;
307
+ private getTranspiledFileContentsPipeline;
308
+ /**
309
+ * Get the absolute output path for a file
310
+ */
311
+ private getOutputPath;
312
+ private getStagingDir;
313
+ /**
314
+ * Prepare the program for building
315
+ * @param files the list of files that should be prepared
316
+ */
317
+ private prepare;
318
+ /**
319
+ * Generate the contents of every file
320
+ */
321
+ private serialize;
322
+ /**
323
+ * Write the entire project to disk
324
+ */
325
+ private write;
326
+ private buildPipeline;
268
327
  /**
269
- * Internal function used to transpile files.
270
- * This does not write anything to the file system
328
+ * Build the project. This transpiles/transforms/copies all files and moves them to the staging directory
329
+ * @param options the list of options used to build the program
271
330
  */
272
- private _getTranspiledFileContents;
273
- private beforeProgramTranspile;
274
- transpile(fileEntries: FileObj[], stagingFolderPath: string): Promise<void>;
275
- private afterProgramTranspile;
331
+ build(options?: ProgramBuildOptions): Promise<void>;
276
332
  /**
277
333
  * Find a list of files in the program that have a function with the given name (case INsensitive)
278
334
  */
@@ -283,17 +339,40 @@ export declare class Program {
283
339
  findFilesForClass(className: string): BscFile[];
284
340
  findFilesForNamespace(name: string): BscFile[];
285
341
  findFilesForEnum(name: string): BscFile[];
342
+ private _manifest;
343
+ /**
344
+ * Modify a parsed manifest map by reading `bs_const` and injecting values from `options.manifest.bs_const`
345
+ * @param parsedManifest The manifest map to read from and modify
346
+ */
347
+ private buildBsConstsIntoParsedManifest;
348
+ /**
349
+ * Try to find and load the manifest into memory
350
+ * @param manifestFileObj A pointer to a potential manifest file object found during loading
351
+ * @param replaceIfAlreadyLoaded should we overwrite the internal `_manifest` if it already exists
352
+ */
353
+ loadManifest(manifestFileObj?: FileObj, replaceIfAlreadyLoaded?: boolean): void;
286
354
  /**
287
355
  * Get a map of the manifest information
288
356
  */
289
357
  getManifest(): Map<string, string>;
290
- private _manifest;
291
358
  dispose(): void;
292
359
  }
293
360
  export interface FileTranspileResult {
294
361
  srcPath: string;
362
+ destPath: string;
295
363
  pkgPath: string;
296
364
  code: string;
297
- map: SourceMapGenerator;
365
+ map: string;
298
366
  typedef: string;
299
367
  }
368
+ export interface ProgramBuildOptions {
369
+ /**
370
+ * The directory where the final built files should be placed. This directory will be cleared before running
371
+ */
372
+ stagingDir?: string;
373
+ /**
374
+ * An array of files to build. If omitted, the entire list of files from the program will be used instead.
375
+ * Typically you will want to leave this blank
376
+ */
377
+ files?: BscFile[];
378
+ }