brighterscript 1.0.0-alpha.5 → 1.0.0-alpha.50

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 (715) hide show
  1. package/README.md +76 -138
  2. package/bsconfig.schema.json +121 -5
  3. package/dist/ActionPipeline.d.ts +10 -0
  4. package/dist/ActionPipeline.js +40 -0
  5. package/dist/ActionPipeline.js.map +1 -0
  6. package/dist/AstValidationSegmenter.d.ts +45 -0
  7. package/dist/AstValidationSegmenter.js +322 -0
  8. package/dist/AstValidationSegmenter.js.map +1 -0
  9. package/dist/BsConfig.d.ts +72 -39
  10. package/dist/BusyStatusTracker.d.ts +61 -0
  11. package/dist/BusyStatusTracker.js +148 -0
  12. package/dist/BusyStatusTracker.js.map +1 -0
  13. package/dist/Cache.d.ts +3 -8
  14. package/dist/Cache.js +9 -14
  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 +12 -4
  20. package/dist/CodeActionUtil.js +22 -5
  21. package/dist/CodeActionUtil.js.map +1 -1
  22. package/dist/CommentFlagProcessor.d.ts +7 -6
  23. package/dist/CommentFlagProcessor.js +11 -8
  24. package/dist/CommentFlagProcessor.js.map +1 -1
  25. package/dist/CrossScopeValidator.d.ts +68 -0
  26. package/dist/CrossScopeValidator.js +642 -0
  27. package/dist/CrossScopeValidator.js.map +1 -0
  28. package/dist/DependencyGraph.d.ts +8 -3
  29. package/dist/DependencyGraph.js +49 -16
  30. package/dist/DependencyGraph.js.map +1 -1
  31. package/dist/DiagnosticCollection.d.ts +21 -5
  32. package/dist/DiagnosticCollection.js +77 -24
  33. package/dist/DiagnosticCollection.js.map +1 -1
  34. package/dist/DiagnosticFilterer.d.ts +27 -6
  35. package/dist/DiagnosticFilterer.js +273 -60
  36. package/dist/DiagnosticFilterer.js.map +1 -1
  37. package/dist/DiagnosticManager.d.ts +82 -0
  38. package/dist/DiagnosticManager.js +406 -0
  39. package/dist/DiagnosticManager.js.map +1 -0
  40. package/dist/DiagnosticMessages.d.ts +558 -196
  41. package/dist/DiagnosticMessages.js +870 -340
  42. package/dist/DiagnosticMessages.js.map +1 -1
  43. package/dist/DiagnosticSeverityAdjuster.d.ts +7 -0
  44. package/dist/DiagnosticSeverityAdjuster.js +45 -0
  45. package/dist/DiagnosticSeverityAdjuster.js.map +1 -0
  46. package/dist/FunctionScope.d.ts +28 -0
  47. package/dist/FunctionScope.js +52 -0
  48. package/dist/FunctionScope.js.map +1 -0
  49. package/dist/KeyedThrottler.d.ts +3 -3
  50. package/dist/KeyedThrottler.js +3 -3
  51. package/dist/KeyedThrottler.js.map +1 -1
  52. package/dist/LanguageServer.d.ts +100 -105
  53. package/dist/LanguageServer.js +444 -745
  54. package/dist/LanguageServer.js.map +1 -1
  55. package/dist/Logger.d.ts +17 -13
  56. package/dist/Logger.js +64 -34
  57. package/dist/Logger.js.map +1 -1
  58. package/dist/PluginInterface.d.ts +32 -10
  59. package/dist/PluginInterface.js +117 -7
  60. package/dist/PluginInterface.js.map +1 -1
  61. package/dist/Program.d.ts +241 -98
  62. package/dist/Program.js +1432 -717
  63. package/dist/Program.js.map +1 -1
  64. package/dist/ProgramBuilder.d.ts +47 -23
  65. package/dist/ProgramBuilder.js +224 -178
  66. package/dist/ProgramBuilder.js.map +1 -1
  67. package/dist/Scope.d.ts +149 -109
  68. package/dist/Scope.js +557 -550
  69. package/dist/Scope.js.map +1 -1
  70. package/dist/SemanticTokenUtils.js +5 -1
  71. package/dist/SemanticTokenUtils.js.map +1 -1
  72. package/dist/Stopwatch.d.ts +4 -0
  73. package/dist/Stopwatch.js +8 -1
  74. package/dist/Stopwatch.js.map +1 -1
  75. package/dist/SymbolTable.d.ts +136 -24
  76. package/dist/SymbolTable.js +565 -64
  77. package/dist/SymbolTable.js.map +1 -1
  78. package/dist/SymbolTypeFlag.d.ts +9 -0
  79. package/dist/SymbolTypeFlag.js +14 -0
  80. package/dist/SymbolTypeFlag.js.map +1 -0
  81. package/dist/Throttler.d.ts +12 -0
  82. package/dist/Throttler.js +39 -0
  83. package/dist/Throttler.js.map +1 -1
  84. package/dist/Watcher.d.ts +0 -3
  85. package/dist/Watcher.js +0 -3
  86. package/dist/Watcher.js.map +1 -1
  87. package/dist/XmlScope.d.ts +5 -15
  88. package/dist/XmlScope.js +34 -90
  89. package/dist/XmlScope.js.map +1 -1
  90. package/dist/astUtils/CachedLookups.d.ts +50 -0
  91. package/dist/astUtils/CachedLookups.js +334 -0
  92. package/dist/astUtils/CachedLookups.js.map +1 -0
  93. package/dist/astUtils/CachedLookups.spec.js +39 -0
  94. package/dist/astUtils/CachedLookups.spec.js.map +1 -0
  95. package/dist/astUtils/Editor.d.ts +69 -0
  96. package/dist/astUtils/Editor.js +245 -0
  97. package/dist/astUtils/Editor.js.map +1 -0
  98. package/dist/astUtils/Editor.spec.js +258 -0
  99. package/dist/astUtils/Editor.spec.js.map +1 -0
  100. package/dist/astUtils/creators.d.ts +54 -19
  101. package/dist/astUtils/creators.js +242 -42
  102. package/dist/astUtils/creators.js.map +1 -1
  103. package/dist/astUtils/creators.spec.js +5 -5
  104. package/dist/astUtils/creators.spec.js.map +1 -1
  105. package/dist/astUtils/reflection.d.ts +196 -85
  106. package/dist/astUtils/reflection.js +497 -144
  107. package/dist/astUtils/reflection.js.map +1 -1
  108. package/dist/astUtils/reflection.spec.js +267 -167
  109. package/dist/astUtils/reflection.spec.js.map +1 -1
  110. package/dist/astUtils/stackedVisitor.js.map +1 -1
  111. package/dist/astUtils/stackedVisitor.spec.js +14 -14
  112. package/dist/astUtils/stackedVisitor.spec.js.map +1 -1
  113. package/dist/astUtils/visitors.d.ts +116 -53
  114. package/dist/astUtils/visitors.js +95 -15
  115. package/dist/astUtils/visitors.js.map +1 -1
  116. package/dist/astUtils/visitors.spec.js +629 -51
  117. package/dist/astUtils/visitors.spec.js.map +1 -1
  118. package/dist/astUtils/xml.d.ts +9 -8
  119. package/dist/astUtils/xml.js +12 -7
  120. package/dist/astUtils/xml.js.map +1 -1
  121. package/dist/bscPlugin/BscPlugin.d.ts +24 -4
  122. package/dist/bscPlugin/BscPlugin.js +88 -4
  123. package/dist/bscPlugin/BscPlugin.js.map +1 -1
  124. package/dist/bscPlugin/CallExpressionInfo.d.ts +36 -0
  125. package/dist/bscPlugin/CallExpressionInfo.js +143 -0
  126. package/dist/bscPlugin/CallExpressionInfo.js.map +1 -0
  127. package/dist/bscPlugin/FileWriter.d.ts +6 -0
  128. package/dist/bscPlugin/FileWriter.js +24 -0
  129. package/dist/bscPlugin/FileWriter.js.map +1 -0
  130. package/dist/bscPlugin/SignatureHelpUtil.d.ts +10 -0
  131. package/dist/bscPlugin/SignatureHelpUtil.js +137 -0
  132. package/dist/bscPlugin/SignatureHelpUtil.js.map +1 -0
  133. package/dist/bscPlugin/codeActions/CodeActionsProcessor.d.ts +6 -5
  134. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js +173 -27
  135. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js.map +1 -1
  136. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js +138 -21
  137. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js.map +1 -1
  138. package/dist/bscPlugin/completions/CompletionsProcessor.d.ts +65 -0
  139. package/dist/bscPlugin/completions/CompletionsProcessor.js +633 -0
  140. package/dist/bscPlugin/completions/CompletionsProcessor.js.map +1 -0
  141. package/dist/bscPlugin/completions/CompletionsProcessor.spec.js +2512 -0
  142. package/dist/bscPlugin/completions/CompletionsProcessor.spec.js.map +1 -0
  143. package/dist/bscPlugin/definition/DefinitionProvider.d.ts +13 -0
  144. package/dist/bscPlugin/definition/DefinitionProvider.js +212 -0
  145. package/dist/bscPlugin/definition/DefinitionProvider.js.map +1 -0
  146. package/dist/bscPlugin/definition/DefinitionProvider.spec.js +87 -0
  147. package/dist/bscPlugin/definition/DefinitionProvider.spec.js.map +1 -0
  148. package/dist/bscPlugin/fileProviders/FileProvider.d.ts +9 -0
  149. package/dist/bscPlugin/fileProviders/FileProvider.js +51 -0
  150. package/dist/bscPlugin/fileProviders/FileProvider.js.map +1 -0
  151. package/dist/bscPlugin/hover/HoverProcessor.d.ts +18 -0
  152. package/dist/bscPlugin/hover/HoverProcessor.js +230 -0
  153. package/dist/bscPlugin/hover/HoverProcessor.js.map +1 -0
  154. package/dist/bscPlugin/hover/HoverProcessor.spec.js +991 -0
  155. package/dist/bscPlugin/hover/HoverProcessor.spec.js.map +1 -0
  156. package/dist/bscPlugin/references/ReferencesProvider.d.ts +12 -0
  157. package/dist/bscPlugin/references/ReferencesProvider.js +57 -0
  158. package/dist/bscPlugin/references/ReferencesProvider.js.map +1 -0
  159. package/dist/bscPlugin/references/ReferencesProvider.spec.d.ts +1 -0
  160. package/dist/bscPlugin/references/ReferencesProvider.spec.js +51 -0
  161. package/dist/bscPlugin/references/ReferencesProvider.spec.js.map +1 -0
  162. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.d.ts +14 -0
  163. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js +164 -0
  164. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js.map +1 -0
  165. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.d.ts +1 -0
  166. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js +564 -0
  167. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js.map +1 -0
  168. package/dist/bscPlugin/serialize/BslibInjector.spec.d.ts +1 -0
  169. package/dist/bscPlugin/serialize/BslibInjector.spec.js +33 -0
  170. package/dist/bscPlugin/serialize/BslibInjector.spec.js.map +1 -0
  171. package/dist/bscPlugin/serialize/BslibManager.d.ts +12 -0
  172. package/dist/bscPlugin/serialize/BslibManager.js +46 -0
  173. package/dist/bscPlugin/serialize/BslibManager.js.map +1 -0
  174. package/dist/bscPlugin/serialize/FileSerializer.d.ts +9 -0
  175. package/dist/bscPlugin/serialize/FileSerializer.js +75 -0
  176. package/dist/bscPlugin/serialize/FileSerializer.js.map +1 -0
  177. package/dist/bscPlugin/symbols/DocumentSymbolProcessor.d.ts +7 -0
  178. package/dist/bscPlugin/symbols/DocumentSymbolProcessor.js +22 -0
  179. package/dist/bscPlugin/symbols/DocumentSymbolProcessor.js.map +1 -0
  180. package/dist/bscPlugin/symbols/DocumentSymbolProcessor.spec.d.ts +1 -0
  181. package/dist/bscPlugin/symbols/DocumentSymbolProcessor.spec.js +291 -0
  182. package/dist/bscPlugin/symbols/DocumentSymbolProcessor.spec.js.map +1 -0
  183. package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.d.ts +7 -0
  184. package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.js +26 -0
  185. package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.js.map +1 -0
  186. package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.spec.d.ts +1 -0
  187. package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.spec.js +245 -0
  188. package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.spec.js.map +1 -0
  189. package/dist/bscPlugin/symbols/symbolUtils.d.ts +5 -0
  190. package/dist/bscPlugin/symbols/symbolUtils.js +141 -0
  191. package/dist/bscPlugin/symbols/symbolUtils.js.map +1 -0
  192. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.d.ts +27 -0
  193. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.js +418 -0
  194. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.js.map +1 -0
  195. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.d.ts +1 -0
  196. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.js +75 -0
  197. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.js.map +1 -0
  198. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.d.ts +12 -0
  199. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.js +99 -0
  200. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.js.map +1 -0
  201. package/dist/bscPlugin/validation/BrsFileAfterValidator.d.ts +7 -0
  202. package/dist/bscPlugin/validation/BrsFileAfterValidator.js +18 -0
  203. package/dist/bscPlugin/validation/BrsFileAfterValidator.js.map +1 -0
  204. package/dist/bscPlugin/validation/BrsFileValidator.d.ts +37 -0
  205. package/dist/bscPlugin/validation/BrsFileValidator.js +638 -0
  206. package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -0
  207. package/dist/bscPlugin/validation/BrsFileValidator.spec.d.ts +1 -0
  208. package/dist/bscPlugin/validation/BrsFileValidator.spec.js +1517 -0
  209. package/dist/bscPlugin/validation/BrsFileValidator.spec.js.map +1 -0
  210. package/dist/bscPlugin/validation/ProgramValidator.d.ts +11 -0
  211. package/dist/bscPlugin/validation/ProgramValidator.js +33 -0
  212. package/dist/bscPlugin/validation/ProgramValidator.js.map +1 -0
  213. package/dist/bscPlugin/validation/ScopeValidator.d.ts +141 -0
  214. package/dist/bscPlugin/validation/ScopeValidator.js +1323 -0
  215. package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -0
  216. package/dist/bscPlugin/validation/ScopeValidator.spec.d.ts +1 -0
  217. package/dist/bscPlugin/validation/ScopeValidator.spec.js +6135 -0
  218. package/dist/bscPlugin/validation/ScopeValidator.spec.js.map +1 -0
  219. package/dist/bscPlugin/validation/XmlFileValidator.d.ts +8 -0
  220. package/dist/bscPlugin/validation/XmlFileValidator.js +36 -0
  221. package/dist/bscPlugin/validation/XmlFileValidator.js.map +1 -0
  222. package/dist/cli.js +126 -27
  223. package/dist/cli.js.map +1 -1
  224. package/dist/common/Sequencer.d.ts +53 -0
  225. package/dist/common/Sequencer.js +233 -0
  226. package/dist/common/Sequencer.js.map +1 -0
  227. package/dist/common/Sequencer.spec.d.ts +1 -0
  228. package/dist/common/Sequencer.spec.js +75 -0
  229. package/dist/common/Sequencer.spec.js.map +1 -0
  230. package/dist/deferred.d.ts +5 -3
  231. package/dist/deferred.js +10 -0
  232. package/dist/deferred.js.map +1 -1
  233. package/dist/diagnosticUtils.d.ts +10 -3
  234. package/dist/diagnosticUtils.js +64 -25
  235. package/dist/diagnosticUtils.js.map +1 -1
  236. package/dist/examples/plugins/removePrint.d.ts +2 -2
  237. package/dist/examples/plugins/removePrint.js +8 -12
  238. package/dist/examples/plugins/removePrint.js.map +1 -1
  239. package/dist/files/AssetFile.d.ts +24 -0
  240. package/dist/files/AssetFile.js +25 -0
  241. package/dist/files/AssetFile.js.map +1 -0
  242. package/dist/files/BrsFile.Class.spec.js +1213 -259
  243. package/dist/files/BrsFile.Class.spec.js.map +1 -1
  244. package/dist/files/BrsFile.d.ts +145 -87
  245. package/dist/files/BrsFile.js +836 -934
  246. package/dist/files/BrsFile.js.map +1 -1
  247. package/dist/files/BrsFile.spec.js +4226 -902
  248. package/dist/files/BrsFile.spec.js.map +1 -1
  249. package/dist/files/BscFile.d.ts +102 -0
  250. package/dist/files/BscFile.js +15 -0
  251. package/dist/files/BscFile.js.map +1 -0
  252. package/dist/files/Factory.d.ts +25 -0
  253. package/dist/files/Factory.js +22 -0
  254. package/dist/files/Factory.js.map +1 -0
  255. package/dist/files/LazyFileData.d.ts +21 -0
  256. package/dist/files/LazyFileData.js +54 -0
  257. package/dist/files/LazyFileData.js.map +1 -0
  258. package/dist/files/LazyFileData.spec.d.ts +1 -0
  259. package/dist/files/LazyFileData.spec.js +27 -0
  260. package/dist/files/LazyFileData.spec.js.map +1 -0
  261. package/dist/files/XmlFile.d.ts +80 -41
  262. package/dist/files/XmlFile.js +161 -137
  263. package/dist/files/XmlFile.js.map +1 -1
  264. package/dist/files/XmlFile.spec.js +444 -336
  265. package/dist/files/XmlFile.spec.js.map +1 -1
  266. package/dist/files/tests/imports.spec.js +62 -52
  267. package/dist/files/tests/imports.spec.js.map +1 -1
  268. package/dist/files/tests/optionalChaning.spec.d.ts +1 -0
  269. package/dist/files/tests/optionalChaning.spec.js +152 -0
  270. package/dist/files/tests/optionalChaning.spec.js.map +1 -0
  271. package/dist/globalCallables.d.ts +3 -1
  272. package/dist/globalCallables.js +424 -184
  273. package/dist/globalCallables.js.map +1 -1
  274. package/dist/index.d.ts +32 -4
  275. package/dist/index.js +54 -7
  276. package/dist/index.js.map +1 -1
  277. package/dist/interfaces.d.ts +942 -125
  278. package/dist/interfaces.js +21 -0
  279. package/dist/interfaces.js.map +1 -1
  280. package/dist/lexer/Character.spec.js +5 -5
  281. package/dist/lexer/Character.spec.js.map +1 -1
  282. package/dist/lexer/Lexer.d.ts +51 -12
  283. package/dist/lexer/Lexer.js +215 -65
  284. package/dist/lexer/Lexer.js.map +1 -1
  285. package/dist/lexer/Lexer.spec.js +812 -568
  286. package/dist/lexer/Lexer.spec.js.map +1 -1
  287. package/dist/lexer/Token.d.ts +27 -11
  288. package/dist/lexer/Token.js +10 -2
  289. package/dist/lexer/Token.js.map +1 -1
  290. package/dist/lexer/TokenKind.d.ts +40 -2
  291. package/dist/lexer/TokenKind.js +147 -10
  292. package/dist/lexer/TokenKind.js.map +1 -1
  293. package/dist/logging.d.ts +14 -0
  294. package/dist/logging.js +29 -0
  295. package/dist/logging.js.map +1 -0
  296. package/dist/lsp/ActionQueue.d.ts +35 -0
  297. package/dist/lsp/ActionQueue.js +115 -0
  298. package/dist/lsp/ActionQueue.js.map +1 -0
  299. package/dist/lsp/ActionQueue.spec.d.ts +1 -0
  300. package/dist/lsp/ActionQueue.spec.js +80 -0
  301. package/dist/lsp/ActionQueue.spec.js.map +1 -0
  302. package/dist/lsp/DocumentManager.d.ts +63 -0
  303. package/dist/lsp/DocumentManager.js +122 -0
  304. package/dist/lsp/DocumentManager.js.map +1 -0
  305. package/dist/lsp/DocumentManager.spec.d.ts +1 -0
  306. package/dist/lsp/DocumentManager.spec.js +103 -0
  307. package/dist/lsp/DocumentManager.spec.js.map +1 -0
  308. package/dist/lsp/LspProject.d.ts +239 -0
  309. package/dist/lsp/LspProject.js +3 -0
  310. package/dist/lsp/LspProject.js.map +1 -0
  311. package/dist/lsp/PathFilterer.d.ts +75 -0
  312. package/dist/lsp/PathFilterer.js +196 -0
  313. package/dist/lsp/PathFilterer.js.map +1 -0
  314. package/dist/lsp/PathFilterer.spec.d.ts +1 -0
  315. package/dist/lsp/PathFilterer.spec.js +182 -0
  316. package/dist/lsp/PathFilterer.spec.js.map +1 -0
  317. package/dist/lsp/Project.d.ts +168 -0
  318. package/dist/lsp/Project.js +437 -0
  319. package/dist/lsp/Project.js.map +1 -0
  320. package/dist/lsp/Project.spec.d.ts +1 -0
  321. package/dist/lsp/Project.spec.js +267 -0
  322. package/dist/lsp/Project.spec.js.map +1 -0
  323. package/dist/lsp/ProjectManager.d.ts +242 -0
  324. package/dist/lsp/ProjectManager.js +824 -0
  325. package/dist/lsp/ProjectManager.js.map +1 -0
  326. package/dist/lsp/ProjectManager.spec.d.ts +1 -0
  327. package/dist/lsp/ProjectManager.spec.js +913 -0
  328. package/dist/lsp/ProjectManager.spec.js.map +1 -0
  329. package/dist/lsp/ReaderWriterManager.d.ts +21 -0
  330. package/dist/lsp/ReaderWriterManager.js +60 -0
  331. package/dist/lsp/ReaderWriterManager.js.map +1 -0
  332. package/dist/lsp/worker/MessageHandler.d.ts +99 -0
  333. package/dist/lsp/worker/MessageHandler.js +138 -0
  334. package/dist/lsp/worker/MessageHandler.js.map +1 -0
  335. package/dist/lsp/worker/MessageHandler.spec.d.ts +1 -0
  336. package/dist/lsp/worker/MessageHandler.spec.js +64 -0
  337. package/dist/lsp/worker/MessageHandler.spec.js.map +1 -0
  338. package/dist/lsp/worker/WorkerPool.d.ts +38 -0
  339. package/dist/lsp/worker/WorkerPool.js +78 -0
  340. package/dist/lsp/worker/WorkerPool.js.map +1 -0
  341. package/dist/lsp/worker/WorkerPool.spec.d.ts +1 -0
  342. package/dist/lsp/worker/WorkerPool.spec.js +59 -0
  343. package/dist/lsp/worker/WorkerPool.spec.js.map +1 -0
  344. package/dist/lsp/worker/WorkerThreadProject.d.ts +143 -0
  345. package/dist/lsp/worker/WorkerThreadProject.js +189 -0
  346. package/dist/lsp/worker/WorkerThreadProject.js.map +1 -0
  347. package/dist/lsp/worker/WorkerThreadProject.spec.d.ts +2 -0
  348. package/dist/lsp/worker/WorkerThreadProject.spec.js +71 -0
  349. package/dist/lsp/worker/WorkerThreadProject.spec.js.map +1 -0
  350. package/dist/lsp/worker/WorkerThreadProjectRunner.d.ts +15 -0
  351. package/dist/lsp/worker/WorkerThreadProjectRunner.js +58 -0
  352. package/dist/lsp/worker/WorkerThreadProjectRunner.js.map +1 -0
  353. package/dist/lsp/worker/run.d.ts +1 -0
  354. package/dist/lsp/worker/run.js +14 -0
  355. package/dist/lsp/worker/run.js.map +1 -0
  356. package/dist/parser/AstNode.d.ts +203 -0
  357. package/dist/parser/AstNode.js +303 -0
  358. package/dist/parser/AstNode.js.map +1 -0
  359. package/dist/parser/AstNode.spec.d.ts +1 -0
  360. package/dist/parser/AstNode.spec.js +1455 -0
  361. package/dist/parser/AstNode.spec.js.map +1 -0
  362. package/dist/parser/BrightScriptDocParser.d.ts +56 -0
  363. package/dist/parser/BrightScriptDocParser.js +294 -0
  364. package/dist/parser/BrightScriptDocParser.js.map +1 -0
  365. package/dist/parser/BrightScriptDocParser.spec.d.ts +1 -0
  366. package/dist/parser/BrightScriptDocParser.spec.js +310 -0
  367. package/dist/parser/BrightScriptDocParser.spec.js.map +1 -0
  368. package/dist/parser/BrsTranspileState.d.ts +22 -3
  369. package/dist/parser/BrsTranspileState.js +19 -0
  370. package/dist/parser/BrsTranspileState.js.map +1 -1
  371. package/dist/parser/Expression.d.ts +553 -221
  372. package/dist/parser/Expression.js +1414 -505
  373. package/dist/parser/Expression.js.map +1 -1
  374. package/dist/parser/Expression.spec.d.ts +1 -0
  375. package/dist/parser/Expression.spec.js +40 -0
  376. package/dist/parser/Expression.spec.js.map +1 -0
  377. package/dist/parser/Parser.Class.spec.js +255 -125
  378. package/dist/parser/Parser.Class.spec.js.map +1 -1
  379. package/dist/parser/Parser.d.ts +117 -124
  380. package/dist/parser/Parser.js +1669 -982
  381. package/dist/parser/Parser.js.map +1 -1
  382. package/dist/parser/Parser.spec.d.ts +3 -1
  383. package/dist/parser/Parser.spec.js +2111 -525
  384. package/dist/parser/Parser.spec.js.map +1 -1
  385. package/dist/parser/SGParser.d.ts +29 -13
  386. package/dist/parser/SGParser.js +85 -56
  387. package/dist/parser/SGParser.js.map +1 -1
  388. package/dist/parser/SGParser.spec.js +30 -45
  389. package/dist/parser/SGParser.spec.js.map +1 -1
  390. package/dist/parser/SGTypes.d.ts +134 -46
  391. package/dist/parser/SGTypes.js +206 -115
  392. package/dist/parser/SGTypes.js.map +1 -1
  393. package/dist/parser/Statement.d.ts +849 -267
  394. package/dist/parser/Statement.js +2412 -625
  395. package/dist/parser/Statement.js.map +1 -1
  396. package/dist/parser/Statement.spec.js +133 -36
  397. package/dist/parser/Statement.spec.js.map +1 -1
  398. package/dist/parser/TranspileState.d.ts +26 -12
  399. package/dist/parser/TranspileState.js +115 -24
  400. package/dist/parser/TranspileState.js.map +1 -1
  401. package/dist/parser/tests/Parser.spec.d.ts +3 -9
  402. package/dist/parser/tests/Parser.spec.js +7 -13
  403. package/dist/parser/tests/Parser.spec.js.map +1 -1
  404. package/dist/parser/tests/controlFlow/For.spec.js +83 -75
  405. package/dist/parser/tests/controlFlow/For.spec.js.map +1 -1
  406. package/dist/parser/tests/controlFlow/ForEach.spec.js +85 -51
  407. package/dist/parser/tests/controlFlow/ForEach.spec.js.map +1 -1
  408. package/dist/parser/tests/controlFlow/If.spec.js +382 -239
  409. package/dist/parser/tests/controlFlow/If.spec.js.map +1 -1
  410. package/dist/parser/tests/controlFlow/While.spec.js +52 -45
  411. package/dist/parser/tests/controlFlow/While.spec.js.map +1 -1
  412. package/dist/parser/tests/expression/Additive.spec.js +51 -43
  413. package/dist/parser/tests/expression/Additive.spec.js.map +1 -1
  414. package/dist/parser/tests/expression/ArrayLiterals.spec.js +192 -142
  415. package/dist/parser/tests/expression/ArrayLiterals.spec.js.map +1 -1
  416. package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js +236 -160
  417. package/dist/parser/tests/expression/AssociativeArrayLiterals.spec.js.map +1 -1
  418. package/dist/parser/tests/expression/Boolean.spec.js +41 -34
  419. package/dist/parser/tests/expression/Boolean.spec.js.map +1 -1
  420. package/dist/parser/tests/expression/Call.spec.js +173 -55
  421. package/dist/parser/tests/expression/Call.spec.js.map +1 -1
  422. package/dist/parser/tests/expression/Exponential.spec.js +20 -20
  423. package/dist/parser/tests/expression/Exponential.spec.js.map +1 -1
  424. package/dist/parser/tests/expression/Function.spec.js +291 -282
  425. package/dist/parser/tests/expression/Function.spec.js.map +1 -1
  426. package/dist/parser/tests/expression/Indexing.spec.js +193 -110
  427. package/dist/parser/tests/expression/Indexing.spec.js.map +1 -1
  428. package/dist/parser/tests/expression/Multiplicative.spec.js +42 -42
  429. package/dist/parser/tests/expression/Multiplicative.spec.js.map +1 -1
  430. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js +260 -115
  431. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js.map +1 -1
  432. package/dist/parser/tests/expression/PrefixUnary.spec.js +58 -52
  433. package/dist/parser/tests/expression/PrefixUnary.spec.js.map +1 -1
  434. package/dist/parser/tests/expression/Primary.spec.js +76 -60
  435. package/dist/parser/tests/expression/Primary.spec.js.map +1 -1
  436. package/dist/parser/tests/expression/RegexLiteralExpression.spec.d.ts +1 -0
  437. package/dist/parser/tests/expression/RegexLiteralExpression.spec.js +171 -0
  438. package/dist/parser/tests/expression/RegexLiteralExpression.spec.js.map +1 -0
  439. package/dist/parser/tests/expression/Relational.spec.js +50 -50
  440. package/dist/parser/tests/expression/Relational.spec.js.map +1 -1
  441. package/dist/parser/tests/expression/SourceLiteralExpression.spec.js +31 -31
  442. package/dist/parser/tests/expression/SourceLiteralExpression.spec.js.map +1 -1
  443. package/dist/parser/tests/expression/TemplateStringExpression.spec.js +281 -94
  444. package/dist/parser/tests/expression/TemplateStringExpression.spec.js.map +1 -1
  445. package/dist/parser/tests/expression/TernaryExpression.spec.js +747 -192
  446. package/dist/parser/tests/expression/TernaryExpression.spec.js.map +1 -1
  447. package/dist/parser/tests/expression/TypeExpression.spec.d.ts +1 -0
  448. package/dist/parser/tests/expression/TypeExpression.spec.js +126 -0
  449. package/dist/parser/tests/expression/TypeExpression.spec.js.map +1 -0
  450. package/dist/parser/tests/expression/UnaryExpression.spec.d.ts +1 -0
  451. package/dist/parser/tests/expression/UnaryExpression.spec.js +52 -0
  452. package/dist/parser/tests/expression/UnaryExpression.spec.js.map +1 -0
  453. package/dist/parser/tests/statement/AssignmentOperators.spec.js +44 -44
  454. package/dist/parser/tests/statement/AssignmentOperators.spec.js.map +1 -1
  455. package/dist/parser/tests/statement/ConstStatement.spec.d.ts +1 -0
  456. package/dist/parser/tests/statement/ConstStatement.spec.js +500 -0
  457. package/dist/parser/tests/statement/ConstStatement.spec.js.map +1 -0
  458. package/dist/parser/tests/statement/Continue.spec.d.ts +1 -0
  459. package/dist/parser/tests/statement/Continue.spec.js +119 -0
  460. package/dist/parser/tests/statement/Continue.spec.js.map +1 -0
  461. package/dist/parser/tests/statement/Declaration.spec.js +61 -55
  462. package/dist/parser/tests/statement/Declaration.spec.js.map +1 -1
  463. package/dist/parser/tests/statement/Dim.spec.js +29 -22
  464. package/dist/parser/tests/statement/Dim.spec.js.map +1 -1
  465. package/dist/parser/tests/statement/Enum.spec.d.ts +1 -0
  466. package/dist/parser/tests/statement/Enum.spec.js +744 -0
  467. package/dist/parser/tests/statement/Enum.spec.js.map +1 -0
  468. package/dist/parser/tests/statement/For.spec.d.ts +1 -0
  469. package/dist/parser/tests/statement/For.spec.js +45 -0
  470. package/dist/parser/tests/statement/For.spec.js.map +1 -0
  471. package/dist/parser/tests/statement/ForEach.spec.d.ts +1 -0
  472. package/dist/parser/tests/statement/ForEach.spec.js +36 -0
  473. package/dist/parser/tests/statement/ForEach.spec.js.map +1 -0
  474. package/dist/parser/tests/statement/Function.spec.js +226 -215
  475. package/dist/parser/tests/statement/Function.spec.js.map +1 -1
  476. package/dist/parser/tests/statement/Goto.spec.js +16 -15
  477. package/dist/parser/tests/statement/Goto.spec.js.map +1 -1
  478. package/dist/parser/tests/statement/Increment.spec.js +64 -61
  479. package/dist/parser/tests/statement/Increment.spec.js.map +1 -1
  480. package/dist/parser/tests/statement/InterfaceStatement.spec.d.ts +1 -0
  481. package/dist/parser/tests/statement/InterfaceStatement.spec.js +110 -0
  482. package/dist/parser/tests/statement/InterfaceStatement.spec.js.map +1 -0
  483. package/dist/parser/tests/statement/LibraryStatement.spec.js +22 -22
  484. package/dist/parser/tests/statement/LibraryStatement.spec.js.map +1 -1
  485. package/dist/parser/tests/statement/Misc.spec.js +127 -168
  486. package/dist/parser/tests/statement/Misc.spec.js.map +1 -1
  487. package/dist/parser/tests/statement/PrintStatement.spec.js +133 -114
  488. package/dist/parser/tests/statement/PrintStatement.spec.js.map +1 -1
  489. package/dist/parser/tests/statement/ReturnStatement.spec.js +57 -54
  490. package/dist/parser/tests/statement/ReturnStatement.spec.js.map +1 -1
  491. package/dist/parser/tests/statement/Set.spec.js +131 -117
  492. package/dist/parser/tests/statement/Set.spec.js.map +1 -1
  493. package/dist/parser/tests/statement/Stop.spec.js +14 -13
  494. package/dist/parser/tests/statement/Stop.spec.js.map +1 -1
  495. package/dist/parser/tests/statement/Throw.spec.js +11 -8
  496. package/dist/parser/tests/statement/Throw.spec.js.map +1 -1
  497. package/dist/parser/tests/statement/TryCatch.spec.js +26 -15
  498. package/dist/parser/tests/statement/TryCatch.spec.js.map +1 -1
  499. package/dist/preprocessor/Manifest.d.ts +6 -6
  500. package/dist/preprocessor/Manifest.js +17 -38
  501. package/dist/preprocessor/Manifest.js.map +1 -1
  502. package/dist/preprocessor/Manifest.spec.d.ts +1 -0
  503. package/dist/preprocessor/Manifest.spec.js +78 -103
  504. package/dist/preprocessor/Manifest.spec.js.map +1 -1
  505. package/dist/roku-types/data.json +20347 -0
  506. package/dist/roku-types/index.d.ts +5726 -0
  507. package/dist/roku-types/index.js +11 -0
  508. package/dist/roku-types/index.js.map +1 -0
  509. package/dist/types/ArrayType.d.ts +12 -5
  510. package/dist/types/ArrayType.js +89 -24
  511. package/dist/types/ArrayType.js.map +1 -1
  512. package/dist/types/ArrayType.spec.js +39 -11
  513. package/dist/types/ArrayType.spec.js.map +1 -1
  514. package/dist/types/AssociativeArrayType.d.ts +15 -0
  515. package/dist/types/AssociativeArrayType.js +64 -0
  516. package/dist/types/AssociativeArrayType.js.map +1 -0
  517. package/dist/types/BaseFunctionType.d.ts +10 -0
  518. package/dist/types/BaseFunctionType.js +26 -0
  519. package/dist/types/BaseFunctionType.js.map +1 -0
  520. package/dist/types/BooleanType.d.ts +9 -5
  521. package/dist/types/BooleanType.js +19 -8
  522. package/dist/types/BooleanType.js.map +1 -1
  523. package/dist/types/BooleanType.spec.js +10 -4
  524. package/dist/types/BooleanType.spec.js.map +1 -1
  525. package/dist/types/BscType.d.ts +41 -3
  526. package/dist/types/BscType.js +152 -0
  527. package/dist/types/BscType.js.map +1 -1
  528. package/dist/types/BscTypeKind.d.ts +28 -0
  529. package/dist/types/BscTypeKind.js +33 -0
  530. package/dist/types/BscTypeKind.js.map +1 -0
  531. package/dist/types/BuiltInInterfaceAdder.d.ts +28 -0
  532. package/dist/types/BuiltInInterfaceAdder.js +212 -0
  533. package/dist/types/BuiltInInterfaceAdder.js.map +1 -0
  534. package/dist/types/BuiltInInterfaceAdder.spec.d.ts +1 -0
  535. package/dist/types/BuiltInInterfaceAdder.spec.js +115 -0
  536. package/dist/types/BuiltInInterfaceAdder.spec.js.map +1 -0
  537. package/dist/types/CallFuncableType.d.ts +24 -0
  538. package/dist/types/CallFuncableType.js +91 -0
  539. package/dist/types/CallFuncableType.js.map +1 -0
  540. package/dist/types/ClassType.d.ts +17 -0
  541. package/dist/types/ClassType.js +60 -0
  542. package/dist/types/ClassType.js.map +1 -0
  543. package/dist/types/ClassType.spec.d.ts +1 -0
  544. package/dist/types/ClassType.spec.js +76 -0
  545. package/dist/types/ClassType.spec.js.map +1 -0
  546. package/dist/types/ComponentType.d.ts +22 -0
  547. package/dist/types/ComponentType.js +107 -0
  548. package/dist/types/ComponentType.js.map +1 -0
  549. package/dist/types/DoubleType.d.ts +10 -5
  550. package/dist/types/DoubleType.js +21 -17
  551. package/dist/types/DoubleType.js.map +1 -1
  552. package/dist/types/DoubleType.spec.js +12 -4
  553. package/dist/types/DoubleType.spec.js.map +1 -1
  554. package/dist/types/DynamicType.d.ts +13 -5
  555. package/dist/types/DynamicType.js +26 -5
  556. package/dist/types/DynamicType.js.map +1 -1
  557. package/dist/types/DynamicType.spec.js +16 -5
  558. package/dist/types/DynamicType.spec.js.map +1 -1
  559. package/dist/types/EnumType.d.ts +42 -0
  560. package/dist/types/EnumType.js +98 -0
  561. package/dist/types/EnumType.js.map +1 -0
  562. package/dist/types/EnumType.spec.d.ts +1 -0
  563. package/dist/types/EnumType.spec.js +33 -0
  564. package/dist/types/EnumType.spec.js.map +1 -0
  565. package/dist/types/FloatType.d.ts +10 -5
  566. package/dist/types/FloatType.js +21 -17
  567. package/dist/types/FloatType.js.map +1 -1
  568. package/dist/types/FloatType.spec.js +4 -4
  569. package/dist/types/FloatType.spec.js.map +1 -1
  570. package/dist/types/FunctionType.d.ts +8 -22
  571. package/dist/types/FunctionType.js +25 -63
  572. package/dist/types/FunctionType.js.map +1 -1
  573. package/dist/types/InheritableType.d.ts +29 -0
  574. package/dist/types/InheritableType.js +173 -0
  575. package/dist/types/InheritableType.js.map +1 -0
  576. package/dist/types/InlineInterfaceType.d.ts +5 -0
  577. package/dist/types/InlineInterfaceType.js +17 -0
  578. package/dist/types/InlineInterfaceType.js.map +1 -0
  579. package/dist/types/IntegerType.d.ts +10 -5
  580. package/dist/types/IntegerType.js +21 -17
  581. package/dist/types/IntegerType.js.map +1 -1
  582. package/dist/types/IntegerType.spec.js +8 -4
  583. package/dist/types/IntegerType.spec.js.map +1 -1
  584. package/dist/types/InterfaceType.d.ts +14 -6
  585. package/dist/types/InterfaceType.js +30 -15
  586. package/dist/types/InterfaceType.js.map +1 -1
  587. package/dist/types/InterfaceType.spec.d.ts +1 -0
  588. package/dist/types/InterfaceType.spec.js +227 -0
  589. package/dist/types/InterfaceType.spec.js.map +1 -0
  590. package/dist/types/IntersectionType.d.ts +29 -0
  591. package/dist/types/IntersectionType.js +253 -0
  592. package/dist/types/IntersectionType.js.map +1 -0
  593. package/dist/types/IntersectionType.spec.d.ts +1 -0
  594. package/dist/types/IntersectionType.spec.js +150 -0
  595. package/dist/types/IntersectionType.spec.js.map +1 -0
  596. package/dist/types/InvalidType.d.ts +10 -5
  597. package/dist/types/InvalidType.js +21 -9
  598. package/dist/types/InvalidType.js.map +1 -1
  599. package/dist/types/InvalidType.spec.js +8 -4
  600. package/dist/types/InvalidType.spec.js.map +1 -1
  601. package/dist/types/LongIntegerType.d.ts +10 -5
  602. package/dist/types/LongIntegerType.js +21 -17
  603. package/dist/types/LongIntegerType.js.map +1 -1
  604. package/dist/types/LongIntegerType.spec.js +10 -4
  605. package/dist/types/LongIntegerType.spec.js.map +1 -1
  606. package/dist/types/NamespaceType.d.ts +12 -0
  607. package/dist/types/NamespaceType.js +28 -0
  608. package/dist/types/NamespaceType.js.map +1 -0
  609. package/dist/types/ObjectType.d.ts +12 -5
  610. package/dist/types/ObjectType.js +25 -8
  611. package/dist/types/ObjectType.js.map +1 -1
  612. package/dist/types/ObjectType.spec.js +3 -3
  613. package/dist/types/ObjectType.spec.js.map +1 -1
  614. package/dist/types/ReferenceType.d.ts +123 -0
  615. package/dist/types/ReferenceType.js +720 -0
  616. package/dist/types/ReferenceType.js.map +1 -0
  617. package/dist/types/ReferenceType.spec.d.ts +1 -0
  618. package/dist/types/ReferenceType.spec.js +151 -0
  619. package/dist/types/ReferenceType.spec.js.map +1 -0
  620. package/dist/types/StringType.d.ts +12 -5
  621. package/dist/types/StringType.js +23 -8
  622. package/dist/types/StringType.js.map +1 -1
  623. package/dist/types/StringType.spec.js +3 -3
  624. package/dist/types/StringType.spec.js.map +1 -1
  625. package/dist/types/TypeStatementType.d.ts +18 -0
  626. package/dist/types/TypeStatementType.js +45 -0
  627. package/dist/types/TypeStatementType.js.map +1 -0
  628. package/dist/types/TypedFunctionType.d.ts +34 -0
  629. package/dist/types/TypedFunctionType.js +147 -0
  630. package/dist/types/TypedFunctionType.js.map +1 -0
  631. package/dist/types/TypedFunctionType.spec.d.ts +1 -0
  632. package/dist/types/TypedFunctionType.spec.js +122 -0
  633. package/dist/types/TypedFunctionType.spec.js.map +1 -0
  634. package/dist/types/UninitializedType.d.ts +11 -6
  635. package/dist/types/UninitializedType.js +20 -11
  636. package/dist/types/UninitializedType.js.map +1 -1
  637. package/dist/types/UnionType.d.ts +27 -0
  638. package/dist/types/UnionType.js +193 -0
  639. package/dist/types/UnionType.js.map +1 -0
  640. package/dist/types/UnionType.spec.d.ts +1 -0
  641. package/dist/types/UnionType.spec.js +205 -0
  642. package/dist/types/UnionType.spec.js.map +1 -0
  643. package/dist/types/VoidType.d.ts +11 -5
  644. package/dist/types/VoidType.js +22 -8
  645. package/dist/types/VoidType.js.map +1 -1
  646. package/dist/types/VoidType.spec.js +3 -3
  647. package/dist/types/VoidType.spec.js.map +1 -1
  648. package/dist/types/helper.spec.d.ts +1 -0
  649. package/dist/types/helper.spec.js +174 -0
  650. package/dist/types/helper.spec.js.map +1 -0
  651. package/dist/types/helpers.d.ts +51 -0
  652. package/dist/types/helpers.js +323 -0
  653. package/dist/types/helpers.js.map +1 -0
  654. package/dist/types/index.d.ts +22 -0
  655. package/dist/types/index.js +39 -0
  656. package/dist/types/index.js.map +1 -0
  657. package/dist/types/roFunctionType.d.ts +11 -0
  658. package/dist/types/roFunctionType.js +37 -0
  659. package/dist/types/roFunctionType.js.map +1 -0
  660. package/dist/types/roFunctionType.spec.d.ts +1 -0
  661. package/dist/types/roFunctionType.spec.js +20 -0
  662. package/dist/types/roFunctionType.spec.js.map +1 -0
  663. package/dist/util.d.ts +288 -187
  664. package/dist/util.js +2018 -575
  665. package/dist/util.js.map +1 -1
  666. package/dist/validators/ClassValidator.d.ts +9 -15
  667. package/dist/validators/ClassValidator.js +93 -138
  668. package/dist/validators/ClassValidator.js.map +1 -1
  669. package/package.json +185 -138
  670. package/CHANGELOG.md +0 -1188
  671. package/dist/astUtils/index.d.ts +0 -7
  672. package/dist/astUtils/index.js +0 -26
  673. package/dist/astUtils/index.js.map +0 -1
  674. package/dist/bscPlugin/semanticTokens/SemanticTokensProcessor.d.ts +0 -7
  675. package/dist/bscPlugin/semanticTokens/SemanticTokensProcessor.js +0 -63
  676. package/dist/bscPlugin/semanticTokens/SemanticTokensProcessor.js.map +0 -1
  677. package/dist/bscPlugin/semanticTokens/SemanticTokensProcessor.spec.js +0 -45
  678. package/dist/bscPlugin/semanticTokens/SemanticTokensProcessor.spec.js.map +0 -1
  679. package/dist/lexer/index.d.ts +0 -3
  680. package/dist/lexer/index.js +0 -17
  681. package/dist/lexer/index.js.map +0 -1
  682. package/dist/parser/SGTypes.spec.js +0 -351
  683. package/dist/parser/SGTypes.spec.js.map +0 -1
  684. package/dist/parser/index.d.ts +0 -3
  685. package/dist/parser/index.js +0 -16
  686. package/dist/parser/index.js.map +0 -1
  687. package/dist/preprocessor/Chunk.d.ts +0 -82
  688. package/dist/preprocessor/Chunk.js +0 -77
  689. package/dist/preprocessor/Chunk.js.map +0 -1
  690. package/dist/preprocessor/Preprocessor.d.ts +0 -60
  691. package/dist/preprocessor/Preprocessor.js +0 -156
  692. package/dist/preprocessor/Preprocessor.js.map +0 -1
  693. package/dist/preprocessor/Preprocessor.spec.js +0 -152
  694. package/dist/preprocessor/Preprocessor.spec.js.map +0 -1
  695. package/dist/preprocessor/PreprocessorParser.d.ts +0 -61
  696. package/dist/preprocessor/PreprocessorParser.js +0 -194
  697. package/dist/preprocessor/PreprocessorParser.js.map +0 -1
  698. package/dist/preprocessor/PreprocessorParser.spec.js +0 -116
  699. package/dist/preprocessor/PreprocessorParser.spec.js.map +0 -1
  700. package/dist/preprocessor/index.d.ts +0 -3
  701. package/dist/preprocessor/index.js +0 -16
  702. package/dist/preprocessor/index.js.map +0 -1
  703. package/dist/types/CustomType.d.ts +0 -10
  704. package/dist/types/CustomType.js +0 -35
  705. package/dist/types/CustomType.js.map +0 -1
  706. package/dist/types/FunctionType.spec.js +0 -29
  707. package/dist/types/FunctionType.spec.js.map +0 -1
  708. package/dist/types/LazyType.d.ts +0 -15
  709. package/dist/types/LazyType.js +0 -32
  710. package/dist/types/LazyType.js.map +0 -1
  711. /package/dist/{bscPlugin/semanticTokens/SemanticTokensProcessor.spec.d.ts → astUtils/CachedLookups.spec.d.ts} +0 -0
  712. /package/dist/{parser/SGTypes.spec.d.ts → astUtils/Editor.spec.d.ts} +0 -0
  713. /package/dist/{preprocessor/Preprocessor.spec.d.ts → bscPlugin/completions/CompletionsProcessor.spec.d.ts} +0 -0
  714. /package/dist/{preprocessor/PreprocessorParser.spec.d.ts → bscPlugin/definition/DefinitionProvider.spec.d.ts} +0 -0
  715. /package/dist/{types/FunctionType.spec.d.ts → bscPlugin/hover/HoverProcessor.spec.d.ts} +0 -0
