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
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const chai_1 = require("chai");
3
+ const chai_config_spec_1 = require("../chai-config.spec");
4
+ const path = require("path");
4
5
  const sinonImport = require("sinon");
5
6
  const vscode_languageserver_1 = require("vscode-languageserver");
6
7
  const fsExtra = require("fs-extra");
@@ -9,21 +10,25 @@ const Program_1 = require("../Program");
9
10
  const XmlFile_1 = require("./XmlFile");
10
11
  const util_1 = require("../util");
11
12
  const testHelpers_spec_1 = require("../testHelpers.spec");
13
+ const ProgramBuilder_1 = require("../ProgramBuilder");
14
+ const logging_1 = require("../logging");
15
+ const reflection_1 = require("../astUtils/reflection");
16
+ const testHelpers_spec_2 = require("../testHelpers.spec");
12
17
  describe('XmlFile', () => {
13
- const tempDir = util_1.standardizePath `${process.cwd()}/.tmp`;
14
- const rootDir = util_1.standardizePath `${tempDir}/rootDir`;
15
- const stagingDir = util_1.standardizePath `${tempDir}/stagingDir`;
16
18
  let program;
17
19
  let sinon = sinonImport.createSandbox();
18
20
  let file;
19
- let testTranspile = testHelpers_spec_1.getTestTranspile(() => [program, rootDir]);
21
+ let testTranspile = (0, testHelpers_spec_1.getTestTranspile)(() => [program, testHelpers_spec_2.rootDir]);
20
22
  beforeEach(() => {
21
- fsExtra.ensureDirSync(tempDir);
22
- fsExtra.emptyDirSync(tempDir);
23
- fsExtra.ensureDirSync(rootDir);
24
- fsExtra.ensureDirSync(stagingDir);
25
- program = new Program_1.Program({ rootDir: rootDir });
26
- file = new XmlFile_1.XmlFile(`${rootDir}/components/MainComponent.xml`, 'components/MainComponent.xml', program);
23
+ fsExtra.emptyDirSync(testHelpers_spec_2.tempDir);
24
+ fsExtra.ensureDirSync(testHelpers_spec_2.rootDir);
25
+ fsExtra.ensureDirSync(testHelpers_spec_2.outDir);
26
+ program = new Program_1.Program({ rootDir: testHelpers_spec_2.rootDir, outDir: testHelpers_spec_2.outDir });
27
+ file = new XmlFile_1.XmlFile({
28
+ srcPath: `${testHelpers_spec_2.rootDir}/components/MainComponent.xml`,
29
+ destPath: 'components/MainComponent.xml',
30
+ program: program
31
+ });
27
32
  });
28
33
  afterEach(() => {
29
34
  sinon.restore();
@@ -34,34 +39,37 @@ describe('XmlFile', () => {
34
39
  const expected = 'OtherName';
35
40
  program.plugins.add({
36
41
  name: 'allows modifying the parsed XML model',
37
- afterFileParse: (event) => {
38
- event.file.parser.ast.root.attributes[0].tokens.value.text = expected;
42
+ afterProvideFile: (event) => {
43
+ var _a, _b, _c;
44
+ const file = event.files[0];
45
+ if ((0, reflection_1.isXmlFile)(file) && ((_c = (_b = (_a = file.parser.ast.rootElement) === null || _a === void 0 ? void 0 : _a.attributes) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.value)) {
46
+ file.parser.ast.rootElement.attributes[0].value = expected;
47
+ }
39
48
  }
40
49
  });
41
- file = program.setFile('components/ChildScene.xml', testHelpers_spec_1.trim `
50
+ file = program.setFile('components/ChildScene.xml', (0, testHelpers_spec_1.trim) `
42
51
  <?xml version="1.0" encoding="utf-8" ?>
43
52
  <component name="ChildScene" extends="Scene">
44
- <script type="text/brightscript" uri="ChildScene1.brs" /> <script type="text/brightscript" uri="ChildScene2.brs" /> <script type="text/brightscript" uri="ChildScene3.brs" />
45
53
  </component>
46
54
  `);
47
- chai_1.expect(file.componentName.text).to.equal(expected);
55
+ (0, chai_config_spec_1.expect)(file.componentName.text).to.equal(expected);
48
56
  });
49
57
  it('only removes specified attribute when calling setAttribute', () => {
50
- file = new XmlFile_1.XmlFile('abs', 'rel', program);
58
+ const file = new XmlFile_1.XmlFile({ srcPath: 'abs', destPath: 'rel', program: program });
51
59
  program.plugins.add({
52
60
  name: 'allows modifying the parsed XML model',
53
- afterFileParse: () => {
54
- let child = file.parser.ast.component.children.childNodes[0];
55
- chai_1.expect(child.attributes).to.have.lengthOf(4);
61
+ afterProvideFile: () => {
62
+ let child = file.parser.ast.componentElement.childrenElement.elements[0];
63
+ (0, chai_config_spec_1.expect)(child.attributes).to.have.lengthOf(4);
56
64
  child.setAttributeValue('text', undefined);
57
- chai_1.expect(child.id).to.equal('one');
58
- chai_1.expect(child.attributes).to.have.lengthOf(3);
65
+ (0, chai_config_spec_1.expect)(child.getAttribute('id').value).to.equal('one');
66
+ (0, chai_config_spec_1.expect)(child.attributes).to.have.lengthOf(3);
59
67
  child.setAttributeValue('text3', undefined);
60
- chai_1.expect(child.id).to.equal('one');
61
- chai_1.expect(child.attributes).to.have.lengthOf(2);
68
+ (0, chai_config_spec_1.expect)(child.getAttribute('id').value).to.equal('one');
69
+ (0, chai_config_spec_1.expect)(child.attributes).to.have.lengthOf(2);
62
70
  }
63
71
  });
64
- file.parse(testHelpers_spec_1.trim `
72
+ file.parse((0, testHelpers_spec_1.trim) `
65
73
  <?xml version="1.0" encoding="utf-8" ?>
66
74
  <component name="ChildScene" extends="Scene">
67
75
  <script type="text/brightscript" uri="ChildScene1.brs" /> <script type="text/brightscript" uri="ChildScene2.brs" /> <script type="text/brightscript" uri="ChildScene3.brs" />
@@ -76,17 +84,17 @@ describe('XmlFile', () => {
76
84
  `);
77
85
  });
78
86
  it('supports importing BrighterScript files', () => {
79
- file = program.setFile({ src: `${rootDir}/components/custom.xml`, dest: 'components/custom.xml' }, testHelpers_spec_1.trim `
87
+ file = program.setFile('components/custom.xml', (0, testHelpers_spec_1.trim) `
80
88
  <?xml version="1.0" encoding="utf-8" ?>
81
89
  <component name="ChildScene" extends="Scene">
82
90
  <script type="text/brightscript" uri="ChildScene.bs" />
83
91
  </component>
84
92
  `);
85
- chai_1.expect(file.scriptTagImports.map(x => x.pkgPath)[0]).to.equal('pkg:/components/ChildScene.bs');
93
+ (0, chai_config_spec_1.expect)(file.scriptTagImports.map(x => x.destPath)[0]).to.equal((0, util_1.standardizePath) `components/ChildScene.bs`);
86
94
  });
87
95
  it('does not include commented-out script imports', () => {
88
96
  var _a, _b;
89
- file = program.setFile({ src: `${rootDir}/components/custom.xml`, dest: 'components/custom.xml' }, testHelpers_spec_1.trim `
97
+ file = program.setFile('components/custom.xml', (0, testHelpers_spec_1.trim) `
90
98
  <?xml version="1.0" encoding="utf-8" ?>
91
99
  <component name="ChildScene" extends="Scene">
92
100
  <script type="text/brightscript" uri="ChildScene.brs" />
@@ -95,58 +103,56 @@ describe('XmlFile', () => {
95
103
  -->
96
104
  </component>
97
105
  `);
98
- chai_1.expect((_b = (_a = file.scriptTagImports) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.pkgPath).to.eql('pkg:/components/ChildScene.brs');
106
+ (0, chai_config_spec_1.expect)((_b = (_a = file.scriptTagImports) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.destPath).to.eql((0, util_1.standardizePath) `components/ChildScene.brs`);
99
107
  });
100
108
  it('finds scripts when more than one per line', () => {
101
- file = new XmlFile_1.XmlFile('abs', 'rel', program);
102
- file.parse(testHelpers_spec_1.trim `
109
+ file = new XmlFile_1.XmlFile({ srcPath: 'abs', destPath: 'rel', program: program });
110
+ file.parse((0, testHelpers_spec_1.trim) `
103
111
  <?xml version="1.0" encoding="utf-8" ?>
104
112
  <component name="ChildScene" extends="Scene">
105
113
  <script type="text/brightscript" uri="ChildScene1.brs" /> <script type="text/brightscript" uri="ChildScene2.brs" /> <script type="text/brightscript" uri="ChildScene3.brs" />
106
114
  </component>
107
115
  `);
108
- chai_1.expect(file.scriptTagImports).to.be.lengthOf(3);
109
- chai_1.expect(file.scriptTagImports[0]).to.deep.include({
116
+ (0, chai_config_spec_1.expect)(file.scriptTagImports).to.be.lengthOf(3);
117
+ (0, chai_config_spec_1.expect)(file.scriptTagImports[0]).to.deep.include({
110
118
  text: 'ChildScene1.brs',
111
119
  filePathRange: vscode_languageserver_1.Range.create(2, 42, 2, 57)
112
120
  });
113
- chai_1.expect(file.scriptTagImports[1]).to.deep.include({
121
+ (0, chai_config_spec_1.expect)(file.scriptTagImports[1]).to.deep.include({
114
122
  text: 'ChildScene2.brs',
115
123
  filePathRange: vscode_languageserver_1.Range.create(2, 100, 2, 115)
116
124
  });
117
- chai_1.expect(file.scriptTagImports[2]).to.deep.include({
125
+ (0, chai_config_spec_1.expect)(file.scriptTagImports[2]).to.deep.include({
118
126
  text: 'ChildScene3.brs',
119
127
  filePathRange: vscode_languageserver_1.Range.create(2, 158, 2, 173)
120
128
  });
121
129
  });
122
130
  it('finds component names', () => {
123
- file = new XmlFile_1.XmlFile('abs', 'rel', program);
124
- file.parse(testHelpers_spec_1.trim `
131
+ file = new XmlFile_1.XmlFile({ srcPath: 'abs', destPath: 'rel', program: program });
132
+ file.parse((0, testHelpers_spec_1.trim) `
125
133
  <?xml version="1.0" encoding="utf-8" ?>
126
134
  <component name="ChildScene" extends="ParentScene">
127
135
  <script type="text/brightscript" uri="ChildScene.brs" />
128
136
  </component>
129
137
  `);
130
- chai_1.expect(file.parentComponentName.text).to.equal('ParentScene');
131
- chai_1.expect(file.componentName.text).to.equal('ChildScene');
138
+ (0, chai_config_spec_1.expect)(file.parentComponentName.text).to.equal('ParentScene');
139
+ (0, chai_config_spec_1.expect)(file.componentName.text).to.equal('ChildScene');
132
140
  });
133
141
  it('Adds error when whitespace appears before the prolog', () => {
134
- file = new XmlFile_1.XmlFile('abs', 'rel', program);
142
+ file = new XmlFile_1.XmlFile({ srcPath: 'abs', destPath: 'rel', program: program });
135
143
  file.parse(/* not trimmed */ `
136
144
  <?xml version="1.0" encoding="utf-8" ?>
137
145
  <component name="ChildScene" extends="ParentScene">
138
146
  <script type="text/brightscript" uri="ChildScene.brs" />
139
147
  </component>`);
140
- chai_1.expect(file.diagnostics).to.be.lengthOf(2);
141
- chai_1.expect(file.diagnostics[0]).to.deep.include({
142
- code: DiagnosticMessages_1.DiagnosticMessages.xmlGenericParseError('').code,
143
- range: vscode_languageserver_1.Range.create(1, 16, 1, 22)
144
- });
145
- chai_1.expect(file.diagnostics[1]).to.deep.include(Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.xmlGenericParseError('Syntax error: whitespace found before the XML prolog')), { range: vscode_languageserver_1.Range.create(0, 0, 1, 16) }));
148
+ (0, testHelpers_spec_1.expectDiagnostics)(program, [{
149
+ code: DiagnosticMessages_1.DiagnosticMessages.syntaxError('').code,
150
+ location: { range: vscode_languageserver_1.Range.create(1, 16, 1, 22) }
151
+ }, Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.syntaxError('Syntax error: whitespace found before the XML prolog')), { location: { range: vscode_languageserver_1.Range.create(0, 0, 1, 16) } })]);
146
152
  });
147
153
  it('Adds error when an unknown tag is found in xml', () => {
148
- file = new XmlFile_1.XmlFile('abs', 'rel', program);
149
- file.parse(testHelpers_spec_1.trim `
154
+ file = new XmlFile_1.XmlFile({ srcPath: 'abs', destPath: 'rel', program: program });
155
+ file.parse((0, testHelpers_spec_1.trim) `
150
156
  <?xml version="1.0" encoding="utf-8" ?>
151
157
  <component name="ChildScene" extends="ParentScene">
152
158
  <interface>
@@ -155,223 +161,174 @@ describe('XmlFile', () => {
155
161
  <unexpectedToo />
156
162
  </component>
157
163
  `);
158
- chai_1.expect(file.diagnostics).to.be.lengthOf(2);
159
- chai_1.expect(file.diagnostics[0]).to.deep.include(Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.xmlUnexpectedTag('unexpected')), { range: vscode_languageserver_1.Range.create(3, 9, 3, 19) }));
160
- chai_1.expect(file.diagnostics[1]).to.deep.include(Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.xmlUnexpectedTag('unexpectedToo')), { range: vscode_languageserver_1.Range.create(5, 5, 5, 18) }));
164
+ (0, testHelpers_spec_1.expectDiagnostics)(program, [Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.xmlUnexpectedTag('unexpected')), { location: { range: vscode_languageserver_1.Range.create(3, 9, 3, 19) } }), Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.xmlUnexpectedTag('unexpectedToo')), { location: { range: vscode_languageserver_1.Range.create(5, 5, 5, 18) } })]);
161
165
  });
162
166
  it('Adds error when no component is declared in xml', () => {
163
- file = program.setFile('components/file.xml', '<script type="text/brightscript" uri="ChildScene.brs" />');
167
+ program.setFile('components/comp.xml', '<script type="text/brightscript" uri="ChildScene.brs" />');
164
168
  program.validate();
165
- chai_1.expect(file.diagnostics).to.be.lengthOf(2);
166
- chai_1.expect(file.diagnostics[0]).to.deep.include(Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.xmlUnexpectedTag('script')), { range: vscode_languageserver_1.Range.create(0, 1, 0, 7) }));
167
- chai_1.expect(file.diagnostics[1]).to.deep.include(DiagnosticMessages_1.DiagnosticMessages.xmlComponentMissingComponentDeclaration());
169
+ (0, testHelpers_spec_1.expectDiagnostics)(program, [
170
+ Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.xmlUnexpectedTag('script')), { location: { range: vscode_languageserver_1.Range.create(0, 1, 0, 7) } }),
171
+ DiagnosticMessages_1.DiagnosticMessages.xmlComponentMissingComponentDeclaration()
172
+ ]);
168
173
  });
169
174
  it('adds error when component does not declare a name', () => {
170
- file = program.setFile('components/ParentScene.xml', testHelpers_spec_1.trim `
175
+ file = program.setFile('components/comp.xml', (0, testHelpers_spec_1.trim) `
171
176
  <?xml version="1.0" encoding="utf-8" ?>
172
177
  <component extends="ParentScene">
173
178
  <script type="text/brightscript" uri="ChildScene.brs" />
174
179
  </component>
175
180
  `);
176
181
  program.validate();
177
- chai_1.expect(file.diagnostics).to.be.lengthOf(1);
178
- chai_1.expect(file.diagnostics[0]).to.deep.include({
179
- message: DiagnosticMessages_1.DiagnosticMessages.xmlComponentMissingNameAttribute().message,
180
- range: vscode_languageserver_1.Range.create(1, 1, 1, 10)
181
- });
182
+ (0, testHelpers_spec_1.expectDiagnosticsIncludes)(program, [{
183
+ message: DiagnosticMessages_1.DiagnosticMessages.xmlComponentMissingNameAttribute().message,
184
+ location: { range: vscode_languageserver_1.Range.create(1, 1, 1, 10) }
185
+ }]);
182
186
  });
183
187
  it('catches xml parse errors', () => {
184
- file = program.setFile('components/ParentScene.xml', testHelpers_spec_1.trim `
188
+ file = program.setFile('components/comp.xml', (0, testHelpers_spec_1.trim) `
185
189
  <?xml version="1.0" encoding="utf-8" ?>
186
190
  <component 1extends="ParentScene">
187
191
  </component>
188
192
  `);
189
193
  program.validate();
190
- chai_1.expect(file.diagnostics).to.be.lengthOf(2);
191
- chai_1.expect(file.diagnostics[0].code).to.equal(DiagnosticMessages_1.DiagnosticMessages.xmlGenericParseError('').code); //unexpected character '1'
192
- chai_1.expect(file.diagnostics[1]).to.deep.include({
194
+ const diagnostics = program.getDiagnostics();
195
+ (0, chai_config_spec_1.expect)(diagnostics).to.be.lengthOf(2);
196
+ (0, chai_config_spec_1.expect)(diagnostics[0].code).to.equal(DiagnosticMessages_1.DiagnosticMessages.syntaxError('').code); //unexpected character '1'
197
+ (0, chai_config_spec_1.expect)(diagnostics[1]).to.deep.include({
193
198
  code: DiagnosticMessages_1.DiagnosticMessages.xmlComponentMissingNameAttribute().code,
194
- range: vscode_languageserver_1.Range.create(1, 1, 1, 10)
199
+ location: util_1.default.createLocationFromFileRange(file, vscode_languageserver_1.Range.create(1, 1, 1, 10))
195
200
  });
196
201
  });
197
202
  it('finds script imports', () => {
198
- file = new XmlFile_1.XmlFile('abspath/components/cmp1.xml', 'components/cmp1.xml', program);
199
- file.parse(testHelpers_spec_1.trim `
203
+ file = new XmlFile_1.XmlFile({ srcPath: 'abspath/components/cmp1.xml', destPath: 'components/cmp1.xml', program: program });
204
+ file.parse((0, testHelpers_spec_1.trim) `
200
205
  <?xml version="1.0" encoding="utf-8" ?>
201
206
  <component name="Cmp1" extends="Scene">
202
207
  <script type="text/brightscript" uri="pkg:/components/cmp1.brs" />
203
208
  </component>
204
209
  `);
205
- chai_1.expect(file.scriptTagImports.length).to.equal(1);
206
- chai_1.expect(file.scriptTagImports[0]).to.deep.include({
210
+ (0, chai_config_spec_1.expect)(file.scriptTagImports.length).to.equal(1);
211
+ (0, chai_config_spec_1.expect)(file.scriptTagImports[0]).to.deep.include({
207
212
  sourceFile: file,
208
213
  text: 'pkg:/components/cmp1.brs',
209
- pkgPath: `pkg:/components/cmp1.brs`,
214
+ destPath: `components${path.sep}cmp1.brs`,
210
215
  filePathRange: vscode_languageserver_1.Range.create(2, 42, 2, 66)
211
216
  });
212
217
  });
213
218
  it('throws an error if the file has already been parsed', () => {
214
- file = new XmlFile_1.XmlFile('abspath', 'relpath', program);
219
+ file = new XmlFile_1.XmlFile({ srcPath: 'abspath', destPath: 'relpath', program: program });
215
220
  file.parse('a comment');
216
221
  try {
217
222
  file.parse(`'a new comment`);
218
- chai_1.assert.fail(null, null, 'Should have thrown an exception, but did not');
223
+ chai_config_spec_1.assert.fail(null, null, 'Should have thrown an exception, but did not');
219
224
  }
220
225
  catch (e) {
221
226
  //test passes
222
227
  }
223
228
  });
224
229
  it('resolves relative paths', () => {
225
- file = program.setFile({
226
- src: `${rootDir}/components/comp1.xml`,
227
- dest: 'components/comp1.xml'
228
- }, testHelpers_spec_1.trim `
230
+ file = program.setFile('components/comp1.xml', (0, testHelpers_spec_1.trim) `
229
231
  <?xml version="1.0" encoding="utf-8" ?>
230
232
  <component name="Cmp1" extends="Scene">
231
233
  <script type="text/brightscript" uri="cmp1.brs" />
232
234
  </component>
233
235
  `);
234
- chai_1.expect(file.scriptTagImports.length).to.equal(1);
235
- chai_1.expect(file.scriptTagImports[0]).to.deep.include({
236
+ (0, chai_config_spec_1.expect)(file.scriptTagImports.length).to.equal(1);
237
+ (0, chai_config_spec_1.expect)(file.scriptTagImports[0]).to.deep.include({
236
238
  text: 'cmp1.brs',
237
- pkgPath: `pkg:/components/cmp1.brs`
239
+ destPath: `components${path.sep}cmp1.brs`
238
240
  });
239
241
  });
240
242
  it('finds correct position for empty uri in script tag', () => {
241
243
  var _a;
242
- file = program.setFile({
243
- src: `${rootDir}/components/comp1.xml`,
244
- dest: 'components/comp1.xml'
245
- }, testHelpers_spec_1.trim `
244
+ file = program.setFile('components/comp1.xml', (0, testHelpers_spec_1.trim) `
246
245
  <?xml version="1.0" encoding="utf-8" ?>
247
246
  <component name="Cmp1" extends="Scene">
248
247
  <script type="text/brightscript" uri="" />
249
248
  </component>
250
249
  `);
251
- chai_1.expect(file.scriptTagImports.length).to.equal(1);
252
- chai_1.expect((_a = file.scriptTagImports[0]) === null || _a === void 0 ? void 0 : _a.filePathRange).to.eql(vscode_languageserver_1.Range.create(2, 42, 2, 42));
250
+ (0, chai_config_spec_1.expect)(file.scriptTagImports.length).to.equal(1);
251
+ (0, chai_config_spec_1.expect)((_a = file.scriptTagImports[0]) === null || _a === void 0 ? void 0 : _a.filePathRange).to.eql(vscode_languageserver_1.Range.create(2, 42, 2, 42));
253
252
  });
254
253
  });
255
254
  describe('doesReferenceFile', () => {
256
255
  it('compares case insensitive', () => {
257
- let xmlFile = program.setFile({
258
- src: `${rootDir}/components/comp1.xml`,
259
- dest: 'components/comp1.xml'
260
- }, testHelpers_spec_1.trim `
256
+ let xmlFile = program.setFile('components/comp1.xml', (0, testHelpers_spec_1.trim) `
261
257
  <?xml version="1.0" encoding="utf-8" ?>
262
258
  <component name="Cmp1" extends="Scene">
263
259
  <script type="text/brightscript" uri="HeroGrid.brs" />
264
260
  </component>
265
261
  `);
266
- let brsFile = program.setFile({
267
- src: `${rootDir}/components/HEROGRID.brs`,
268
- dest: `components/HEROGRID.brs`
269
- }, ``);
270
- chai_1.expect(xmlFile.doesReferenceFile(brsFile)).to.be.true;
262
+ let brsFile = program.setFile(`components/HEROGRID.brs`, ``);
263
+ (0, chai_config_spec_1.expect)(xmlFile.doesReferenceFile(brsFile)).to.be.true;
271
264
  });
272
265
  });
273
266
  describe('autoImportComponentScript', () => {
274
267
  it('is not enabled by default', () => {
275
- program.setFile({ src: `${rootDir}/components/comp1.xml`, dest: 'components/comp1.xml' }, testHelpers_spec_1.trim `
268
+ program.setFile('components/comp1.xml', (0, testHelpers_spec_1.trim) `
276
269
  <?xml version="1.0" encoding="utf-8" ?>
277
270
  <component name="ParentScene" extends="GrandparentScene">
278
271
  <script type="text/brightscript" uri="./lib.brs" />
279
272
  </component>
280
273
  `);
281
- program.setFile({ src: `${rootDir}/components/lib.brs`, dest: 'components/lib.brs' }, `
274
+ program.setFile('components/lib.brs', `
282
275
  function libFunc()
283
276
  end function
284
277
  `);
285
- program.setFile({ src: `${rootDir}/components/comp1.bs`, dest: 'components/comp1.bs' }, `
278
+ program.setFile('components/comp1.bs', `
286
279
  function init()
287
280
  libFunc()
288
281
  end function
289
282
  `);
290
283
  program.validate();
291
- chai_1.expect(program.getDiagnostics().map(x => x.message)).to.include(DiagnosticMessages_1.DiagnosticMessages.fileNotReferencedByAnyOtherFile().message);
284
+ (0, testHelpers_spec_1.expectDiagnostics)(program, [
285
+ DiagnosticMessages_1.DiagnosticMessages.fileNotReferencedByAnyOtherFile()
286
+ ]);
292
287
  });
293
288
  it('is not enabled by default', () => {
294
289
  program = new Program_1.Program({
295
- rootDir: rootDir,
290
+ rootDir: testHelpers_spec_2.rootDir,
296
291
  autoImportComponentScript: true
297
292
  });
298
- program.setFile({ src: `${rootDir}/components/comp1.xml`, dest: 'components/comp1.xml' }, testHelpers_spec_1.trim `
293
+ program.setFile('components/comp1.xml', (0, testHelpers_spec_1.trim) `
299
294
  <?xml version="1.0" encoding="utf-8" ?>
300
295
  <component name="ParentScene" extends="GrandparentScene">
301
296
  <script type="text/brightscript" uri="./lib.brs" />
302
297
  </component>
303
298
  `);
304
- program.setFile({ src: `${rootDir}/components/lib.brs`, dest: 'components/lib.brs' }, `
299
+ program.setFile('components/lib.brs', `
305
300
  function libFunc()
306
301
  end function
307
302
  `);
308
- program.setFile({ src: `${rootDir}/components/comp1.bs`, dest: 'components/comp1.bs' }, `
303
+ program.setFile('components/comp1.bs', `
309
304
  function init()
310
305
  libFunc()
311
306
  end function
312
307
  `);
313
308
  program.validate();
314
309
  //there should be no errors
315
- chai_1.expect(program.getDiagnostics().map(x => x.message)[0]).not.to.exist;
316
- });
317
- });
318
- describe('getCompletions', () => {
319
- it('formats completion paths with proper slashes', () => {
320
- program.setFile('pkg:/components/component1/component1.brs', '');
321
- const xmlFile = program.setFile('components/component1/component1.xml', testHelpers_spec_1.trim `
322
- <?xml version="1.0" encoding="utf-8" ?>
323
- <component name="Component1" extends="Group">
324
- </component
325
- `);
326
- xmlFile.parser.references.scriptTagImports.push({
327
- pkgPath: 'pkg:/components/component1/component1.brs',
328
- text: 'component1.brs',
329
- filePathRange: vscode_languageserver_1.Range.create(1, 1, 1, 1)
330
- });
331
- chai_1.expect(xmlFile.getCompletions(vscode_languageserver_1.Position.create(1, 1))[0]).to.include({
332
- label: 'component1.brs',
333
- kind: vscode_languageserver_1.CompletionItemKind.File
334
- });
335
- chai_1.expect(xmlFile.getCompletions(vscode_languageserver_1.Position.create(1, 1))[1]).to.include({
336
- label: 'pkg:/components/component1/component1.brs',
337
- kind: vscode_languageserver_1.CompletionItemKind.File
338
- });
339
- });
340
- it('returns empty set when out of range', () => {
341
- program.setFile({ src: `${rootDir}/components/Component1.brs`, dest: 'components/component1.brs' }, ``);
342
- chai_1.expect(file.getCompletions(vscode_languageserver_1.Position.create(99, 99))).to.be.empty;
343
- });
344
- //TODO - refine this test once cdata scripts are supported
345
- it('prevents scope completions entirely', () => {
346
- program.setFile({ src: `${rootDir}/components/Component1.brs`, dest: 'components/component1.brs' }, ``);
347
- let xmlFile = program.setFile({ src: `${rootDir}/components/Component1.xml`, dest: 'components/component1.xml' }, testHelpers_spec_1.trim `
348
- <?xml version="1.0" encoding="utf-8" ?>
349
- <component name="ParentScene" extends="GrandparentScene">
350
- <script type="text/brightscript" uri="./Component1.brs" />
351
- </component>
352
- `);
353
- chai_1.expect(program.getCompletions(xmlFile.srcPath, vscode_languageserver_1.Position.create(1, 1))).to.be.empty;
310
+ (0, testHelpers_spec_1.expectZeroDiagnostics)(program);
354
311
  });
355
312
  });
356
313
  describe('getAllDependencies', () => {
357
314
  it('returns own imports', () => {
358
- file = program.setFile('components/comp1.xml', testHelpers_spec_1.trim `
315
+ file = program.setFile('components/comp1.xml', (0, testHelpers_spec_1.trim) `
359
316
  <?xml version="1.0" encoding="utf-8" ?>
360
317
  <component name="ChildScene" extends="BaseScene">
361
318
  <script type="text/brightscript" uri="pkg:/source/lib.brs" />
362
319
  </component>
363
320
  `);
364
- chai_1.expect(file.getOwnDependencies().sort()).to.eql([
365
- 'pkg:/source/lib.brs',
366
- 'pkg:/source/lib.d.bs'
321
+ (0, chai_config_spec_1.expect)(file.getOwnDependencies().sort()).to.eql([
322
+ (0, util_1.standardizePath) `source/lib.brs`,
323
+ (0, util_1.standardizePath) `source/lib.d.bs`
367
324
  ]);
368
325
  });
369
326
  });
370
327
  it('invalidates dependent scopes on change', () => {
371
328
  let xmlFile = program.setFile({
372
- src: `${rootDir}/components/comp1.xml`,
329
+ src: `${testHelpers_spec_2.rootDir}/components/comp1.xml`,
373
330
  dest: `components/comp1.xml`
374
- }, testHelpers_spec_1.trim `
331
+ }, (0, testHelpers_spec_1.trim) `
375
332
  <?xml version="1.0" encoding="utf-8" ?>
376
333
  <component name="ChildScene" extends="BaseScene">
377
334
  <script type="text/brightscript" uri="pkg:/source/lib.bs" />
@@ -380,204 +337,210 @@ describe('XmlFile', () => {
380
337
  program.validate();
381
338
  let scope = program.getScopesForFile(xmlFile)[0];
382
339
  //scope should be validated
383
- chai_1.expect(scope.isValidated);
340
+ (0, chai_config_spec_1.expect)(scope.isValidated);
384
341
  //add lib1
385
- program.setFile({
386
- src: `${rootDir}/source/lib.bs`,
387
- dest: `source/lib.bs`
388
- }, ``);
342
+ program.setFile(`source/lib.bs`, ``);
389
343
  //adding a dependent file should have invalidated the scope
390
- chai_1.expect(scope.isValidated).to.be.false;
344
+ (0, chai_config_spec_1.expect)(scope.isValidated).to.be.false;
391
345
  program.validate();
392
- chai_1.expect(scope.isValidated).to.be.true;
346
+ (0, chai_config_spec_1.expect)(scope.isValidated).to.be.true;
393
347
  //update lib1 to include an import
394
- program.setFile({
395
- src: `${rootDir}/source/lib.bs`,
396
- dest: `source/lib.bs`
397
- }, `
348
+ program.setFile(`source/lib.bs`, `
398
349
  import "lib2.bs"
399
350
  `);
400
351
  //scope should have been invalidated again
401
- chai_1.expect(scope.isValidated).to.be.false;
352
+ (0, chai_config_spec_1.expect)(scope.isValidated).to.be.false;
402
353
  program.validate();
403
- chai_1.expect(scope.isValidated).to.be.true;
354
+ (0, chai_config_spec_1.expect)(scope.isValidated).to.be.true;
404
355
  //add the lib2 imported from lib
405
- program.setFile({
406
- src: `${rootDir}/source/lib2.bs`,
407
- dest: `source/lib2.bs`
408
- }, ``);
356
+ program.setFile(`source/lib2.bs`, ``);
409
357
  //scope should have been invalidated again because of chained dependency
410
- chai_1.expect(scope.isValidated).to.be.false;
358
+ (0, chai_config_spec_1.expect)(scope.isValidated).to.be.false;
411
359
  program.validate();
412
- chai_1.expect(scope.isValidated).to.be.true;
413
- program.removeFile(`${rootDir}/source/lib.bs`);
414
- chai_1.expect(scope.isValidated).to.be.false;
360
+ (0, chai_config_spec_1.expect)(scope.isValidated).to.be.true;
361
+ program.removeFile(`${testHelpers_spec_2.rootDir}/source/lib.bs`);
362
+ (0, chai_config_spec_1.expect)(scope.isValidated).to.be.false;
415
363
  });
416
364
  it('does not invalidate unrelated scopes on change', () => {
417
365
  let xmlFile1 = program.setFile({
418
- src: `${rootDir}/components/comp1.xml`,
366
+ src: `${testHelpers_spec_2.rootDir}/components/comp1.xml`,
419
367
  dest: `components/comp1.xml`
420
- }, testHelpers_spec_1.trim `
368
+ }, (0, testHelpers_spec_1.trim) `
421
369
  <?xml version="1.0" encoding="utf-8" ?>
422
370
  <component name="ChildScene1" extends="BaseScene">
423
371
  <script type="text/brightscript" uri="pkg:/source/lib.brs" />
424
372
  </component>
425
373
  `);
426
374
  let xmlFile2 = program.setFile({
427
- src: `${rootDir}/components/comp2.xml`,
375
+ src: `${testHelpers_spec_2.rootDir}/components/comp2.xml`,
428
376
  dest: `components/comp2.xml`
429
- }, testHelpers_spec_1.trim `
377
+ }, (0, testHelpers_spec_1.trim) `
430
378
  <?xml version="1.0" encoding="utf-8" ?>
431
379
  <component name="ChildScene2" extends="BaseScene">
432
380
  </component>
433
381
  `);
434
382
  program.validate();
435
383
  //scope should be validated
436
- chai_1.expect(program.getScopesForFile(xmlFile1)[0].isValidated).to.be.true;
437
- chai_1.expect(program.getScopesForFile(xmlFile2)[0].isValidated).to.be.true;
384
+ (0, chai_config_spec_1.expect)(program.getScopesForFile(xmlFile1)[0].isValidated).to.be.true;
385
+ (0, chai_config_spec_1.expect)(program.getScopesForFile(xmlFile2)[0].isValidated).to.be.true;
438
386
  //add the lib file
439
- program.setFile({
440
- src: `${rootDir}/source/lib.brs`,
441
- dest: `source/lib.brs`
442
- }, ``);
443
- chai_1.expect(program.getScopesForFile(xmlFile1)[0].isValidated).to.be.false;
444
- chai_1.expect(program.getScopesForFile(xmlFile2)[0].isValidated).to.be.true;
445
- });
446
- it('allows adding diagnostics', () => {
447
- const expected = [{
448
- message: 'message',
449
- file: undefined,
450
- range: undefined
451
- }];
452
- file.addDiagnostics(expected);
453
- const actual = file.getDiagnostics();
454
- chai_1.expect(actual).deep.equal(expected);
387
+ program.setFile(`source/lib.brs`, ``);
388
+ (0, chai_config_spec_1.expect)(program.getScopesForFile(xmlFile1)[0].isValidated).to.be.false;
389
+ (0, chai_config_spec_1.expect)(program.getScopesForFile(xmlFile2)[0].isValidated).to.be.true;
455
390
  });
456
391
  describe('component extends', () => {
457
392
  it('works for single-line', () => {
393
+ var _a;
458
394
  file = program.setFile({
459
- src: `${rootDir}/components/comp1.xml`,
395
+ src: `${testHelpers_spec_2.rootDir}/components/comp1.xml`,
460
396
  dest: `components/comp1.xml`
461
- }, testHelpers_spec_1.trim `
397
+ }, (0, testHelpers_spec_1.trim) `
462
398
  <?xml version="1.0" encoding="utf-8" ?>
463
399
  <component name="ChildScene" extends="BaseScene">
464
400
  </component>
465
401
  `);
466
- chai_1.expect(file.parentComponentName.range).to.eql(vscode_languageserver_1.Range.create(1, 38, 1, 47));
402
+ (0, chai_config_spec_1.expect)((_a = file.parentComponentName.location) === null || _a === void 0 ? void 0 : _a.range).to.eql(vscode_languageserver_1.Range.create(1, 38, 1, 47));
467
403
  });
468
404
  it('works for multi-line', () => {
405
+ var _a;
469
406
  file = program.setFile({
470
- src: `${rootDir}/components/comp1.xml`,
407
+ src: `${testHelpers_spec_2.rootDir}/components/comp1.xml`,
471
408
  dest: `components/comp1.xml`
472
- }, testHelpers_spec_1.trim `
409
+ }, (0, testHelpers_spec_1.trim) `
473
410
  <?xml version="1.0" encoding="utf-8" ?>
474
411
  <component name="ChildScene"
475
412
  extends="BaseScene">
476
413
  </component>
477
414
  `);
478
- chai_1.expect(file.parentComponentName.range).to.eql(vscode_languageserver_1.Range.create(2, 13, 2, 22));
415
+ (0, chai_config_spec_1.expect)((_a = file.parentComponentName.location) === null || _a === void 0 ? void 0 : _a.range).to.eql(vscode_languageserver_1.Range.create(2, 13, 2, 22));
479
416
  });
480
417
  it('does not throw when unable to find extends', () => {
481
418
  file = program.setFile({
482
- src: `${rootDir}/components/comp1.xml`,
419
+ src: `${testHelpers_spec_2.rootDir}/components/comp1.xml`,
483
420
  dest: `components/comp1.xml`
484
- }, testHelpers_spec_1.trim `
421
+ }, (0, testHelpers_spec_1.trim) `
485
422
  <?xml version="1.0" encoding="utf-8" ?>
486
423
  <component name="ChildScene">
487
424
  </component>
488
425
  `);
489
- chai_1.expect(file.parentComponentName).to.not.exist;
426
+ (0, chai_config_spec_1.expect)(file.parentComponentName).to.not.exist;
490
427
  });
491
428
  it('adds warning when no "extends" attribute is found', () => {
492
- file = program.setFile({
493
- src: `${rootDir}/components/comp1.xml`,
429
+ program.setFile({
430
+ src: `${testHelpers_spec_2.rootDir}/components/comp1.xml`,
494
431
  dest: `components/comp1.xml`
495
- }, testHelpers_spec_1.trim `
432
+ }, (0, testHelpers_spec_1.trim) `
496
433
  <?xml version="1.0" encoding="utf-8" ?>
497
434
  <component name="ChildScene">
498
435
  </component>
499
436
  `);
500
437
  program.validate();
501
- chai_1.expect(file.getDiagnostics()[0]).to.include({
502
- severity: vscode_languageserver_1.DiagnosticSeverity.Warning,
503
- message: DiagnosticMessages_1.DiagnosticMessages.xmlComponentMissingExtendsAttribute().message
504
- });
505
- });
506
- });
507
- it('detects when importing the codebehind file unnecessarily', () => {
508
- var _a;
509
- program = new Program_1.Program({
510
- autoImportComponentScript: true,
511
- rootDir: rootDir
438
+ (0, testHelpers_spec_1.expectDiagnostics)(program, [
439
+ DiagnosticMessages_1.DiagnosticMessages.xmlComponentMissingExtendsAttribute()
440
+ ]);
512
441
  });
513
- program.setFile({
514
- src: `${rootDir}/components/SimpleScene.bs`,
515
- dest: `components/SimpleScene.bs`
516
- }, '');
517
- program.setFile({
518
- src: `${rootDir}/components/SimpleScene.xml`,
519
- dest: `components/SimpleScene.xml`
520
- }, testHelpers_spec_1.trim `
521
- <?xml version="1.0" encoding="utf-8" ?>
522
- <component name="SimpleScene" extends="Scene">
523
- <script type="text/brighterscript" uri="SimpleScene.bs" />
524
- </component>
525
- `);
526
- program.validate();
527
- chai_1.expect((_a = program.getDiagnostics()[0]) === null || _a === void 0 ? void 0 : _a.message).to.equal(DiagnosticMessages_1.DiagnosticMessages.unnecessaryCodebehindScriptImport().message);
528
442
  });
529
443
  describe('transpile', () => {
530
- it(`honors the 'needsTranspiled' flag when set in 'afterFileParse'`, () => {
444
+ it('handles single quotes properly', async () => {
445
+ await testTranspile((0, testHelpers_spec_1.trim) `
446
+ <?xml version="1.0" encoding="utf-8" ?>
447
+ <component name="AnimationExample" extends="Scene">
448
+ <children>
449
+ <Animated frames='["pkg:/images/animation-1.png"]' />
450
+ </children>
451
+ </component>
452
+ `, (0, testHelpers_spec_1.trim) `
453
+ <?xml version="1.0" encoding="utf-8" ?>
454
+ <component name="AnimationExample" extends="Scene">
455
+ <script type="text/brightscript" uri="pkg:/source/bslib.brs" />
456
+ <children>
457
+ <Animated frames='["pkg:/images/animation-1.png"]' />
458
+ </children>
459
+ </component>
460
+ `, 'none', 'components/Comp.xml');
461
+ });
462
+ it('supports instantresume <customization> elements', async () => {
463
+ fsExtra.outputFileSync(`${testHelpers_spec_2.rootDir}/manifest`, '');
464
+ fsExtra.outputFileSync(`${testHelpers_spec_2.rootDir}/source/main.brs`, `sub main()\nend sub`);
465
+ fsExtra.outputFileSync(`${testHelpers_spec_2.rootDir}/components/MainScene.xml`, (0, testHelpers_spec_1.trim) `
466
+ <?xml version="1.0" encoding="utf-8" ?>
467
+ <component name="MainScene" extends="Scene">
468
+ <customization resumehandler="customResume" />
469
+ <customization suspendhandler="customSuspend" />
470
+ <children>
471
+ <Rectangle width="1920" height="1080" />
472
+ </children>
473
+ </component>
474
+ `);
475
+ const builder = new ProgramBuilder_1.ProgramBuilder();
476
+ await builder.run({
477
+ cwd: testHelpers_spec_2.rootDir,
478
+ outDir: testHelpers_spec_2.outDir,
479
+ logLevel: logging_1.LogLevel.off
480
+ });
481
+ (0, chai_config_spec_1.expect)((0, testHelpers_spec_1.trim)(fsExtra.readFileSync(`${testHelpers_spec_2.outDir}/components/MainScene.xml`).toString())).to.eql((0, testHelpers_spec_1.trim) `
482
+ <?xml version="1.0" encoding="utf-8" ?>
483
+ <component name="MainScene" extends="Scene">
484
+ <script type="text/brightscript" uri="pkg:/source/bslib.brs" />
485
+ <customization resumehandler="customResume" />
486
+ <customization suspendhandler="customSuspend" />
487
+ <children>
488
+ <Rectangle width="1920" height="1080" />
489
+ </children>
490
+ </component>
491
+ `);
492
+ });
493
+ it(`honors the 'needsTranspiled' flag when set in 'afterProvideFile'`, () => {
531
494
  program.plugins.add({
532
495
  name: 'test',
533
- afterFileParse: (event) => {
496
+ afterProvideFile: (event) => {
534
497
  //enable transpile for every file
535
- event.file.needsTranspiled = true;
498
+ event.files[0].needsTranspiled = true;
536
499
  }
537
500
  });
538
- const file = program.setFile('components/file.xml', testHelpers_spec_1.trim `
501
+ const file = program.setFile('components/file.xml', (0, testHelpers_spec_1.trim) `
539
502
  <?xml version="1.0" encoding="utf-8" ?>
540
503
  <component name="Comp" extends="Group">
541
504
  </component>
542
505
  `);
543
- chai_1.expect(file.needsTranspiled).to.be.true;
506
+ (0, chai_config_spec_1.expect)(file['needsTranspiled']).to.be.true;
544
507
  });
545
- it('includes bslib script', () => {
546
- testTranspile(testHelpers_spec_1.trim `
508
+ it('includes bslib script', async () => {
509
+ await testTranspile((0, testHelpers_spec_1.trim) `
547
510
  <?xml version="1.0" encoding="utf-8" ?>
548
511
  <component name="Comp" extends="Group">
549
512
  </component>
550
- `, testHelpers_spec_1.trim `
513
+ `, (0, testHelpers_spec_1.trim) `
551
514
  <?xml version="1.0" encoding="utf-8" ?>
552
515
  <component name="Comp" extends="Group">
553
516
  <script type="text/brightscript" uri="pkg:/source/bslib.brs" />
554
517
  </component>
555
518
  `, 'none', 'components/Comp.xml');
556
519
  });
557
- it('does not include additional bslib script if already there ', () => {
558
- testTranspile(testHelpers_spec_1.trim `
520
+ it('does not include additional bslib script if already there ', async () => {
521
+ await testTranspile((0, testHelpers_spec_1.trim) `
559
522
  <?xml version="1.0" encoding="utf-8" ?>
560
523
  <component name="Comp" extends="Group">
561
524
  <script type="text/brightscript" uri="pkg:/source/bslib.brs" />
562
525
  </component>
563
- `, testHelpers_spec_1.trim `
526
+ `, (0, testHelpers_spec_1.trim) `
564
527
  <?xml version="1.0" encoding="utf-8" ?>
565
528
  <component name="Comp" extends="Group">
566
529
  <script type="text/brightscript" uri="pkg:/source/bslib.brs" />
567
530
  </component>
568
531
  `, 'none', 'components/child.xml');
569
532
  });
570
- it('does not include bslib script if already there from ropm', () => {
533
+ it('does not include bslib script if already there from ropm', async () => {
571
534
  program.setFile('source/roku_modules/bslib/bslib.brs', ``);
572
535
  program.setFile('source/lib.bs', ``);
573
536
  //include a bs file to force transpile for the xml file
574
- testTranspile(testHelpers_spec_1.trim `
537
+ await testTranspile((0, testHelpers_spec_1.trim) `
575
538
  <?xml version="1.0" encoding="utf-8" ?>
576
539
  <component name="Comp" extends="Group">
577
540
  <script type="text/brightscript" uri="pkg:/source/lib.bs" />
578
541
  <script type="text/brightscript" uri="pkg:/source/roku_modules/bslib/bslib.brs" />
579
542
  </component>
580
- `, testHelpers_spec_1.trim `
543
+ `, (0, testHelpers_spec_1.trim) `
581
544
  <?xml version="1.0" encoding="utf-8" ?>
582
545
  <component name="Comp" extends="Group">
583
546
  <script type="text/brightscript" uri="pkg:/source/lib.brs" />
@@ -586,47 +549,99 @@ describe('XmlFile', () => {
586
549
  `, 'none', 'components/child.xml');
587
550
  });
588
551
  it('does not transpile xml file when bslib script is already present', () => {
589
- const file = program.setFile('components/comp.xml', testHelpers_spec_1.trim `
552
+ const file = program.setFile('components/comp.xml', (0, testHelpers_spec_1.trim) `
590
553
  <?xml version="1.0" encoding="utf-8" ?>
591
554
  <component name="Comp" extends="Group">
592
555
  <script type="text/brightscript" uri="pkg:/source/bslib.brs" />
593
556
  </component>
594
557
  `);
595
558
  program.validate();
596
- testHelpers_spec_1.expectZeroDiagnostics(program);
597
- chai_1.expect(file.needsTranspiled).to.be.false;
559
+ (0, testHelpers_spec_1.expectZeroDiagnostics)(program);
560
+ (0, chai_config_spec_1.expect)(file['needsTranspiled']).to.be.false;
598
561
  });
599
562
  /**
600
563
  * There was a bug that would incorrectly replace one of the script paths on the second or third transpile, so this test verifies it doesn't do that anymore
601
564
  */
602
565
  it('does not mangle scripts on multiple transpile', async () => {
603
566
  program.setFile('components/SimpleScene.bs', ``);
604
- program.setFile(`components/SimpleScene.xml`, testHelpers_spec_1.trim `
567
+ program.setFile(`components/SimpleScene.xml`, (0, testHelpers_spec_1.trim) `
605
568
  <?xml version="1.0" encoding="utf-8" ?>
606
569
  <component name="SimpleScene" extends="Scene">
607
570
  <script type="text/brightscript" uri="SimpleScene.bs" />
608
571
  </component>
609
572
  `);
610
- const expected = testHelpers_spec_1.trim `
573
+ const expected = (0, testHelpers_spec_1.trim) `
611
574
  <?xml version="1.0" encoding="utf-8" ?>
612
575
  <component name="SimpleScene" extends="Scene">
613
576
  <script type="text/brightscript" uri="SimpleScene.brs" />
614
577
  <script type="text/brightscript" uri="pkg:/source/bslib.brs" />
615
578
  </component>
616
579
  `;
617
- await program.transpile([], stagingDir);
618
- chai_1.expect(fsExtra.readFileSync(`${stagingDir}/components/SimpleScene.xml`).toString()).to.eql(expected);
580
+ await program.build();
581
+ (0, chai_config_spec_1.expect)((0, testHelpers_spec_1.trim)(fsExtra.readFileSync(`${testHelpers_spec_2.outDir}/components/SimpleScene.xml`).toString())).to.eql(expected);
619
582
  //clear the output folder
620
- fsExtra.emptyDirSync(stagingDir);
621
- await program.transpile([], stagingDir);
622
- chai_1.expect(fsExtra.readFileSync(`${stagingDir}/components/SimpleScene.xml`).toString()).to.eql(expected);
583
+ fsExtra.emptyDirSync(testHelpers_spec_2.outDir);
584
+ await program.build();
585
+ (0, chai_config_spec_1.expect)((0, testHelpers_spec_1.trim)(fsExtra.readFileSync(`${testHelpers_spec_2.outDir}/components/SimpleScene.xml`).toString())).to.eql(expected);
623
586
  });
624
- it('keeps all content of the XML', () => {
587
+ it('injects new scripts near existing scripts', async () => {
625
588
  program.setFile(`components/SimpleScene.bs`, `
626
589
  sub b()
627
590
  end sub
628
591
  `);
629
- testTranspile(testHelpers_spec_1.trim `
592
+ await testTranspile((0, testHelpers_spec_1.trim) `
593
+ <component name="SimpleScene" extends="group">
594
+ <script type="text/brightscript" uri="SimpleScene.bs"/>
595
+ <children>
596
+ <aa id="aa">
597
+ <bb id="bb" />
598
+ </aa>
599
+ </children>
600
+ </component>
601
+ `, (0, testHelpers_spec_1.trim) `
602
+ <component name="SimpleScene" extends="group">
603
+ <script type="text/brightscript" uri="SimpleScene.brs" />
604
+ <script type="text/brightscript" uri="pkg:/source/bslib.brs" />
605
+ <children>
606
+ <aa id="aa">
607
+ <bb id="bb" />
608
+ </aa>
609
+ </children>
610
+ </component>
611
+ `, 'none', 'components/SimpleScene.xml');
612
+ });
613
+ it('injects new scripts at top of component when no scripts were present', async () => {
614
+ program.setFile(`components/SimpleScene.bs`, `
615
+ sub b()
616
+ end sub
617
+ `);
618
+ program.options.autoImportComponentScript = true;
619
+ await testTranspile((0, testHelpers_spec_1.trim) `
620
+ <component name="SimpleScene" extends="group">
621
+ <children>
622
+ <aa id="aa">
623
+ <bb id="bb" />
624
+ </aa>
625
+ </children>
626
+ </component>
627
+ `, (0, testHelpers_spec_1.trim) `
628
+ <component name="SimpleScene" extends="group">
629
+ <script type="text/brightscript" uri="pkg:/components/SimpleScene.brs" />
630
+ <script type="text/brightscript" uri="pkg:/source/bslib.brs" />
631
+ <children>
632
+ <aa id="aa">
633
+ <bb id="bb" />
634
+ </aa>
635
+ </children>
636
+ </component>
637
+ `, 'none', 'components/SimpleScene.xml');
638
+ });
639
+ it('keeps all content of the XML', async () => {
640
+ program.setFile(`components/SimpleScene.bs`, `
641
+ sub b()
642
+ end sub
643
+ `);
644
+ await testTranspile((0, testHelpers_spec_1.trim) `
630
645
  <?xml version="1.0" encoding="utf-8" ?>
631
646
  <component
632
647
  name="SimpleScene" extends="Scene"
@@ -644,7 +659,7 @@ describe('XmlFile', () => {
644
659
  </aa>
645
660
  </children>
646
661
  </component>
647
- `, testHelpers_spec_1.trim `
662
+ `, (0, testHelpers_spec_1.trim) `
648
663
  <?xml version="1.0" encoding="utf-8" ?>
649
664
  <component name="SimpleScene" extends="Scene" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://devtools.web.roku.com/schema/RokuSceneGraph.xsd">
650
665
  <interface>
@@ -652,26 +667,26 @@ describe('XmlFile', () => {
652
667
  <function name="b" />
653
668
  </interface>
654
669
  <script type="text/brightscript" uri="SimpleScene.brs" />
670
+ <script type="text/brightscript" uri="pkg:/source/bslib.brs" />
655
671
  <children>
656
672
  <aa id="aa">
657
673
  <bb id="bb" />
658
674
  </aa>
659
675
  </children>
660
- <script type="text/brightscript" uri="pkg:/source/bslib.brs" />
661
676
  </component>
662
677
  `, 'none', 'components/SimpleScene.xml');
663
678
  });
664
- it('changes file extensions from bs to brs', () => {
679
+ it('changes file extensions from bs to brs', async () => {
665
680
  program.setFile(`components/SimpleScene.bs`, `
666
681
  import "pkg:/source/lib.bs"
667
682
  `);
668
683
  program.setFile('source/lib.bs', ``);
669
- testTranspile(testHelpers_spec_1.trim `
684
+ await testTranspile((0, testHelpers_spec_1.trim) `
670
685
  <?xml version="1.0" encoding="utf-8" ?>
671
686
  <component name="SimpleScene" extends="Scene">
672
687
  <script type="text/brighterscript" uri="SimpleScene.bs"/>
673
688
  </component>
674
- `, testHelpers_spec_1.trim `
689
+ `, (0, testHelpers_spec_1.trim) `
675
690
  <?xml version="1.0" encoding="utf-8" ?>
676
691
  <component name="SimpleScene" extends="Scene">
677
692
  <script type="text/brightscript" uri="SimpleScene.brs" />
@@ -680,14 +695,14 @@ describe('XmlFile', () => {
680
695
  </component>
681
696
  `, 'none', 'components/SimpleScene.xml');
682
697
  });
683
- it('does not fail on missing script type', () => {
698
+ it('does not fail on missing script type', async () => {
684
699
  program.setFile('components/SimpleScene.brs', '');
685
- testTranspile(testHelpers_spec_1.trim `
700
+ await testTranspile((0, testHelpers_spec_1.trim) `
686
701
  <?xml version="1.0" encoding="utf-8" ?>
687
702
  <component name="SimpleScene" extends="Scene">
688
703
  <script uri="SimpleScene.brs"/>
689
704
  </component>
690
- `, testHelpers_spec_1.trim `
705
+ `, (0, testHelpers_spec_1.trim) `
691
706
  <?xml version="1.0" encoding="utf-8" ?>
692
707
  <component name="SimpleScene" extends="Scene">
693
708
  <script uri="SimpleScene.brs" type="text/brightscript" />
@@ -696,7 +711,7 @@ describe('XmlFile', () => {
696
711
  `, null, 'components/comp.xml');
697
712
  });
698
713
  it('returns the XML unmodified if needsTranspiled is false', () => {
699
- let file = program.setFile('components/SimpleScene.xml', testHelpers_spec_1.trim `
714
+ let file = program.setFile('components/SimpleScene.xml', (0, testHelpers_spec_1.trim) `
700
715
  <?xml version="1.0" encoding="utf-8" ?>
701
716
  <!-- should stay as-is -->
702
717
  <component name="SimpleScene" extends="Scene" >
@@ -705,7 +720,7 @@ describe('XmlFile', () => {
705
720
  `);
706
721
  //prevent the default auto-imports to ensure no transpilation from AST
707
722
  file.getMissingImportsForTranspile = () => [];
708
- chai_1.expect(testHelpers_spec_1.trimMap(file.transpile().code)).to.equal(testHelpers_spec_1.trim `
723
+ (0, chai_config_spec_1.expect)((0, testHelpers_spec_1.trimMap)(file.transpile().code)).to.equal((0, testHelpers_spec_1.trim) `
709
724
  <?xml version="1.0" encoding="utf-8" ?>
710
725
  <!-- should stay as-is -->
711
726
  <component name="SimpleScene" extends="Scene" >
@@ -714,26 +729,25 @@ describe('XmlFile', () => {
714
729
  `);
715
730
  });
716
731
  it('needsTranspiled is false by default', () => {
717
- let file = program.setFile('components/SimpleScene.xml', testHelpers_spec_1.trim `
732
+ let file = program.setFile('components/SimpleScene.xml', (0, testHelpers_spec_1.trim) `
718
733
  <?xml version="1.0" encoding="utf-8" ?>
719
734
  <component name="SimpleScene" extends="Scene" >
720
735
  </component>
721
736
  `);
722
- chai_1.expect(file.needsTranspiled).to.be.false;
737
+ (0, chai_config_spec_1.expect)(file['needsTranspiled']).to.be.false;
723
738
  });
724
739
  it('needsTranspiled is true if an import is brighterscript', () => {
725
- let file = program.setFile('components/SimpleScene.xml', testHelpers_spec_1.trim `
740
+ let file = program.setFile('components/SimpleScene.xml', (0, testHelpers_spec_1.trim) `
726
741
  <?xml version="1.0" encoding="utf-8" ?>
727
742
  <component name="SimpleScene" extends="Scene" >
728
743
  <script type="text/brightscript" uri="SimpleScene.bs"/>
729
744
  </component>
730
745
  `);
731
- program.validate();
732
- chai_1.expect(file.needsTranspiled).to.be.true;
746
+ (0, chai_config_spec_1.expect)(file['needsTranspiled']).to.be.true;
733
747
  });
734
748
  it('simple source mapping includes sourcemap reference', () => {
735
749
  program.options.sourceMap = true;
736
- let file = program.setFile('components/SimpleScene.xml', testHelpers_spec_1.trim `
750
+ let file = program.setFile('components/SimpleScene.xml', (0, testHelpers_spec_1.trim) `
737
751
  <?xml version="1.0" encoding="utf-8" ?>
738
752
  <component name="SimpleScene" extends="Scene">
739
753
  </component>
@@ -741,18 +755,110 @@ describe('XmlFile', () => {
741
755
  //prevent the default auto-imports to ensure no transpilation from AST
742
756
  file.getMissingImportsForTranspile = () => [];
743
757
  const code = file.transpile().code;
744
- chai_1.expect(code.endsWith(`<!--//# sourceMappingURL=./SimpleScene.xml.map -->`)).to.be.true;
758
+ (0, chai_config_spec_1.expect)(code.endsWith(`<!--//# sourceMappingURL=./SimpleScene.xml.map -->`)).to.be.true;
745
759
  });
746
760
  it('AST-based source mapping includes sourcemap reference', () => {
747
761
  program.options.sourceMap = true;
748
- let file = program.setFile('components/SimpleScene.xml', testHelpers_spec_1.trim `
762
+ let file = program.setFile('components/SimpleScene.xml', (0, testHelpers_spec_1.trim) `
749
763
  <?xml version="1.0" encoding="utf-8" ?>
750
764
  <component name="SimpleScene" extends="Scene">
751
765
  </component>
752
766
  `);
753
- file.needsTranspiled = true;
767
+ file['needsTranspiled'] = true;
754
768
  const code = file.transpile().code;
755
- chai_1.expect(code.endsWith(`<!--//# sourceMappingURL=./SimpleScene.xml.map -->`)).to.be.true;
769
+ (0, chai_config_spec_1.expect)(code.endsWith(`<!--//# sourceMappingURL=./SimpleScene.xml.map -->`)).to.be.true;
770
+ });
771
+ it('removes script imports if given file is not publishable', async () => {
772
+ program.options.pruneEmptyCodeFiles = true;
773
+ program.setFile(`components/SimpleScene.bs`, `
774
+ enum simplescenetypes
775
+ hero
776
+ intro
777
+ end enum
778
+ `);
779
+ await testTranspile((0, testHelpers_spec_1.trim) `
780
+ <?xml version="1.0" encoding="utf-8" ?>
781
+ <component
782
+ name="SimpleScene" extends="Scene"
783
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
784
+ xsi:noNamespaceSchemaLocation="https://devtools.web.roku.com/schema/RokuSceneGraph.xsd"
785
+ >
786
+ <script type="text/brightscript" uri="SimpleScene.bs"/>
787
+ </component>
788
+ `, (0, testHelpers_spec_1.trim) `
789
+ <?xml version="1.0" encoding="utf-8" ?>
790
+ <component name="SimpleScene" extends="Scene" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://devtools.web.roku.com/schema/RokuSceneGraph.xsd">
791
+ <script type="text/brightscript" uri="pkg:/source/bslib.brs" />
792
+ </component>
793
+ `, 'none', 'components/SimpleScene.xml');
794
+ });
795
+ it('removes extra imports found via dependencies if given file is not publishable', async () => {
796
+ program.options.pruneEmptyCodeFiles = true;
797
+ program.setFile(`source/simplescenetypes.bs`, `
798
+ enum SimpleSceneTypes
799
+ world = "world"
800
+ end enum
801
+ `);
802
+ program.setFile(`components/SimpleScene.bs`, `
803
+ import "pkg:/source/simplescenetypes.bs"
804
+
805
+ sub init()
806
+ ? "Hello " + SimpleSceneTypes.world
807
+ end sub
808
+ `);
809
+ await testTranspile((0, testHelpers_spec_1.trim) `
810
+ <?xml version="1.0" encoding="utf-8" ?>
811
+ <component
812
+ name="SimpleScene" extends="Scene"
813
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
814
+ xsi:noNamespaceSchemaLocation="https://devtools.web.roku.com/schema/RokuSceneGraph.xsd"
815
+ >
816
+ <script type="text/brightscript" uri="SimpleScene.bs"/>
817
+ </component>
818
+ `, (0, testHelpers_spec_1.trim) `
819
+ <?xml version="1.0" encoding="utf-8" ?>
820
+ <component name="SimpleScene" extends="Scene" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://devtools.web.roku.com/schema/RokuSceneGraph.xsd">
821
+ <script type="text/brightscript" uri="SimpleScene.brs" />
822
+ <script type="text/brightscript" uri="pkg:/source/bslib.brs" />
823
+ </component>
824
+ `, 'none', 'components/SimpleScene.xml');
825
+ });
826
+ it('removes imports of empty brightscript files', async () => {
827
+ program.options.pruneEmptyCodeFiles = true;
828
+ program.setFile(`components/EmptyFile.brs`, '');
829
+ program.setFile(`components/SimpleScene.brs`, `
830
+ sub init()
831
+ ? "Hello World"
832
+ end sub
833
+ `);
834
+ await testTranspile((0, testHelpers_spec_1.trim) `
835
+ <?xml version="1.0" encoding="utf-8" ?>
836
+ <component
837
+ name="SimpleScene" extends="Scene"
838
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
839
+ xsi:noNamespaceSchemaLocation="https://devtools.web.roku.com/schema/RokuSceneGraph.xsd"
840
+ >
841
+ <script type="text/brightscript" uri="SimpleScene.brs"/>
842
+ <script type="text/brightscript" uri="EmptyFile.brs"/>
843
+ </component>
844
+ `, (0, testHelpers_spec_1.trim) `
845
+ <?xml version="1.0" encoding="utf-8" ?>
846
+ <component name="SimpleScene" extends="Scene" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://devtools.web.roku.com/schema/RokuSceneGraph.xsd">
847
+ <script type="text/brightscript" uri="SimpleScene.brs" />
848
+ <script type="text/brightscript" uri="pkg:/source/bslib.brs" />
849
+ </component>
850
+ `, 'none', 'components/SimpleScene.xml');
851
+ });
852
+ it('includes script tags in self closing component', async () => {
853
+ await testTranspile((0, testHelpers_spec_1.trim) `
854
+ <?xml version="1.0" encoding="utf-8" ?>
855
+ <component name="Comp" extends="Group" />
856
+ `, (0, testHelpers_spec_1.trim) `
857
+ <?xml version="1.0" encoding="utf-8" ?>
858
+ <component name="Comp" extends="Group">
859
+ <script type="text/brightscript" uri="pkg:/source/bslib.brs" />
860
+ </component>
861
+ `, 'none', 'components/Comp.xml');
756
862
  });
757
863
  });
758
864
  describe('Transform plugins', () => {
@@ -763,50 +869,52 @@ describe('XmlFile', () => {
763
869
  });
764
870
  program.plugins.add({
765
871
  name: 'Transform plugins',
766
- afterFileParse: (event) => validateXml(event.file)
872
+ validateFile: event => validateXml(event.file)
767
873
  });
768
- return program.setFile('components/Cmp1.xml', testHelpers_spec_1.trim `
874
+ file = program.setFile('components/component.xml', (0, testHelpers_spec_1.trim) `
769
875
  <?xml version="1.0" encoding="utf-8" ?>
770
876
  <component name="Cmp1" extends="Scene">
771
877
  </component>
772
878
  `);
879
+ program.validate();
880
+ return file;
773
881
  }
774
882
  it('Calls XML file validation plugins', () => {
775
883
  const validateXml = sinon.spy();
776
884
  const file = parseFileWithPlugins(validateXml);
777
- chai_1.expect(validateXml.callCount).to.equal(1);
778
- chai_1.expect(validateXml.calledWith(file)).to.be.true;
885
+ (0, chai_config_spec_1.expect)(validateXml.callCount).to.be.greaterThan(0);
886
+ (0, chai_config_spec_1.expect)(validateXml.getCalls().flatMap(x => x.args)).to.include(file);
779
887
  });
780
888
  });
781
889
  it('plugin diagnostics work for xml files', () => {
782
890
  program.plugins.add({
783
891
  name: 'Xml diagnostic test',
784
- afterFileParse: ({ file }) => {
785
- if (file.srcPath.endsWith('.xml')) {
786
- file.addDiagnostics([{
787
- file: file,
892
+ afterProvideFile: (event) => {
893
+ for (const file of event.files) {
894
+ if ((0, reflection_1.isXmlFile)(file)) {
895
+ program.diagnostics.register({
788
896
  message: 'Test diagnostic',
789
- range: vscode_languageserver_1.Range.create(0, 0, 0, 0),
897
+ location: util_1.default.createLocationFromFileRange(file, vscode_languageserver_1.Range.create(0, 0, 0, 0)),
790
898
  code: 9999
791
- }]);
899
+ });
900
+ }
792
901
  }
793
902
  }
794
903
  });
795
- program.setFile('components/comp.xml', testHelpers_spec_1.trim `
904
+ program.setFile('components/comp.xml', (0, testHelpers_spec_1.trim) `
796
905
  <?xml version="1.0" encoding="utf-8" ?>
797
906
  <component name="Cmp1" extends="Scene">
798
907
  </component>
799
908
  `);
800
909
  program.validate();
801
- chai_1.expect(program.getDiagnostics().map(x => ({ message: x.message, code: x.code }))).to.eql([{
910
+ (0, testHelpers_spec_1.expectDiagnostics)(program, [{
802
911
  message: 'Test diagnostic',
803
912
  code: 9999
804
913
  }]);
805
914
  });
806
915
  describe('typedef', () => {
807
916
  it('loads d.bs files from parent scope', () => {
808
- var _a;
809
- program.setFile('components/ParentComponent.xml', testHelpers_spec_1.trim `
917
+ program.setFile('components/ParentComponent.xml', (0, testHelpers_spec_1.trim) `
810
918
  <?xml version="1.0" encoding="utf-8" ?>
811
919
  <component name="ParentComponent" extends="Scene">
812
920
  <script uri="ParentComponent.brs" />
@@ -833,7 +941,7 @@ describe('XmlFile', () => {
833
941
  sub Lib_log()
834
942
  end sub
835
943
  `);
836
- program.setFile('components/ChildComponent.xml', testHelpers_spec_1.trim `
944
+ program.setFile('components/ChildComponent.xml', (0, testHelpers_spec_1.trim) `
837
945
  <?xml version="1.0" encoding="utf-8" ?>
838
946
  <component name="ChildComponent" extends="ParentComponent">
839
947
  <script uri="ChildComponent.bs" />
@@ -846,15 +954,15 @@ describe('XmlFile', () => {
846
954
  end sub
847
955
  `);
848
956
  program.validate();
849
- chai_1.expect((_a = program.getDiagnostics()[0]) === null || _a === void 0 ? void 0 : _a.message).not.to.exist;
957
+ (0, testHelpers_spec_1.expectZeroDiagnostics)(program);
850
958
  const scope = program.getComponentScope('ChildComponent');
851
- chai_1.expect(Object.keys(scope.namespaceLookup).sort()).to.eql([
959
+ (0, chai_config_spec_1.expect)([...scope.namespaceNameSet.keys()].sort()).to.eql([
852
960
  'lib',
853
961
  'parent'
854
962
  ]);
855
963
  });
856
964
  it('loads `d.bs` files into scope', () => {
857
- const xmlFile = program.setFile('components/Component1.xml', testHelpers_spec_1.trim `
965
+ const xmlFile = program.setFile('components/Component1.xml', (0, testHelpers_spec_1.trim) `
858
966
  <?xml version="1.0" encoding="utf-8" ?>
859
967
  <component name="Component1" extends="Scene">
860
968
  <script uri="Component1.brs" />
@@ -864,9 +972,9 @@ describe('XmlFile', () => {
864
972
  sub logInfo()
865
973
  end sub
866
974
  `);
867
- chai_1.expect(program.getScopesForFile(xmlFile)[0].getAllCallables().map(x => x.callable.name)).to.include('logInfo');
975
+ (0, chai_config_spec_1.expect)(program.getScopesForFile(xmlFile)[0].getAllCallables().map(x => x.callable.name)).to.include('logInfo');
868
976
  });
869
- it('does not include `d.bs` script during transpile', () => {
977
+ it('does not include `d.bs` script during transpile', async () => {
870
978
  program.setFile('source/logger.d.bs', `
871
979
  sub logInfo()
872
980
  end sub
@@ -880,12 +988,12 @@ describe('XmlFile', () => {
880
988
  sub init()
881
989
  end sub
882
990
  `);
883
- testTranspile(testHelpers_spec_1.trim `
991
+ await testTranspile((0, testHelpers_spec_1.trim) `
884
992
  <?xml version="1.0" encoding="utf-8" ?>
885
993
  <component name="Component1" extends="Scene">
886
994
  <script type="text/brighterscript" uri="Component1.bs" />
887
995
  </component>
888
- `, testHelpers_spec_1.trim `
996
+ `, (0, testHelpers_spec_1.trim) `
889
997
  <?xml version="1.0" encoding="utf-8" ?>
890
998
  <component name="Component1" extends="Scene">
891
999
  <script type="text/brightscript" uri="Component1.brs" />
@@ -895,7 +1003,7 @@ describe('XmlFile', () => {
895
1003
  `, 'none', 'components/Component1.xml');
896
1004
  });
897
1005
  it('does not load .brs information into scope if related d.bs is in scope', () => {
898
- const xmlFile = program.setFile('components/Component1.xml', testHelpers_spec_1.trim `
1006
+ const xmlFile = program.setFile('components/Component1.xml', (0, testHelpers_spec_1.trim) `
899
1007
  <?xml version="1.0" encoding="utf-8" ?>
900
1008
  <component name="Component1" extends="Scene">
901
1009
  <script uri="Component1.brs" />
@@ -910,20 +1018,20 @@ describe('XmlFile', () => {
910
1018
  end sub
911
1019
  `);
912
1020
  let functionNames = scope.getAllCallables().map(x => x.callable.name);
913
- chai_1.expect(functionNames).to.include('logInfo');
914
- chai_1.expect(functionNames).to.include('logWarning');
1021
+ (0, chai_config_spec_1.expect)(functionNames).to.include('logInfo');
1022
+ (0, chai_config_spec_1.expect)(functionNames).to.include('logWarning');
915
1023
  //load d.bs file, which should shadow out the .brs file
916
1024
  program.setFile('components/Component1.d.bs', `
917
1025
  sub logError()
918
1026
  end sub
919
1027
  `);
920
1028
  functionNames = scope.getAllCallables().map(x => x.callable.name);
921
- chai_1.expect(functionNames).to.include('logError');
922
- chai_1.expect(functionNames).not.to.include('logInfo');
923
- chai_1.expect(functionNames).not.to.include('logWarning');
1029
+ (0, chai_config_spec_1.expect)(functionNames).to.include('logError');
1030
+ (0, chai_config_spec_1.expect)(functionNames).not.to.include('logInfo');
1031
+ (0, chai_config_spec_1.expect)(functionNames).not.to.include('logWarning');
924
1032
  });
925
1033
  it('updates xml scope when typedef disappears', () => {
926
- const xmlFile = program.setFile('components/Component1.xml', testHelpers_spec_1.trim `
1034
+ const xmlFile = program.setFile('components/Component1.xml', (0, testHelpers_spec_1.trim) `
927
1035
  <?xml version="1.0" encoding="utf-8" ?>
928
1036
  <component name="Component1" extends="Scene">
929
1037
  <script uri="Component1.brs" />
@@ -942,78 +1050,78 @@ describe('XmlFile', () => {
942
1050
  `);
943
1051
  program.validate();
944
1052
  let functionNames = scope.getOwnCallables().map(x => x.callable.name);
945
- chai_1.expect(functionNames).to.include('logTypedef');
946
- chai_1.expect(functionNames).not.to.include('logBrs');
1053
+ (0, chai_config_spec_1.expect)(functionNames).to.include('logTypedef');
1054
+ (0, chai_config_spec_1.expect)(functionNames).not.to.include('logBrs');
947
1055
  //remove the typdef file
948
1056
  program.removeFile(typedef.srcPath);
949
1057
  program.validate();
950
1058
  functionNames = scope.getOwnCallables().map(x => x.callable.name);
951
- chai_1.expect(functionNames).not.to.include('logTypedef');
952
- chai_1.expect(functionNames).to.include('logBrs');
1059
+ (0, chai_config_spec_1.expect)(functionNames).not.to.include('logTypedef');
1060
+ (0, chai_config_spec_1.expect)(functionNames).to.include('logBrs');
953
1061
  });
954
1062
  });
955
1063
  it('finds script imports for single-quoted script tags', () => {
956
1064
  var _a;
957
- const file = program.setFile('components/file.xml', testHelpers_spec_1.trim `
1065
+ const file = program.setFile('components/file.xml', (0, testHelpers_spec_1.trim) `
958
1066
  <?xml version="1.0" encoding="utf-8" ?>
959
1067
  <component name="Cmp1" extends="Scene">
960
1068
  <script uri='SingleQuotedFile.brs' />
961
1069
  </component>
962
1070
  `);
963
- chai_1.expect((_a = file.scriptTagImports[0]) === null || _a === void 0 ? void 0 : _a.text).to.eql('SingleQuotedFile.brs');
1071
+ (0, chai_config_spec_1.expect)((_a = file.scriptTagImports[0]) === null || _a === void 0 ? void 0 : _a.text).to.eql('SingleQuotedFile.brs');
964
1072
  });
965
1073
  describe('commentFlags', () => {
966
1074
  it('ignores warning from previous line comment', () => {
967
1075
  //component without a name attribute
968
- program.setFile('components/file.xml', testHelpers_spec_1.trim `
1076
+ program.setFile('components/file.xml', (0, testHelpers_spec_1.trim) `
969
1077
  <?xml version="1.0" encoding="utf-8" ?>
970
1078
  <!--bs:disable-next-line-->
971
1079
  <component>
972
1080
  </component>
973
1081
  `);
974
1082
  program.validate();
975
- testHelpers_spec_1.expectZeroDiagnostics(program);
1083
+ (0, testHelpers_spec_1.expectZeroDiagnostics)(program);
976
1084
  });
977
- it('ignores warning from previous line just for the specified code', () => {
1085
+ it('ignores a specific diagnostic on next line', () => {
978
1086
  //component without a name attribute
979
- program.setFile('components/file.xml', testHelpers_spec_1.trim `
1087
+ program.setFile('components/file.xml', (0, testHelpers_spec_1.trim) `
980
1088
  <?xml version="1.0" encoding="utf-8" ?>
981
1089
  <!--bs:disable-next-line 1006-->
982
1090
  <component>
983
1091
  </component>
984
1092
  `);
985
1093
  program.validate();
986
- chai_1.expect(program.getDiagnostics().map(x => x.message)).to.eql([
987
- DiagnosticMessages_1.DiagnosticMessages.xmlComponentMissingExtendsAttribute().message
1094
+ (0, testHelpers_spec_1.expectDiagnostics)(program, [
1095
+ DiagnosticMessages_1.DiagnosticMessages.xmlComponentMissingExtendsAttribute()
988
1096
  ]);
989
1097
  });
990
- it('ignores warning from previous line comment', () => {
1098
+ it('ignores all warnings from previous line comment', () => {
991
1099
  //component without a name attribute
992
- program.setFile('components/file.xml', testHelpers_spec_1.trim `
1100
+ program.setFile('components/file.xml', (0, testHelpers_spec_1.trim) `
993
1101
  <?xml version="1.0" encoding="utf-8" ?>
994
1102
  <component> <!--bs:disable-line-->
995
1103
  </component>
996
1104
  `);
997
1105
  program.validate();
998
- testHelpers_spec_1.expectZeroDiagnostics(program);
1106
+ (0, testHelpers_spec_1.expectZeroDiagnostics)(program);
999
1107
  });
1000
1108
  it('ignores warning from previous line just for the specified code', () => {
1001
1109
  //component without a name attribute
1002
- program.setFile('components/file.xml', testHelpers_spec_1.trim `
1110
+ program.setFile('components/file.xml', (0, testHelpers_spec_1.trim) `
1003
1111
  <?xml version="1.0" encoding="utf-8" ?>
1004
- <component> <!--bs:disable-line 1006-->
1112
+ <component name="ButtonCustom"> <!--bs:disable-line 1006-->
1005
1113
  </component>
1006
1114
  `);
1007
1115
  program.validate();
1008
- chai_1.expect(program.getDiagnostics().map(x => x.message)).to.eql([
1009
- DiagnosticMessages_1.DiagnosticMessages.xmlComponentMissingExtendsAttribute().message
1116
+ (0, testHelpers_spec_1.expectDiagnostics)(program, [
1117
+ DiagnosticMessages_1.DiagnosticMessages.xmlComponentMissingExtendsAttribute()
1010
1118
  ]);
1011
1119
  });
1012
1120
  });
1013
1121
  describe('duplicate components', () => {
1014
1122
  it('more gracefully handles multiple components with the same name', () => {
1015
1123
  program.setFile('components/comp1.brs', ``);
1016
- program.setFile('components/comp1.xml', testHelpers_spec_1.trim `
1124
+ program.setFile('components/comp1.xml', (0, testHelpers_spec_1.trim) `
1017
1125
  <?xml version="1.0" encoding="utf-8" ?>
1018
1126
  <component name="comp1" extends="Group">
1019
1127
  <script uri="comp1.brs" />
@@ -1021,44 +1129,44 @@ describe('XmlFile', () => {
1021
1129
  `);
1022
1130
  //add another component with the same name
1023
1131
  program.setFile('components/comp2.brs', ``);
1024
- program.setFile('components/comp2.xml', testHelpers_spec_1.trim `
1132
+ program.setFile('components/comp2.xml', (0, testHelpers_spec_1.trim) `
1025
1133
  <?xml version="1.0" encoding="utf-8" ?>
1026
1134
  <component name="comp1" extends="Group">
1027
1135
  <script uri="comp2.brs" />
1028
1136
  </component>
1029
1137
  `);
1030
1138
  program.validate();
1031
- chai_1.expect(program.getDiagnostics().map(x => x.message).sort()).to.eql([
1032
- DiagnosticMessages_1.DiagnosticMessages.duplicateComponentName('comp1').message,
1033
- DiagnosticMessages_1.DiagnosticMessages.duplicateComponentName('comp1').message
1139
+ (0, testHelpers_spec_1.expectDiagnostics)(program, [
1140
+ DiagnosticMessages_1.DiagnosticMessages.duplicateComponentName('comp1'),
1141
+ DiagnosticMessages_1.DiagnosticMessages.duplicateComponentName('comp1')
1034
1142
  ]);
1035
1143
  });
1036
1144
  it('maintains consistent component selection', () => {
1037
1145
  //add comp2 first
1038
- const comp2 = program.setFile('components/comp2.xml', testHelpers_spec_1.trim `
1146
+ const comp2 = program.setFile('components/comp2.xml', (0, testHelpers_spec_1.trim) `
1039
1147
  <?xml version="1.0" encoding="utf-8" ?>
1040
1148
  <component name="comp1">
1041
1149
  </component>
1042
1150
  `);
1043
- chai_1.expect(program.getComponent('comp1').file.pkgPath).to.equal(comp2.pkgPath);
1151
+ (0, chai_config_spec_1.expect)(program.getComponent('comp1').file.destPath).to.equal(comp2.destPath);
1044
1152
  //add comp1. it should become the main component with this name
1045
- const comp1 = program.setFile('components/comp1.xml', testHelpers_spec_1.trim `
1153
+ const comp1 = program.setFile('components/comp1.xml', (0, testHelpers_spec_1.trim) `
1046
1154
  <?xml version="1.0" encoding="utf-8" ?>
1047
1155
  <component name="comp1" extends="Group">
1048
1156
  </component>
1049
1157
  `);
1050
- chai_1.expect(program.getComponent('comp1').file.pkgPath).to.equal(comp1.pkgPath);
1158
+ (0, chai_config_spec_1.expect)(program.getComponent('comp1').file.destPath).to.equal(comp1.destPath);
1051
1159
  //remove comp1, comp2 should be the primary again
1052
- program.removeFile(util_1.standardizePath `${rootDir}/components/comp1.xml`);
1053
- chai_1.expect(program.getComponent('comp1').file.pkgPath).to.equal(comp2.pkgPath);
1160
+ program.removeFile((0, util_1.standardizePath) `${testHelpers_spec_2.rootDir}/components/comp1.xml`);
1161
+ (0, chai_config_spec_1.expect)(program.getComponent('comp1').file.destPath).to.equal(comp2.destPath);
1054
1162
  //add comp3
1055
- program.setFile('components/comp3.xml', testHelpers_spec_1.trim `
1163
+ program.setFile('components/comp3.xml', (0, testHelpers_spec_1.trim) `
1056
1164
  <?xml version="1.0" encoding="utf-8" ?>
1057
1165
  <component name="comp1">
1058
1166
  </component>
1059
1167
  `);
1060
1168
  //...the 2nd file should still be main
1061
- chai_1.expect(program.getComponent('comp1').file.pkgPath).to.equal(comp2.pkgPath);
1169
+ (0, chai_config_spec_1.expect)(program.getComponent('comp1').file.destPath).to.equal(comp2.destPath);
1062
1170
  });
1063
1171
  });
1064
1172
  });