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,19 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SGAst = exports.SGComponent = exports.SGInterface = exports.SGInterfaceFunction = exports.SGFieldTypes = exports.SGInterfaceField = exports.SGScript = exports.SGChildren = exports.SGNode = exports.SGProlog = exports.SGTag = exports.SGAttribute = void 0;
3
+ exports.SGAst = exports.SGComponent = exports.SGInterface = exports.SGInterfaceFunction = exports.SGFieldTypes = exports.SGFieldType = exports.SGInterfaceField = exports.SGScript = exports.SGCustomization = exports.SGChildren = exports.SGNode = exports.SGProlog = exports.SGElement = exports.SGAttribute = void 0;
4
4
  const source_map_1 = require("source-map");
5
- const astUtils_1 = require("../astUtils");
6
5
  const creators_1 = require("../astUtils/creators");
7
6
  const util_1 = require("../util");
8
7
  class SGAttribute {
9
- constructor(key, equals, openingQuote, value, closingQuote) {
10
- this.tokens = {};
11
- this._range = null;
12
- this.tokens.key = key;
13
- this.tokens.equals = equals;
14
- this.tokens.openingQuote = openingQuote;
15
- this.tokens.value = value;
16
- this.tokens.closingQuote = closingQuote;
8
+ constructor(options) {
9
+ this._location = null;
10
+ this.tokens = {
11
+ key: options.key,
12
+ equals: options.equals,
13
+ openingQuote: options.openingQuote,
14
+ value: options.value,
15
+ closingQuote: options.closingQuote
16
+ };
17
17
  }
18
18
  get key() {
19
19
  return this.tokens.key.text;
@@ -39,11 +39,11 @@ class SGAttribute {
39
39
  this.tokens.value = { text: val };
40
40
  }
41
41
  }
42
- get range() {
43
- if (!this._range) {
44
- this._range = util_1.default.createBoundingRange(this.tokens.key, this.tokens.equals, this.tokens.openingQuote, this.tokens.value, this.tokens.closingQuote);
42
+ get location() {
43
+ if (!this._location) {
44
+ this._location = util_1.default.createBoundingLocation(this.tokens.key, this.tokens.equals, this.tokens.openingQuote, this.tokens.value, this.tokens.closingQuote);
45
45
  }
46
- return this._range;
46
+ return this._location;
47
47
  }
48
48
  transpile(state) {
49
49
  const result = [
@@ -52,13 +52,16 @@ class SGAttribute {
52
52
  if (this.tokens.value) {
53
53
  result.push(state.transpileToken(this.tokens.equals, '='), state.transpileToken(this.tokens.openingQuote, '"'), state.transpileToken(this.tokens.value), state.transpileToken(this.tokens.closingQuote, '"'));
54
54
  }
55
- return new source_map_1.SourceNode(null, null, null, result);
55
+ return util_1.default.sourceNodeFromTranspileResult(null, null, null, result);
56
+ }
57
+ clone() {
58
+ return new SGAttribute(this.tokens);
56
59
  }
57
60
  }
58
61
  exports.SGAttribute = SGAttribute;
59
- class SGTag {
60
- constructor(startTagOpen, startTagName, attributes = [], startTagClose, childNodes = [], endTagOpen, endTagName, endTagClose) {
61
- this.tokens = {};
62
+ class SGElement {
63
+ constructor(options) {
64
+ var _a, _b;
62
65
  /**
63
66
  * Array of attributes found on this tag
64
67
  */
@@ -66,29 +69,32 @@ class SGTag {
66
69
  /**
67
70
  * The array of direct children AST elements of this AST node
68
71
  */
69
- this.childNodes = [];
70
- this._range = null;
71
- this.tokens.startTagOpen = startTagOpen;
72
- this.tokens.startTagName = startTagName;
73
- this.attributes = attributes;
74
- this.tokens.startTagClose = startTagClose;
75
- this.childNodes = childNodes;
76
- this.tokens.endTagOpen = endTagOpen;
77
- this.tokens.endTagName = endTagName;
78
- this.tokens.endTagClose = endTagClose;
79
- }
80
- get range() {
72
+ this.elements = [];
73
+ this._location = null;
74
+ this.tokens = {
75
+ startTagOpen: options.startTagOpen,
76
+ startTagName: options.startTagName,
77
+ startTagClose: options.startTagClose,
78
+ endTagOpen: options.endTagOpen,
79
+ endTagName: options.endTagName,
80
+ endTagClose: options.endTagClose
81
+ };
82
+ this.attributes = (_a = options.attributes) !== null && _a !== void 0 ? _a : [];
83
+ this.elements = (_b = options.elements) !== null && _b !== void 0 ? _b : [];
84
+ }
85
+ get location() {
81
86
  var _a, _b, _c, _d;
82
- if (!this._range) {
83
- this._range = util_1.default.createBoundingRange(this.tokens.startTagOpen, this.tokens.startTagName, (_a = this.attributes) === null || _a === void 0 ? void 0 : _a[((_b = this.attributes) === null || _b === void 0 ? void 0 : _b.length) - 1], this.tokens.startTagClose, (_c = this.childNodes) === null || _c === void 0 ? void 0 : _c[((_d = this.childNodes) === null || _d === void 0 ? void 0 : _d.length) - 1], this.tokens.endTagOpen, this.tokens.endTagName, this.tokens.endTagClose);
87
+ if (!this._location) {
88
+ this._location = util_1.default.createBoundingLocation(this.tokens.startTagOpen, this.tokens.startTagName, (_a = this.attributes) === null || _a === void 0 ? void 0 : _a[((_b = this.attributes) === null || _b === void 0 ? void 0 : _b.length) - 1], this.tokens.startTagClose, (_c = this.elements) === null || _c === void 0 ? void 0 : _c[((_d = this.elements) === null || _d === void 0 ? void 0 : _d.length) - 1], this.tokens.endTagOpen, this.tokens.endTagName, this.tokens.endTagClose);
84
89
  }
85
- return this._range;
90
+ return this._location;
86
91
  }
87
92
  /**
88
93
  * Is this a self-closing tag?
89
94
  */
90
95
  get isSelfClosing() {
91
- return !this.tokens.endTagName;
96
+ var _a;
97
+ return this.tokens.startTagClose && ((_a = this.tokens.startTagClose) === null || _a === void 0 ? void 0 : _a.text) !== '>';
92
98
  }
93
99
  get id() {
94
100
  return this.getAttributeValue('id');
@@ -97,7 +103,7 @@ class SGTag {
97
103
  this.setAttributeValue('id', value);
98
104
  }
99
105
  /**
100
- * Get the lower-case name of this tag.
106
+ * Get the name of this tag.
101
107
  */
102
108
  get tagName() {
103
109
  var _a;
@@ -108,10 +114,10 @@ class SGTag {
108
114
  * This does not step into children's children.
109
115
  *
110
116
  */
111
- getChildNodesByTagName(tagName) {
117
+ getElementsByTagName(tagName) {
112
118
  const result = [];
113
119
  const lowerTagName = tagName.toLowerCase();
114
- for (const el of this.childNodes) {
120
+ for (const el of this.elements) {
115
121
  if (el.tokens.startTagName.text.toLowerCase() === lowerTagName) {
116
122
  result.push(el);
117
123
  }
@@ -122,7 +128,7 @@ class SGTag {
122
128
  * Add a child to the end of the children array
123
129
  */
124
130
  addChild(tag) {
125
- this.childNodes.push(tag);
131
+ this.elements.push(tag);
126
132
  return tag;
127
133
  }
128
134
  /**
@@ -130,9 +136,9 @@ class SGTag {
130
136
  * @returns true if node was found and removed, false if the node wasn't there and thus nothing was done
131
137
  */
132
138
  removeChild(tag) {
133
- const idx = this.childNodes.indexOf(tag);
139
+ const idx = this.elements.indexOf(tag);
134
140
  if (idx > -1) {
135
- this.childNodes.splice(idx, 1);
141
+ this.elements.splice(idx, 1);
136
142
  return true;
137
143
  }
138
144
  return false;
@@ -144,7 +150,7 @@ class SGTag {
144
150
  return !!this.getAttribute(name);
145
151
  }
146
152
  /**
147
- * Get an SGAttribute by its name
153
+ * Get an SGAttribute by its name (case INsensitive)
148
154
  */
149
155
  getAttribute(name) {
150
156
  var _a;
@@ -166,16 +172,21 @@ class SGTag {
166
172
  * Set an attribute value by its name. If no attribute exists with this name, it is created
167
173
  */
168
174
  setAttributeValue(name, value) {
169
- let attr = this.getAttribute(name);
170
- //create an attribute with this name if we don't have one yet
171
- if (!attr) {
172
- attr = creators_1.createSGAttribute(name, value);
173
- this.attributes.push(attr);
175
+ if (value === undefined) {
176
+ this.removeAttribute(name);
177
+ }
178
+ else {
179
+ let attr = this.getAttribute(name);
180
+ //create an attribute with this name if we don't have one yet
181
+ if (!attr) {
182
+ attr = (0, creators_1.createSGAttribute)(name, value);
183
+ this.attributes.push(attr);
184
+ }
185
+ attr.value = value;
174
186
  }
175
- attr.value = value;
176
187
  }
177
188
  /**
178
- * Remove an attribute by its name
189
+ * Remove an attribute by its name. DO NOT USE this to edit AST (use ASTEditor)
179
190
  * @returns true if an attribute was found and removed. False if no attribute was found
180
191
  */
181
192
  removeAttribute(name) {
@@ -190,7 +201,7 @@ class SGTag {
190
201
  return false;
191
202
  }
192
203
  transpile(state) {
193
- return new source_map_1.SourceNode(null, null, null, [
204
+ return util_1.default.sourceNodeFromTranspileResult(null, null, null, [
194
205
  state.transpileToken(this.tokens.startTagOpen, '<'),
195
206
  state.transpileToken(this.tokens.startTagName),
196
207
  this.transpileAttributes(state, this.attributes),
@@ -199,25 +210,28 @@ class SGTag {
199
210
  }
200
211
  transpileBody(state) {
201
212
  var _a;
202
- if (this.isSelfClosing) {
203
- return new source_map_1.SourceNode(null, null, null, [
213
+ if (this.isSelfClosing && this.elements.length === 0) {
214
+ return util_1.default.sourceNodeFromTranspileResult(null, null, null, [
204
215
  ' ',
205
216
  state.transpileToken(this.tokens.startTagClose, '/>'),
206
217
  state.newline
207
218
  ]);
208
219
  }
209
220
  else {
221
+ // it is possible that the original tag isSelfClosing, but new elements have been added to it
222
+ // in that case, create a new startTagClose token for transpilation.
223
+ const startTagClose = this.isSelfClosing ? (0, creators_1.createSGToken)('>', this.tokens.startTagClose.location) : this.tokens.startTagClose;
210
224
  const chunks = [
211
- state.transpileToken(this.tokens.startTagClose, '>'),
225
+ state.transpileToken(startTagClose, '>'),
212
226
  state.newline
213
227
  ];
214
228
  state.blockDepth++;
215
- for (const child of this.childNodes) {
229
+ for (const child of this.elements) {
216
230
  chunks.push(state.indentText, child.transpile(state));
217
231
  }
218
232
  state.blockDepth--;
219
233
  chunks.push(state.indentText, state.transpileToken(this.tokens.endTagOpen, '</'), state.transpileToken((_a = this.tokens.endTagName) !== null && _a !== void 0 ? _a : this.tokens.startTagName), state.transpileToken(this.tokens.endTagClose, '>'), state.newline);
220
- return new source_map_1.SourceNode(null, null, null, chunks);
234
+ return util_1.default.sourceNodeFromTranspileResult(null, null, null, chunks);
221
235
  }
222
236
  }
223
237
  transpileAttributes(state, attributes) {
@@ -228,17 +242,20 @@ class SGTag {
228
242
  return new source_map_1.SourceNode(null, null, null, chunks);
229
243
  }
230
244
  }
231
- exports.SGTag = SGTag;
232
- class SGProlog extends SGTag {
245
+ exports.SGElement = SGElement;
246
+ class SGProlog extends SGElement {
233
247
  }
234
248
  exports.SGProlog = SGProlog;
235
- class SGNode extends SGTag {
249
+ class SGNode extends SGElement {
236
250
  }
237
251
  exports.SGNode = SGNode;
238
- class SGChildren extends SGTag {
252
+ class SGChildren extends SGElement {
239
253
  }
240
254
  exports.SGChildren = SGChildren;
241
- class SGScript extends SGTag {
255
+ class SGCustomization extends SGElement {
256
+ }
257
+ exports.SGCustomization = SGCustomization;
258
+ class SGScript extends SGElement {
242
259
  get type() {
243
260
  return this.getAttributeValue('type');
244
261
  }
@@ -253,7 +270,7 @@ class SGScript extends SGTag {
253
270
  }
254
271
  transpileBody(state) {
255
272
  if (this.cdata) {
256
- return new source_map_1.SourceNode(null, null, null, [
273
+ return util_1.default.sourceNodeFromTranspileResult(null, null, null, [
257
274
  '>',
258
275
  state.transpileToken(this.cdata),
259
276
  '</',
@@ -274,12 +291,14 @@ class SGScript extends SGTag {
274
291
  for (const attr of attributes) {
275
292
  const lowerKey = (_a = attr.tokens.key) === null || _a === void 0 ? void 0 : _a.text.toLowerCase();
276
293
  if (lowerKey === 'uri' && bsExtensionRegexp.exec((_b = attr.tokens.value) === null || _b === void 0 ? void 0 : _b.text)) {
277
- modifiedAttributes.push(util_1.default.cloneSGAttribute(attr, attr.tokens.value.text.replace(bsExtensionRegexp, '.brs')));
294
+ const clone = attr.clone();
295
+ clone.tokens.value.text.replace(bsExtensionRegexp, '.brs');
296
+ modifiedAttributes.push(clone);
278
297
  }
279
298
  else if (lowerKey === 'type') {
280
299
  foundType = true;
281
300
  if ((_c = attr.tokens.value) === null || _c === void 0 ? void 0 : _c.text.toLowerCase().endsWith('brighterscript')) {
282
- modifiedAttributes.push(util_1.default.cloneSGAttribute(attr, 'text/brightscript'));
301
+ modifiedAttributes.push(attr.clone());
283
302
  }
284
303
  else {
285
304
  modifiedAttributes.push(attr);
@@ -290,13 +309,13 @@ class SGScript extends SGTag {
290
309
  }
291
310
  }
292
311
  if (!foundType) {
293
- modifiedAttributes.push(creators_1.createSGAttribute('type', 'text/brightscript'));
312
+ modifiedAttributes.push((0, creators_1.createSGAttribute)('type', 'text/brightscript'));
294
313
  }
295
314
  return super.transpileAttributes(state, modifiedAttributes);
296
315
  }
297
316
  }
298
317
  exports.SGScript = SGScript;
299
- class SGInterfaceField extends SGTag {
318
+ class SGInterfaceField extends SGElement {
300
319
  get type() {
301
320
  return this.getAttributeValue('type');
302
321
  }
@@ -329,13 +348,37 @@ class SGInterfaceField extends SGTag {
329
348
  }
330
349
  }
331
350
  exports.SGInterfaceField = SGInterfaceField;
332
- exports.SGFieldTypes = [
333
- 'integer', 'int', 'longinteger', 'float', 'string', 'str', 'boolean', 'bool',
334
- 'vector2d', 'color', 'time', 'uri', 'node', 'floatarray', 'intarray', 'boolarray',
335
- 'stringarray', 'vector2darray', 'colorarray', 'timearray', 'nodearray', 'assocarray',
336
- 'array', 'roarray', 'rect2d', 'rect2darray'
337
- ];
338
- class SGInterfaceFunction extends SGTag {
351
+ var SGFieldType;
352
+ (function (SGFieldType) {
353
+ SGFieldType["integer"] = "integer";
354
+ SGFieldType["int"] = "int";
355
+ SGFieldType["longinteger"] = "longinteger";
356
+ SGFieldType["float"] = "float";
357
+ SGFieldType["string"] = "string";
358
+ SGFieldType["str"] = "str";
359
+ SGFieldType["boolean"] = "boolean";
360
+ SGFieldType["bool"] = "bool";
361
+ SGFieldType["vector2d"] = "vector2d";
362
+ SGFieldType["color"] = "color";
363
+ SGFieldType["time"] = "time";
364
+ SGFieldType["uri"] = "uri";
365
+ SGFieldType["node"] = "node";
366
+ SGFieldType["floatarray"] = "floatarray";
367
+ SGFieldType["intarray"] = "intarray";
368
+ SGFieldType["boolarray"] = "boolarray";
369
+ SGFieldType["stringarray"] = "stringarray";
370
+ SGFieldType["vector2darray"] = "vector2darray";
371
+ SGFieldType["colorarray"] = "colorarray";
372
+ SGFieldType["timearray"] = "timearray";
373
+ SGFieldType["nodearray"] = "nodearray";
374
+ SGFieldType["assocarray"] = "assocarray";
375
+ SGFieldType["array"] = "array";
376
+ SGFieldType["roarray"] = "roarray";
377
+ SGFieldType["rect2d"] = "rect2d";
378
+ SGFieldType["rect2darray"] = "rect2darray";
379
+ })(SGFieldType = exports.SGFieldType || (exports.SGFieldType = {}));
380
+ exports.SGFieldTypes = Object.keys(SGFieldType);
381
+ class SGInterfaceFunction extends SGElement {
339
382
  get name() {
340
383
  return this.getAttributeValue('name');
341
384
  }
@@ -344,17 +387,17 @@ class SGInterfaceFunction extends SGTag {
344
387
  }
345
388
  }
346
389
  exports.SGInterfaceFunction = SGInterfaceFunction;
347
- class SGInterface extends SGTag {
390
+ class SGInterface extends SGElement {
348
391
  get fields() {
349
- return this.getChildNodesByTagName('field');
392
+ return this.getElementsByTagName('field');
350
393
  }
351
394
  get functions() {
352
- return this.getChildNodesByTagName('function');
395
+ return this.getElementsByTagName('function');
353
396
  }
354
397
  get members() {
355
398
  var _a;
356
399
  const result = [];
357
- for (const node of this.childNodes) {
400
+ for (const node of this.elements) {
358
401
  const tagName = (_a = node.tagName) === null || _a === void 0 ? void 0 : _a.toLowerCase();
359
402
  if (tagName === 'field' || tagName === 'function') {
360
403
  result.push(node);
@@ -367,7 +410,7 @@ class SGInterface extends SGTag {
367
410
  */
368
411
  hasField(id) {
369
412
  var _a;
370
- for (const node of this.childNodes) {
413
+ for (const node of this.elements) {
371
414
  const tagName = (_a = node.tagName) === null || _a === void 0 ? void 0 : _a.toLowerCase();
372
415
  if (tagName === 'field' && node.id === id) {
373
416
  return true;
@@ -380,7 +423,7 @@ class SGInterface extends SGTag {
380
423
  */
381
424
  hasFunction(name) {
382
425
  var _a;
383
- for (const node of this.childNodes) {
426
+ for (const node of this.elements) {
384
427
  const tagName = (_a = node.tagName) === null || _a === void 0 ? void 0 : _a.toLowerCase();
385
428
  if (tagName === 'function' && node.name === name) {
386
429
  return true;
@@ -400,7 +443,7 @@ class SGInterface extends SGTag {
400
443
  setField(id, type, onChange, alwaysNotify, alias) {
401
444
  let field = this.getField(id);
402
445
  if (!field) {
403
- field = this.addChild(creators_1.createSGInterfaceField(id));
446
+ field = this.addChild((0, creators_1.createSGInterfaceField)(id));
404
447
  }
405
448
  field.type = type;
406
449
  field.onChange = onChange;
@@ -419,11 +462,10 @@ class SGInterface extends SGTag {
419
462
  */
420
463
  removeField(id) {
421
464
  var _a;
422
- for (let i = 0; i < this.childNodes.length; i++) {
423
- const node = this.childNodes[i];
424
- const tagName = (_a = node.tagName) === null || _a === void 0 ? void 0 : _a.toLowerCase();
425
- if (tagName === 'field' && node.id === id) {
426
- this.childNodes.splice(i, 1);
465
+ for (let i = 0; i < this.elements.length; i++) {
466
+ const node = this.elements[i];
467
+ if (((_a = node.tagName) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === 'field' && node.id === id) {
468
+ this.elements.splice(i, 1);
427
469
  return true;
428
470
  }
429
471
  }
@@ -433,7 +475,7 @@ class SGInterface extends SGTag {
433
475
  * Get the interface function with the specified name
434
476
  */
435
477
  getFunction(name) {
436
- return this.functions.find(field => field.name === name);
478
+ return this.functions.find(func => func.name === name);
437
479
  }
438
480
  /**
439
481
  * Add or replace a function on the interface
@@ -441,7 +483,7 @@ class SGInterface extends SGTag {
441
483
  setFunction(name) {
442
484
  let func = this.getFunction(name);
443
485
  if (!func) {
444
- func = this.addChild(creators_1.createSGInterfaceFunction(name));
486
+ func = this.addChild((0, creators_1.createSGInterfaceFunction)(name));
445
487
  }
446
488
  return func;
447
489
  }
@@ -451,11 +493,10 @@ class SGInterface extends SGTag {
451
493
  */
452
494
  removeFunction(name) {
453
495
  var _a;
454
- for (let i = 0; i < this.childNodes.length; i++) {
455
- const node = this.childNodes[i];
456
- const tagName = (_a = node.tagName) === null || _a === void 0 ? void 0 : _a.toLowerCase();
457
- if (tagName === 'function' && node.getAttributeValue('name') === name) {
458
- this.childNodes.splice(i, 1);
496
+ for (let i = 0; i < this.elements.length; i++) {
497
+ const node = this.elements[i];
498
+ if (((_a = node.tagName) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === 'function' && node.getAttributeValue('name') === name) {
499
+ this.elements.splice(i, 1);
459
500
  return true;
460
501
  }
461
502
  }
@@ -463,45 +504,95 @@ class SGInterface extends SGTag {
463
504
  }
464
505
  }
465
506
  exports.SGInterface = SGInterface;
466
- class SGComponent extends SGTag {
507
+ /**
508
+ * The `<component>` element in SceneGraph. Not to be confused about usages of components like `<Rectangle>`, those are considered `SGNode` instances.
509
+ */
510
+ class SGComponent extends SGElement {
467
511
  /**
468
512
  * Get all the <Field> and <Function> elements across all <Interface> nodes in this component
469
513
  */
470
514
  get interfaceMembers() {
471
515
  const members = [];
472
- for (const ifaceNode of this.getChildNodesByTagName('interface')) {
516
+ for (const ifaceNode of this.getElementsByTagName('interface')) {
473
517
  members.push(...ifaceNode.members);
474
518
  }
475
519
  return members;
476
520
  }
477
- get scripts() {
478
- return this.getChildNodesByTagName('script');
521
+ get scriptElements() {
522
+ return this.getElementsByTagName('script');
523
+ }
524
+ /**
525
+ * Get the <interface> element from this component (if present), or undefined if not.
526
+ * NOTE: Roku supports and merges multiple <interface> elements in a component, but this
527
+ * property points to the FIRST one. If you need to check whether a member exists,
528
+ * look through `this.interfaceMemebers` instead.
529
+ */
530
+ get interfaceElement() {
531
+ return this.getElementsByTagName('interface')[0];
479
532
  }
480
533
  /**
481
- * Get the `<children>` element of this component. (not to be confused with the AST `childNodes` property).
534
+ * Get the `<children>` element of this component. (not to be confused with the AST `childTags` property).
482
535
  * If there are multiope `<children>` elements, this function will return the last `<children>` tag because that's what Roku devices do.
483
536
  */
484
- get children() {
485
- const children = this.getChildNodesByTagName('children');
537
+ get childrenElement() {
538
+ const children = this.getElementsByTagName('children');
486
539
  return children[children.length - 1];
487
540
  }
541
+ get customizationElements() {
542
+ return this.getElementsByTagName('customization');
543
+ }
544
+ /**
545
+ * Specifies the name of the component, that allows you to create the component in your application.
546
+ * For example, if the name of the component is `CastMemberInfo`, you could create instances of the component declaratively
547
+ * in a child node element of a component `<children>` element (`<CastMemberInfo/>`), or using BrightScript in a `<script>`
548
+ * element (`createObject("roSGNode","CastMemberInfo")`).
549
+ *
550
+ * The name attribute is case-sensitive. You cannot successfully create or declare a component unless the component name exactly
551
+ * matches the name attribute, including case. Also be aware that two components with the exact same name in the same application
552
+ * components directory will have undefined and generally undesirable results if you attempt to create a component object with that name in the application.
553
+ */
488
554
  get name() {
489
555
  return this.getAttributeValue('name');
490
556
  }
491
557
  set name(value) {
492
558
  this.setAttributeValue('name', value);
493
559
  }
560
+ /**
561
+ * Specifies the name of the built-in or extended SceneGraph scene or node class whose functionality is extended by this component.
562
+ *
563
+ * For example, `extends="Group"` specifies that the component has all of the functionality of the Group node class (it can have child nodes, has translation/scale/rotation fields, and so forth).
564
+ *
565
+ * By default, a component extends the Group node class.
566
+ */
494
567
  get extends() {
495
568
  return this.getAttributeValue('extends');
496
569
  }
497
570
  set extends(value) {
498
571
  this.setAttributeValue('extends', value);
499
572
  }
573
+ /**
574
+ * Specifies the ID of a node declared in the XML file to have the initial remote control focus when the component is instantiated.
575
+ */
576
+ get initialFocus() {
577
+ return this.getAttributeValue('initialFocus');
578
+ }
579
+ set initialFocus(value) {
580
+ this.setAttributeValue('initialFocus', value);
581
+ }
582
+ /**
583
+ * Specifies the version of the SceneGraph API. The default is 1.0 if not specified.
584
+ */
585
+ get version() {
586
+ return this.getAttributeValue('version');
587
+ }
588
+ set version(value) {
589
+ this.setAttributeValue('version', value);
590
+ }
500
591
  /**
501
592
  * Does the specified field exist in the component interface?
502
593
  */
503
594
  hasInterfaceField(id) {
504
- for (const ifaceNode of this.getChildNodesByTagName('interface')) {
595
+ for (const ifaceNode of this.getElementsByTagName('interface')) {
505
596
  if (ifaceNode.hasField(id)) {
506
597
  return true;
507
598
  }
@@ -512,7 +603,7 @@ class SGComponent extends SGTag {
512
603
  * Does the specified function exist in the component interface?
513
604
  */
514
605
  hasInterfaceFunction(name) {
515
- for (const ifaceNode of this.getChildNodesByTagName('interface')) {
606
+ for (const ifaceNode of this.getElementsByTagName('interface')) {
516
607
  if (ifaceNode.hasFunction(name)) {
517
608
  return true;
518
609
  }
@@ -523,7 +614,7 @@ class SGComponent extends SGTag {
523
614
  * Get an interface field with the specified name
524
615
  */
525
616
  getInterfaceField(name) {
526
- for (const ifaceNode of this.getChildNodesByTagName('interface')) {
617
+ for (const ifaceNode of this.getElementsByTagName('interface')) {
527
618
  const field = ifaceNode.getField(name);
528
619
  if (field) {
529
620
  return field;
@@ -534,12 +625,12 @@ class SGComponent extends SGTag {
534
625
  * Return the first SGInterface node found, or insert a new one then return it
535
626
  */
536
627
  ensureInterfaceNode() {
537
- for (const el of this.childNodes) {
628
+ for (const el of this.elements) {
538
629
  if (el.tokens.startTagName.text.toLowerCase() === 'interface') {
539
630
  return el;
540
631
  }
541
632
  }
542
- return this.addChild(astUtils_1.createSGInterface());
633
+ return this.addChild((0, creators_1.createSGInterface)());
543
634
  }
544
635
  /**
545
636
  * Create or update a <field> interface element.
@@ -562,7 +653,7 @@ class SGComponent extends SGTag {
562
653
  * @returns true if a field was found and removed. Returns false if no field was found with that name
563
654
  */
564
655
  removeInterfaceField(id) {
565
- for (const ifaceNode of this.getChildNodesByTagName('interface')) {
656
+ for (const ifaceNode of this.getElementsByTagName('interface')) {
566
657
  if (ifaceNode.removeField(id)) {
567
658
  return true;
568
659
  }
@@ -570,10 +661,10 @@ class SGComponent extends SGTag {
570
661
  return false;
571
662
  }
572
663
  /**
573
- * Get an interface field with the specified name
574
- */
664
+ * Get an interface field with the specified name
665
+ */
575
666
  getInterfaceFunction(name) {
576
- for (const ifaceNode of this.getChildNodesByTagName('interface')) {
667
+ for (const ifaceNode of this.getElementsByTagName('interface')) {
577
668
  const func = ifaceNode.getFunction(name);
578
669
  if (func) {
579
670
  return func;
@@ -585,7 +676,7 @@ class SGComponent extends SGTag {
585
676
  * @returns true if a function was found and removed. Returns false if no function was found with that name
586
677
  */
587
678
  removeInterfaceFunction(name) {
588
- for (const ifaceNode of this.getChildNodesByTagName('interface')) {
679
+ for (const ifaceNode of this.getElementsByTagName('interface')) {
589
680
  if (ifaceNode.removeFunction(name)) {
590
681
  return true;
591
682
  }
@@ -595,20 +686,20 @@ class SGComponent extends SGTag {
595
686
  }
596
687
  exports.SGComponent = SGComponent;
597
688
  class SGAst {
598
- constructor(prolog, root, component) {
599
- this.prolog = prolog;
600
- this.root = root;
601
- this.component = component;
689
+ constructor(options = {}) {
690
+ this.prologElement = options.prologElement;
691
+ this.rootElement = options.rootElement;
692
+ this.componentElement = options.componentElement;
602
693
  }
603
694
  transpile(state) {
604
695
  const chunks = [];
605
696
  //write XML prolog
606
- if (this.prolog) {
607
- chunks.push(this.prolog.transpile(state));
697
+ if (this.prologElement) {
698
+ chunks.push(this.prologElement.transpile(state));
608
699
  }
609
- if (this.component) {
700
+ if (this.componentElement) {
610
701
  //write content
611
- chunks.push(this.component.transpile(state));
702
+ chunks.push(this.componentElement.transpile(state));
612
703
  }
613
704
  return new source_map_1.SourceNode(null, null, null, chunks);
614
705
  }