@@ -3,32 +3,32 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ProgramBuilder = void 0;
4
4
  const debounce = require("debounce-promise");
5
5
  const path = require("path");
6
- const rokuDeploy = require("roku-deploy");
6
+ const roku_deploy_1 = require("roku-deploy");
7
7
  const Program_1 = require("./Program");
8
8
  const util_1 = require("./util");
9
9
  const Watcher_1 = require("./Watcher");
10
10
  const vscode_languageserver_1 = require("vscode-languageserver");
11
- const Logger_1 = require("./Logger");
11
+ const logging_1 = require("./logging");
12
12
  const PluginInterface_1 = require("./PluginInterface");
13
13
  const diagnosticUtils = require("./diagnosticUtils");
14
14
  const fsExtra = require("fs-extra");
15
+ const requireRelative = require("require-relative");
16
+ const Throttler_1 = require("./Throttler");
17
+ const DiagnosticManager_1 = require("./DiagnosticManager");
15
18
  /**
16
19
  * A runner class that handles
17
20
  */
18
21
  class ProgramBuilder {
19
- constructor() {
22
+ constructor(options) {
23
+ var _a;
20
24
  /**
21
25
  * Determines whether the console should be cleared after a run (true for cli, false for languageserver)
22
26
  */
23
27
  this.allowConsoleClearing = true;
28
+ this.options = util_1.util.normalizeConfig({});
24
29
  this.isRunning = false;
25
- this.logger = new Logger_1.Logger();
26
- this.plugins = new PluginInterface_1.default([], this.logger);
27
30
  this.fileResolvers = [];
28
- /**
29
- * A list of diagnostics that are always added to the `getDiagnostics()` call.
30
- */
31
- this.staticDiagnostics = [];
31
+ this.diagnostics = new DiagnosticManager_1.DiagnosticManager();
32
32
  /**
33
33
  * A method that is used to cancel a previous run task.
34
34
  * Does nothing if previous run has completed or was already canceled
@@ -36,110 +36,154 @@ class ProgramBuilder {
36
36
  this.cancelLastRun = () => {
37
37
  return Promise.resolve();
38
38
  };
39
+ this.buildThrottler = new Throttler_1.Throttler(0);
40
+ this.logger = (_a = options === null || options === void 0 ? void 0 : options.logger) !== null && _a !== void 0 ? _a : (0, logging_1.createLogger)();
41
+ this.plugins = new PluginInterface_1.default([], { logger: this.logger });
39
42
  //add the default file resolver (used to load source file contents).
40
43
  this.addFileResolver((filePath) => {
41
- return fsExtra.readFile(filePath).then((value) => {
42
- return value.toString();
43
- });
44
+ return fsExtra.readFile(filePath);
44
45
  });
45
46
  }
46
- addFileResolver(fileResolver) {
47
- this.fileResolvers.push(fileResolver);
47
+ /**
48
+ * Add file resolvers that will be able to provide file contents before loading from the file system
49
+ * @param fileResolvers a list of file resolvers
50
+ */
51
+ addFileResolver(...fileResolvers) {
52
+ this.fileResolvers.push(...fileResolvers);
48
53
  }
49
54
  /**
50
55
  * Get the contents of the specified file as a string.
51
56
  * This walks backwards through the file resolvers until we get a value.
52
57
  * This allow the language server to provide file contents directly from memory.
53
- * @param srcPath The absolute path to the source file on disk
54
- * @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
55
58
  */
56
- async getFileContents(srcPath, normalizePath = true) {
57
- if (normalizePath) {
58
- srcPath = util_1.util.standardizePath(srcPath);
59
- }
59
+ async getFileContents(srcPath) {
60
+ srcPath = (0, util_1.standardizePath) `${srcPath}`;
60
61
  let reversedResolvers = [...this.fileResolvers].reverse();
61
62
  for (let fileResolver of reversedResolvers) {
62
63
  let result = await fileResolver(srcPath);
63
- if (typeof result === 'string') {
64
+ if (typeof result === 'string' || Buffer.isBuffer(result)) {
64
65
  return result;
65
66
  }
66
67
  }
67
68
  throw new Error(`Could not load file "${srcPath}"`);
68
69
  }
69
- /**
70
- * @param srcPath The absolute path to the source file on disk
71
- */
72
70
  addDiagnostic(srcPath, diagnostic) {
73
- var _a;
74
- diagnostic.file = (_a = this.program.getFile(srcPath)) !== null && _a !== void 0 ? _a : {
75
- srcPath: srcPath
76
- };
77
- this.staticDiagnostics.push(diagnostic);
71
+ if (!this.program) {
72
+ throw new Error('Cannot call `ProgramBuilder.addDiagnostic` before `ProgramBuilder.run()`');
73
+ }
74
+ if (!diagnostic.location) {
75
+ diagnostic.location = {
76
+ uri: util_1.util.pathToUri(srcPath),
77
+ range: util_1.util.createRange(0, 0, 0, 0)
78
+ };
79
+ }
80
+ else {
81
+ diagnostic.location.uri = util_1.util.pathToUri(srcPath);
82
+ }
83
+ this.diagnostics.register(diagnostic, { tags: ['ProgramBuilder'] });
78
84
  }
79
85
  getDiagnostics() {
80
- var _a, _b;
81
- return [
82
- ...this.staticDiagnostics,
83
- ...((_b = (_a = this.program) === null || _a === void 0 ? void 0 : _a.getDiagnostics()) !== null && _b !== void 0 ? _b : [])
84
- ];
86
+ return this.diagnostics.getDiagnostics();
85
87
  }
86
- async run(options) {
87
- this.logger.logLevel = options.logLevel;
88
- if (this.isRunning) {
89
- throw new Error('Server is already running');
90
- }
91
- this.isRunning = true;
88
+ /**
89
+ * Load the project and all the files, but don't run the validation, transpile, or watch cycles
90
+ */
91
+ async load(options) {
92
+ var _a, _b;
92
93
  try {
93
94
  this.options = util_1.util.normalizeAndResolveConfig(options);
95
+ if (((_a = this.options) === null || _a === void 0 ? void 0 : _a.logLevel) !== undefined) {
96
+ this.logger.logLevel = (_b = this.options) === null || _b === void 0 ? void 0 : _b.logLevel;
97
+ }
98
+ if (this.options.noProject) {
99
+ this.logger.log(`'noProject' flag is set so bsconfig.json loading is disabled'`);
100
+ }
101
+ else if (this.options.project) {
102
+ this.logger.log(`Using config file: "${this.options.project}"`);
103
+ }
104
+ else {
105
+ this.logger.log(`No bsconfig.json file found, using default options`);
106
+ }
107
+ this.loadRequires();
94
108
  this.loadPlugins();
95
109
  }
96
110
  catch (e) {
97
- if ((e === null || e === void 0 ? void 0 : e.file) && e.message && e.code) {
111
+ //For now, just use a default options object so we have a functioning program
112
+ this.options = util_1.util.normalizeConfig({
113
+ showDiagnosticsInConsole: options === null || options === void 0 ? void 0 : options.showDiagnosticsInConsole
114
+ });
115
+ if ((e === null || e === void 0 ? void 0 : e.location) && e.message && e.code) {
98
116
  let err = e;
99
- this.staticDiagnostics.push(err);
117
+ this.diagnostics.register(err);
100
118
  }
101
119
  else {
102
120
  //if this is not a diagnostic, something else is wrong...
103
121
  throw e;
104
122
  }
105
123
  this.printDiagnostics();
106
- //we added diagnostics, so hopefully that draws attention to the underlying issues.
107
- //For now, just use a default options object so we have a functioning program
108
- this.options = util_1.util.normalizeConfig({});
109
124
  }
110
125
  this.logger.logLevel = this.options.logLevel;
111
- this.program = this.createProgram();
126
+ this.createProgram();
112
127
  //parse every file in the entire project
113
- await this.loadAllFilesAST();
128
+ await this.loadFiles();
129
+ }
130
+ async run(options) {
131
+ if (options === null || options === void 0 ? void 0 : options.logLevel) {
132
+ this.logger.logLevel = options.logLevel;
133
+ }
134
+ if (this.isRunning) {
135
+ throw new Error('Server is already running');
136
+ }
137
+ this.isRunning = true;
138
+ await this.load(options);
114
139
  if (this.options.watch) {
115
140
  this.logger.log('Starting compilation in watch mode...');
116
- await this.runOnce();
141
+ await this.runOnce({
142
+ validate: options === null || options === void 0 ? void 0 : options.validate,
143
+ noEmit: options === null || options === void 0 ? void 0 : options.noEmit
144
+ });
117
145
  this.enableWatchMode();
118
146
  }
119
147
  else {
120
- await this.runOnce();
148
+ await this.runOnce({
149
+ validate: options === null || options === void 0 ? void 0 : options.validate,
150
+ noEmit: options === null || options === void 0 ? void 0 : options.noEmit
151
+ });
121
152
  }
122
153
  }
123
154
  createProgram() {
124
- const program = new Program_1.Program(this.options, undefined, this.plugins);
125
- this.plugins.emit('afterProgramCreate', {
155
+ this.program = new Program_1.Program(this.options, this.logger, this.plugins, this.diagnostics);
156
+ this.plugins.emit('provideProgram', {
126
157
  builder: this,
127
- program: program
158
+ program: this.program
128
159
  });
129
- return program;
160
+ this.plugins.emit('afterProvideProgram', {
161
+ builder: this,
162
+ program: this.program
163
+ });
164
+ return this.program;
130
165
  }
131
166
  loadPlugins() {
132
- var _a, _b, _c;
167
+ var _a, _b, _c, _d;
133
168
  const cwd = (_a = this.options.cwd) !== null && _a !== void 0 ? _a : process.cwd();
134
- const plugins = util_1.util.loadPlugins(cwd, this.options.plugins, (pathOrModule, err) => this.logger.error(`Error when loading plugin '${pathOrModule}':`, err));
135
- this.logger.log(`Loading ${(_c = (_b = this.options.plugins) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0} plugins for cwd "${cwd}"`);
169
+ const plugins = util_1.util.loadPlugins(cwd, (_b = this.options.plugins) !== null && _b !== void 0 ? _b : [], (pathOrModule, err) => this.logger.error(`Error when loading plugin '${pathOrModule}':`, err));
170
+ this.logger.log(`Loading ${(_d = (_c = this.options.plugins) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : 0} plugins for cwd "${cwd}"`, this.options.plugins);
136
171
  for (let plugin of plugins) {
137
172
  this.plugins.add(plugin);
138
173
  }
139
- this.plugins.emit('beforeProgramCreate', {
174
+ this.plugins.emit('beforeProvideProgram', {
140
175
  builder: this
141
176
  });
142
177
  }
178
+ /**
179
+ * `require()` every options.require path
180
+ */
181
+ loadRequires() {
182
+ var _a;
183
+ for (const dep of (_a = this.options.require) !== null && _a !== void 0 ? _a : []) {
184
+ requireRelative(dep, this.options.cwd);
185
+ }
186
+ }
143
187
  clearConsole() {
144
188
  if (this.allowConsoleClearing) {
145
189
  util_1.util.clearConsole();
@@ -154,7 +198,7 @@ class ProgramBuilder {
154
198
  this.watchInterval = setInterval(() => { }, 1073741824);
155
199
  //clear the console
156
200
  this.clearConsole();
157
- let fileObjects = rokuDeploy.normalizeFilesArray(this.options.files ? this.options.files : []);
201
+ let fileObjects = roku_deploy_1.rokuDeploy.normalizeFilesArray(this.options.files ? this.options.files : []);
158
202
  //add each set of files to the file watcher
159
203
  for (let fileObject of fileObjects) {
160
204
  let src = typeof fileObject === 'string' ? fileObject : fileObject.src;
@@ -168,15 +212,18 @@ class ProgramBuilder {
168
212
  }, 50);
169
213
  //on any file watcher event
170
214
  this.watcher.on('all', async (event, thePath) => {
171
- thePath = util_1.standardizePath `${path.resolve(this.rootDir, thePath)}`;
215
+ if (!this.program) {
216
+ throw new Error('Internal invariant exception: somehow file watcher ran before `ProgramBuilder.run()`');
217
+ }
218
+ thePath = (0, util_1.standardizePath) `${path.resolve(this.rootDir, thePath)}`;
172
219
  if (event === 'add' || event === 'change') {
173
220
  const fileObj = {
174
221
  src: thePath,
175
- dest: rokuDeploy.getDestPath(thePath, this.program.options.files,
222
+ dest: roku_deploy_1.rokuDeploy.getDestPath(thePath, this.program.options.files,
176
223
  //some shells will toTowerCase the drive letter, so do it to rootDir for consistency
177
224
  util_1.util.driveLetterToLower(this.rootDir))
178
225
  };
179
- this.program.setFile(fileObj, await this.getFileContents(fileObj.src, false));
226
+ this.program.setFile(fileObj, await this.getFileContents(fileObj.src));
180
227
  }
181
228
  else if (event === 'unlink') {
182
229
  this.program.removeFile(thePath);
@@ -189,19 +236,26 @@ class ProgramBuilder {
189
236
  * The rootDir for this program.
190
237
  */
191
238
  get rootDir() {
239
+ if (!this.program) {
240
+ throw new Error('Cannot access `ProgramBuilder.rootDir` until after `ProgramBuilder.run()`');
241
+ }
192
242
  return this.program.options.rootDir;
193
243
  }
194
244
  /**
195
245
  * Run the entire process exactly one time.
196
246
  */
197
- runOnce() {
247
+ runOnce(options) {
198
248
  //clear the console
199
249
  this.clearConsole();
200
250
  let cancellationToken = { isCanceled: false };
201
251
  //wait for the previous run to complete
202
252
  let runPromise = this.cancelLastRun().then(() => {
203
253
  //start the new run
204
- return this._runOnce(cancellationToken);
254
+ return this._runOnce({
255
+ cancellationToken: cancellationToken,
256
+ validate: options === null || options === void 0 ? void 0 : options.validate,
257
+ noEmit: options === null || options === void 0 ? void 0 : options.noEmit
258
+ });
205
259
  });
206
260
  //a function used to cancel this run
207
261
  this.cancelLastRun = () => {
@@ -211,8 +265,8 @@ class ProgramBuilder {
211
265
  return runPromise;
212
266
  }
213
267
  printDiagnostics(diagnostics) {
214
- var _a, _b;
215
- if (this.options.showDiagnosticsInConsole === false) {
268
+ var _a, _b, _c, _d, _e, _f, _g, _h;
269
+ if (((_a = this.options) === null || _a === void 0 ? void 0 : _a.showDiagnosticsInConsole) === false) {
216
270
  return;
217
271
  }
218
272
  if (!diagnostics) {
@@ -221,54 +275,70 @@ class ProgramBuilder {
221
275
  //group the diagnostics by file
222
276
  let diagnosticsByFile = {};
223
277
  for (let diagnostic of diagnostics) {
224
- if (!diagnosticsByFile[diagnostic.file.srcPath]) {
225
- diagnosticsByFile[diagnostic.file.srcPath] = [];
278
+ const diagnosticFileKey = (_c = (_b = diagnostic.location) === null || _b === void 0 ? void 0 : _b.uri) !== null && _c !== void 0 ? _c : 'no-uri';
279
+ if (!diagnosticsByFile[diagnosticFileKey]) {
280
+ diagnosticsByFile[diagnosticFileKey] = [];
226
281
  }
227
- diagnosticsByFile[diagnostic.file.srcPath].push(diagnostic);
282
+ diagnosticsByFile[diagnosticFileKey].push(diagnostic);
228
283
  }
229
284
  //get printing options
230
285
  const options = diagnosticUtils.getPrintDiagnosticOptions(this.options);
231
286
  const { cwd, emitFullPaths } = options;
232
- let srcPaths = Object.keys(diagnosticsByFile).sort();
233
- for (let srcPath of srcPaths) {
234
- let diagnosticsForFile = diagnosticsByFile[srcPath];
287
+ let fileUris = Object.keys(diagnosticsByFile).sort();
288
+ for (let fileUri of fileUris) {
289
+ let diagnosticsForFile = diagnosticsByFile[fileUri];
235
290
  //sort the diagnostics in line and column order
236
291
  let sortedDiagnostics = diagnosticsForFile.sort((a, b) => {
237
- return (a.range.start.line - b.range.start.line ||
238
- a.range.start.character - b.range.start.character);
292
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
293
+ return (((_c = (_b = (_a = a.location) === null || _a === void 0 ? void 0 : _a.range) === null || _b === void 0 ? void 0 : _b.start.line) !== null && _c !== void 0 ? _c : -1) - ((_f = (_e = (_d = b.location) === null || _d === void 0 ? void 0 : _d.range) === null || _e === void 0 ? void 0 : _e.start.line) !== null && _f !== void 0 ? _f : -1) ||
294
+ ((_j = (_h = (_g = a.location) === null || _g === void 0 ? void 0 : _g.range) === null || _h === void 0 ? void 0 : _h.start.character) !== null && _j !== void 0 ? _j : -1) - ((_m = (_l = (_k = b.location) === null || _k === void 0 ? void 0 : _k.range) === null || _l === void 0 ? void 0 : _l.start.character) !== null && _m !== void 0 ? _m : -1));
239
295
  });
240
- let filePath = srcPath;
296
+ let filePath = util_1.util.uriToPath(fileUri);
241
297
  if (!emitFullPaths) {
242
298
  filePath = path.relative(cwd, filePath);
243
299
  }
244
300
  //load the file text
245
- const file = this.program.getFile(srcPath);
301
+ const file = (_d = this.program) === null || _d === void 0 ? void 0 : _d.getFile(fileUri);
246
302
  //get the file's in-memory contents if available
247
- const lines = (_b = (_a = file === null || file === void 0 ? void 0 : file.fileContents) === null || _a === void 0 ? void 0 : _a.split(/\r?\n/g)) !== null && _b !== void 0 ? _b : [];
303
+ const lines = (_f = (_e = file === null || file === void 0 ? void 0 : file.fileContents) === null || _e === void 0 ? void 0 : _e.split(/\r?\n/g)) !== null && _f !== void 0 ? _f : [];
248
304
  for (let diagnostic of sortedDiagnostics) {
249
305
  //default the severity to error if undefined
250
306
  let severity = typeof diagnostic.severity === 'number' ? diagnostic.severity : vscode_languageserver_1.DiagnosticSeverity.Error;
307
+ let relatedInformation = ((_h = (_g = util_1.util.toDiagnostic(diagnostic, diagnostic.source)) === null || _g === void 0 ? void 0 : _g.relatedInformation) !== null && _h !== void 0 ? _h : []).map(x => {
308
+ var _a;
309
+ let relatedInfoFilePath = util_1.util.uriToPath((_a = x.location) === null || _a === void 0 ? void 0 : _a.uri);
310
+ if (!emitFullPaths) {
311
+ relatedInfoFilePath = path.relative(cwd, relatedInfoFilePath);
312
+ }
313
+ return {
314
+ filePath: relatedInfoFilePath,
315
+ range: x.location.range,
316
+ message: x.message
317
+ };
318
+ });
251
319
  //format output
252
- diagnosticUtils.printDiagnostic(options, severity, filePath, lines, diagnostic);
320
+ diagnosticUtils.printDiagnostic(options, severity, filePath, lines, diagnostic, relatedInformation);
253
321
  }
254
322
  }
255
323
  }
256
324
  /**
257
- * Run the process once, allowing cancelability.
325
+ * Run the process once, allowing it to be cancelled.
258
326
  * NOTE: This should only be called by `runOnce`.
259
- * @param cancellationToken
260
327
  */
261
- async _runOnce(cancellationToken) {
328
+ async _runOnce(options) {
329
+ var _a, _b, _c;
262
330
  let wereDiagnosticsPrinted = false;
263
331
  try {
264
332
  //maybe cancel?
265
- if (cancellationToken.isCanceled === true) {
333
+ if (((_a = options === null || options === void 0 ? void 0 : options.cancellationToken) === null || _a === void 0 ? void 0 : _a.isCanceled) === true) {
266
334
  return -1;
267
335
  }
268
- //validate program
269
- this.validateProject();
336
+ //validate program. false means no, everything else (including missing) means true
337
+ if ((options === null || options === void 0 ? void 0 : options.validate) !== false) {
338
+ this.validateProject();
339
+ }
270
340
  //maybe cancel?
271
- if (cancellationToken.isCanceled === true) {
341
+ if (((_b = options === null || options === void 0 ? void 0 : options.cancellationToken) === null || _b === void 0 ? void 0 : _b.isCanceled) === true) {
272
342
  return -1;
273
343
  }
274
344
  const diagnostics = this.getDiagnostics();
@@ -279,14 +349,13 @@ class ProgramBuilder {
279
349
  this.logger.log(`Found ${errorCount} ${errorCount === 1 ? 'error' : 'errors'}`);
280
350
  return errorCount;
281
351
  }
282
- //create the deployment package (and transpile as well)
283
- await this.createPackageIfEnabled();
352
+ if (options.noEmit !== true) {
353
+ await this.transpile();
354
+ }
284
355
  //maybe cancel?
285
- if (cancellationToken.isCanceled === true) {
356
+ if (((_c = options === null || options === void 0 ? void 0 : options.cancellationToken) === null || _c === void 0 ? void 0 : _c.isCanceled) === true) {
286
357
  return -1;
287
358
  }
288
- //deploy the package
289
- await this.deployPackageIfEnabled();
290
359
  return 0;
291
360
  }
292
361
  catch (e) {
@@ -296,120 +365,97 @@ class ProgramBuilder {
296
365
  throw e;
297
366
  }
298
367
  }
299
- async createPackageIfEnabled() {
300
- if (this.options.copyToStaging || this.options.createPackage || this.options.deploy) {
301
- //transpile the project
302
- await this.transpile();
303
- //create the zip file if configured to do so
304
- if (this.options.createPackage !== false || this.options.deploy) {
305
- await this.logger.time(Logger_1.LogLevel.log, [`Creating package at ${this.options.outFile}`], async () => {
306
- await rokuDeploy.zipPackage(Object.assign(Object.assign({}, this.options), { outDir: util_1.util.getOutDir(this.options), outFile: path.basename(this.options.outFile) }));
307
- });
368
+ /**
369
+ * Build the entire project and place the contents into the staging directory
370
+ */
371
+ async build() {
372
+ await this.buildThrottler.run(async () => {
373
+ //get every file referenced by the files array
374
+ let fileMap = Object.values(this.program.files).map(x => {
375
+ return {
376
+ src: x.srcPath,
377
+ dest: x.destPath
378
+ };
379
+ });
380
+ //remove files currently loaded in the program, we will transpile those instead (even if just for source maps)
381
+ let filteredFileMap = [];
382
+ for (let fileEntry of fileMap) {
383
+ if (this.program.hasFile(fileEntry.src) === false) {
384
+ filteredFileMap.push(fileEntry);
385
+ }
308
386
  }
309
- }
387
+ await this.logger.time(logging_1.LogLevel.log, ['Building'], async () => {
388
+ //transpile any brighterscript files
389
+ await this.program.build();
390
+ });
391
+ });
310
392
  }
311
393
  /**
312
394
  * Transpiles the entire program into the staging folder
395
+ * @deprecated use `.build()` instead
313
396
  */
314
397
  async transpile() {
315
- let options = util_1.util.cwdWork(this.options.cwd, () => {
316
- return rokuDeploy.getOptions(Object.assign(Object.assign({}, this.options), { outDir: util_1.util.getOutDir(this.options), outFile: path.basename(this.options.outFile) }));
317
- });
318
- //get every file referenced by the files array
319
- let fileEntries = await rokuDeploy.getFilePaths(options.files, options.rootDir);
320
- //remove files currently loaded in the program, we will transpile those instead (even if just for source maps)
321
- let filteredFileEntries = [];
322
- for (let fileEntry of fileEntries) {
323
- if (this.program.hasFile(fileEntry.src) === false) {
324
- filteredFileEntries.push(fileEntry);
325
- }
326
- }
327
- this.plugins.emit('beforePrepublish', {
328
- builder: this,
329
- program: this.program,
330
- files: filteredFileEntries
331
- });
332
- await this.logger.time(Logger_1.LogLevel.log, ['Copying to staging directory'], async () => {
333
- //prepublish all non-program-loaded files to staging
334
- await rokuDeploy.prepublishToStaging(Object.assign(Object.assign({}, options), { files: filteredFileEntries }));
335
- });
336
- this.plugins.emit('afterPrepublish', {
337
- builder: this,
338
- program: this.program,
339
- files: filteredFileEntries
340
- });
341
- this.plugins.emit('beforePublish', {
342
- builder: this,
343
- program: this.program,
344
- files: fileEntries
345
- });
346
- await this.logger.time(Logger_1.LogLevel.log, ['Transpiling'], async () => {
347
- //transpile any brighterscript files
348
- await this.program.transpile(fileEntries, options.stagingFolderPath);
349
- });
350
- this.plugins.emit('afterPublish', {
351
- builder: this,
352
- program: this.program,
353
- files: fileEntries
354
- });
355
- }
356
- async deployPackageIfEnabled() {
357
- //deploy the project if configured to do so
358
- if (this.options.deploy) {
359
- await this.logger.time(Logger_1.LogLevel.log, ['Deploying package to', this.options.host], async () => {
360
- await rokuDeploy.publish(Object.assign(Object.assign({}, this.options), { outDir: util_1.util.getOutDir(this.options), outFile: path.basename(this.options.outFile) }));
361
- });
362
- }
398
+ return this.build();
363
399
  }
364
400
  /**
365
- * Parse and load the AST for every file in the project
401
+ * Load every file into the project
366
402
  */
367
- async loadAllFilesAST() {
368
- await this.logger.time(Logger_1.LogLevel.log, ['Parsing files'], async () => {
369
- let errorCount = 0;
370
- let files = await this.logger.time(Logger_1.LogLevel.debug, ['getFlePaths'], async () => {
403
+ async loadFiles() {
404
+ await this.logger.time(logging_1.LogLevel.log, ['load files'], async () => {
405
+ let files = await this.logger.time(logging_1.LogLevel.debug, ['getFilePaths'], async () => {
371
406
  return util_1.util.getFilePaths(this.options);
372
407
  });
373
- this.logger.trace('ProgramBuilder.loadAllFilesAST() files:', files);
408
+ this.logger.trace('ProgramBuilder.loadFiles() files:', files);
374
409
  const typedefFiles = [];
375
- const nonTypedefFiles = [];
410
+ const allOtherFiles = [];
411
+ let manifestFile = null;
376
412
  for (const file of files) {
377
- const srcLower = file.src.toLowerCase();
378
- if (srcLower.endsWith('.d.bs')) {
413
+ // typedef files
414
+ if (/\.d\.bs$/i.test(file.dest)) {
379
415
  typedefFiles.push(file);
416
+ // all other files
380
417
  }
381
418
  else {
382
- nonTypedefFiles.push(file);
419
+ if (/^manifest$/i.test(file.dest)) {
420
+ //manifest file
421
+ manifestFile = file;
422
+ }
423
+ allOtherFiles.push(file);
383
424
  }
384
425
  }
385
- //preload every type definition file first, which eliminates duplicate file loading
386
- await Promise.all(typedefFiles.map(async (fileObj) => {
426
+ //load the manifest file first
427
+ if (manifestFile) {
428
+ this.program.loadManifest(manifestFile, false);
429
+ }
430
+ const loadFile = async (fileObj) => {
387
431
  try {
388
432
  this.program.setFile(fileObj, await this.getFileContents(fileObj.src));
389
433
  }
390
434
  catch (e) {
391
- //log the error, but don't fail this process because the file might be fixable later
392
- this.logger.log(e);
393
- }
394
- }));
395
- const acceptableExtensions = ['.bs', '.brs', '.xml'];
396
- //parse every file other than the type definitions
397
- await Promise.all(nonTypedefFiles.map(async (fileObj) => {
398
- try {
399
- let fileExtension = path.extname(fileObj.src).toLowerCase();
400
- //only process certain file types
401
- if (acceptableExtensions.includes(fileExtension)) {
402
- this.program.setFile(fileObj, await this.getFileContents(fileObj.src));
403
- }
404
- }
405
- catch (e) {
406
- //log the error, but don't fail this process because the file might be fixable later
407
- this.logger.log(e);
435
+ this.logger.log(e); // log the error, but don't fail this process because the file might be fixable later
408
436
  }
409
- }));
410
- return errorCount;
437
+ };
438
+ // preload every type definition file, which eliminates duplicate file loading
439
+ await Promise.all(typedefFiles.map(loadFile));
440
+ // load all other files
441
+ await Promise.all(allOtherFiles.map(loadFile));
411
442
  });
412
443
  }
444
+ /**
445
+ * Remove all files from the program that are in the specified folder path
446
+ * @param srcPath the path to the folder to remove
447
+ */
448
+ removeFilesInFolder(srcPath) {
449
+ let removedSomeFiles = false;
450
+ for (let filePath in this.program.files) {
451
+ //if the file path starts with the parent path and the file path does not exactly match the folder path
452
+ if (filePath.startsWith(srcPath) && filePath !== srcPath) {
453
+ this.program.removeFile(filePath);
454
+ removedSomeFiles = true;
455
+ }
456
+ }
457
+ return removedSomeFiles;
458
+ }
413
459
  /**
414
460
  * Scan every file and resolve all variable references.
415
461
  * If no errors were encountered, return true. Otherwise return false.