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
@@ -0,0 +1,720 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getAllRequiredSymbolNames = exports.ReferenceTypeWithDefault = exports.ParamTypeFromValueReferenceType = exports.ArrayDefaultTypeReferenceType = exports.BinaryOperatorReferenceType = exports.TypePropertyReferenceType = exports.ReferenceType = exports.referenceTypeFactory = void 0;
4
+ const reflection_1 = require("../astUtils/reflection");
5
+ const BscType_1 = require("./BscType");
6
+ const DynamicType_1 = require("./DynamicType");
7
+ const BscTypeKind_1 = require("./BscTypeKind");
8
+ const util_1 = require("../util");
9
+ function referenceTypeFactory(memberKey, fullName, flags, tableProvider) {
10
+ return new ReferenceType(memberKey, fullName, flags, tableProvider);
11
+ }
12
+ exports.referenceTypeFactory = referenceTypeFactory;
13
+ class ReferenceType extends BscType_1.BscType {
14
+ /**
15
+ * ReferenceTypes are used when the actual type may be resolved later from a Symbol table
16
+ * @param memberKey which key do we use to look up this type in the given table?
17
+ * @param fullName the full/display name for this type
18
+ * @param flags is this type available at typetime, runtime, etc.
19
+ * @param tableProvider function that returns a SymbolTable that we use for the lookup.
20
+ */
21
+ constructor(memberKey, fullName, flags, tableProvider) {
22
+ super(memberKey);
23
+ this.memberKey = memberKey;
24
+ this.fullName = fullName;
25
+ this.flags = flags;
26
+ this.tableProvider = tableProvider;
27
+ this.kind = BscTypeKind_1.BscTypeKind.ReferenceType;
28
+ this.circRefCount = 0;
29
+ this.referenceChain = new Set();
30
+ this.propertyTypeReference = new Map();
31
+ this.memberTypeReferences = new Map();
32
+ this.callFuncMemberTypeReferences = new Map();
33
+ this.futureMemberTableProvider = () => {
34
+ return {
35
+ name: `FutureMemberTableProvider: '${this.__identifier}'`,
36
+ getSymbolType: (innerName, innerOptions) => {
37
+ const resolvedType = this.resolve();
38
+ if (resolvedType) {
39
+ return resolvedType.getMemberType(innerName, innerOptions);
40
+ }
41
+ },
42
+ setCachedType: (innerName, innerResolvedTypeCacheEntry, options) => {
43
+ const resolvedType = this.resolve();
44
+ if (resolvedType) {
45
+ resolvedType.memberTable.setCachedType(innerName, innerResolvedTypeCacheEntry, options);
46
+ }
47
+ },
48
+ addSibling: (symbolTable) => {
49
+ var _a, _b;
50
+ const resolvedType = this.resolve();
51
+ if (resolvedType) {
52
+ (_b = (_a = resolvedType.memberTable) === null || _a === void 0 ? void 0 : _a.addSibling) === null || _b === void 0 ? void 0 : _b.call(_a, symbolTable);
53
+ }
54
+ }
55
+ };
56
+ };
57
+ this.futureCallFuncMemberTableProvider = () => {
58
+ return {
59
+ name: `FutureCallFuncMemberTableProvider: '${this.__identifier}'`,
60
+ getSymbolType: (innerName, innerOptions) => {
61
+ const resolvedType = this.resolve();
62
+ if ((0, reflection_1.isComponentType)(resolvedType)) {
63
+ return resolvedType.getCallFuncType(innerName, innerOptions);
64
+ }
65
+ },
66
+ setCachedType: (innerName, innerResolvedTypeCacheEntry, options) => {
67
+ const resolvedType = this.resolve();
68
+ if ((0, reflection_1.isComponentType)(resolvedType)) {
69
+ resolvedType.getCallFuncTable().setCachedType(innerName, innerResolvedTypeCacheEntry, options);
70
+ }
71
+ },
72
+ addSibling: (symbolTable) => {
73
+ var _a, _b;
74
+ const resolvedType = this.resolve();
75
+ if ((0, reflection_1.isComponentType)(resolvedType)) {
76
+ (_b = (_a = resolvedType.getCallFuncTable()) === null || _a === void 0 ? void 0 : _a.addSibling) === null || _b === void 0 ? void 0 : _b.call(_a, symbolTable);
77
+ }
78
+ }
79
+ };
80
+ };
81
+ // eslint-disable-next-line no-constructor-return
82
+ return new Proxy(this, {
83
+ get: (target, propName, receiver) => {
84
+ if (propName === '__reflection') {
85
+ // Cheeky way to get `isReferenceType` reflection to work
86
+ return this.__reflection;
87
+ }
88
+ if (propName === '__identifier') {
89
+ // Cheeky way to get `isReferenceType` reflection to work
90
+ return this.__identifier;
91
+ }
92
+ if (propName === 'fullName') {
93
+ return this.fullName;
94
+ }
95
+ if (propName === 'isResolvable') {
96
+ return () => {
97
+ var _a, _b;
98
+ let resultSoFar = this.resolve();
99
+ while (resultSoFar && (0, reflection_1.isReferenceType)(resultSoFar)) {
100
+ resultSoFar = (_b = (_a = resultSoFar).getTarget) === null || _b === void 0 ? void 0 : _b.call(_a);
101
+ }
102
+ return !!resultSoFar;
103
+ };
104
+ }
105
+ if (propName === 'getCircularReferenceInfo') {
106
+ return (stopAtTypes = []) => {
107
+ return this.getCircularReferenceInfo(stopAtTypes);
108
+ };
109
+ }
110
+ if (propName === 'getTarget') {
111
+ return () => {
112
+ return this.resolve();
113
+ };
114
+ }
115
+ if (propName === 'tableProvider') {
116
+ return this.tableProvider;
117
+ }
118
+ if (propName === 'isEqual') {
119
+ //Need to be able to check equality without resolution, because resolution need to check equality
120
+ //To see if you need to make a UnionType
121
+ return (targetType, data) => {
122
+ if (!targetType) {
123
+ return false;
124
+ }
125
+ const resolvedType = this.resolve();
126
+ let equal = false;
127
+ if (resolvedType && !(0, reflection_1.isReferenceType)(resolvedType)) {
128
+ equal = resolvedType.isEqual(targetType, data);
129
+ }
130
+ else if ((0, reflection_1.isReferenceType)(targetType)) {
131
+ equal = this.fullName.toLowerCase() === targetType.fullName.toLowerCase() &&
132
+ (this.tableProvider === targetType.tableProvider ||
133
+ this.tableProvider().name === targetType.tableProvider().name);
134
+ }
135
+ else {
136
+ equal = targetType.isEqual(this, data);
137
+ }
138
+ return equal;
139
+ };
140
+ }
141
+ if (propName === 'isTypeCompatible') {
142
+ //Need to be able to check equality without resolution, because resolution need to check equality
143
+ //To see if you need to make a UnionType
144
+ return (targetType, data) => {
145
+ if (!targetType) {
146
+ return false;
147
+ }
148
+ if ((0, reflection_1.isDynamicType)(targetType)) {
149
+ return true;
150
+ }
151
+ const resolvedType = this.resolve();
152
+ if (resolvedType && !(0, reflection_1.isReferenceType)(resolvedType)) {
153
+ return resolvedType.isTypeCompatible(targetType, data);
154
+ }
155
+ else if ((0, reflection_1.isReferenceType)(targetType)) {
156
+ return this.fullName.toLowerCase() === targetType.fullName.toLowerCase() &&
157
+ this.tableProvider === targetType.tableProvider;
158
+ }
159
+ return targetType.isTypeCompatible(this, data);
160
+ };
161
+ }
162
+ //There may be some need to specifically get members on ReferenceType in the future
163
+ // eg: if (Reflect.has(target, name)) {
164
+ // return Reflect.get(target, propName, receiver);
165
+ let innerType = this.resolve();
166
+ if (!innerType) {
167
+ // No real BscType found - we may need to handle some specific cases
168
+ if (propName === 'getMemberType') {
169
+ // We're looking for a member of a reference type
170
+ // Since we don't know what type this is, yet, return ReferenceType
171
+ return (memberName, options) => {
172
+ const resolvedType = this.resolve();
173
+ if (resolvedType) {
174
+ return resolvedType.getMemberType(memberName, options);
175
+ }
176
+ const refLookUp = `${memberName.toLowerCase()}-${options === null || options === void 0 ? void 0 : options.flags}`;
177
+ let memberTypeReference = this.memberTypeReferences.get(refLookUp);
178
+ if (memberTypeReference) {
179
+ return memberTypeReference;
180
+ }
181
+ memberTypeReference = new ReferenceType(memberName, this.makeMemberFullName(memberName), options.flags, this.futureMemberTableProvider);
182
+ this.memberTypeReferences.set(refLookUp, memberTypeReference);
183
+ return memberTypeReference;
184
+ };
185
+ }
186
+ else if (propName === 'getCallFuncType') {
187
+ // We're looking for a callfunc member of a reference type
188
+ // Since we don't know what type this is, yet, return ReferenceType
189
+ return (memberName, options) => {
190
+ const resolvedType = this.resolve();
191
+ if ((0, reflection_1.isComponentType)(resolvedType)) {
192
+ return resolvedType.getCallFuncType(memberName, options);
193
+ }
194
+ const refLookUp = `${memberName.toLowerCase()}-${options.flags}-callfunc`;
195
+ let callFuncMemberTypeReference = this.callFuncMemberTypeReferences.get(refLookUp);
196
+ if (callFuncMemberTypeReference) {
197
+ return callFuncMemberTypeReference;
198
+ }
199
+ callFuncMemberTypeReference = new ReferenceType(memberName, this.makeMemberFullName(memberName), options.flags, this.futureCallFuncMemberTableProvider);
200
+ this.callFuncMemberTypeReferences.set(refLookUp, callFuncMemberTypeReference);
201
+ return callFuncMemberTypeReference;
202
+ };
203
+ }
204
+ else if (propName === 'toString') {
205
+ // This type was never found
206
+ // For diagnostics, we should return the expected name of of the type
207
+ return () => this.fullName;
208
+ }
209
+ else if (propName === 'toTypeString') {
210
+ // For transpilation, we should 'dynamic'
211
+ return () => 'dynamic';
212
+ }
213
+ else if (propName === 'returnType') {
214
+ let propRefType = this.propertyTypeReference.get(propName);
215
+ if (!propRefType) {
216
+ propRefType = new TypePropertyReferenceType(this, propName);
217
+ this.propertyTypeReference.set(propName, propRefType);
218
+ }
219
+ return propRefType;
220
+ }
221
+ else if (propName === 'memberTable') {
222
+ return this.memberTable;
223
+ }
224
+ else if (propName === 'getMemberTable') {
225
+ return () => {
226
+ return this.memberTable;
227
+ };
228
+ }
229
+ else if (propName === 'callFuncTable') {
230
+ return this.callFuncMemberTable;
231
+ }
232
+ else if (propName === 'getCallFuncTable') {
233
+ return () => {
234
+ return this.callFuncMemberTable;
235
+ };
236
+ }
237
+ else if (propName === 'isTypeCompatible') {
238
+ return (targetType) => {
239
+ return (0, reflection_1.isDynamicType)(targetType);
240
+ };
241
+ }
242
+ else if (propName === 'isEqual') {
243
+ return (targetType) => {
244
+ if ((0, reflection_1.isReferenceType)(targetType)) {
245
+ return this.fullName.toLowerCase() === targetType.toString().toLowerCase() &&
246
+ this.tableProvider() === targetType.tableProvider();
247
+ }
248
+ return false;
249
+ };
250
+ }
251
+ else if (propName === 'addBuiltInInterfaces') {
252
+ // this is an unknown type. There is no use in adding built in interfaces
253
+ // return no-op function
254
+ return () => { };
255
+ }
256
+ else if (propName === 'hasAddedBuiltInInterfaces') {
257
+ // this is an unknown type. There is no use in adding built in interfaces
258
+ return true;
259
+ }
260
+ else if (propName === 'isBuiltIn') {
261
+ return false;
262
+ }
263
+ }
264
+ if (!innerType) {
265
+ innerType = DynamicType_1.DynamicType.instance;
266
+ }
267
+ const result = Reflect.get(innerType, propName, innerType);
268
+ return result;
269
+ },
270
+ set: (target, name, value, receiver) => {
271
+ //There may be some need to specifically set members on ReferenceType in the future
272
+ // eg: if (Reflect.has(target, name)) {
273
+ // return Reflect.set(target, name, value, receiver);
274
+ let innerType = this.resolve();
275
+ // Look for circular references
276
+ if (!innerType || this.referenceChain.has(innerType)) {
277
+ if (name === 'hasAddedBuiltInInterfaces') {
278
+ // ignore this
279
+ return true;
280
+ }
281
+ console.log(`Proxy set error`, name, value, innerType);
282
+ const error = new Error(`Reference Type Proxy set error: ${{ memberKey: memberKey, name: name, value: value }}`);
283
+ console.log(error.stack);
284
+ return false;
285
+ }
286
+ const result = Reflect.set(innerType, name, value, innerType);
287
+ this.referenceChain.clear();
288
+ return result;
289
+ }
290
+ });
291
+ }
292
+ getTarget() {
293
+ return this.resolve();
294
+ }
295
+ /**
296
+ * Resolves the type based on the original name and the table provider
297
+ */
298
+ resolve() {
299
+ var _a;
300
+ const symbolTable = this.tableProvider();
301
+ if (!symbolTable) {
302
+ return;
303
+ }
304
+ // Look for circular references
305
+ let resolvedType = symbolTable.getSymbolType(this.memberKey, { flags: this.flags, onlyCacheResolvedTypes: true });
306
+ if (!resolvedType) {
307
+ // could not find this member
308
+ return;
309
+ }
310
+ if ((0, reflection_1.isAnyReferenceType)(resolvedType)) {
311
+ // If this is a referenceType, keep digging down until we have a non reference Type.
312
+ while (resolvedType && (0, reflection_1.isAnyReferenceType)(resolvedType)) {
313
+ if (this.referenceChain.has(resolvedType)) {
314
+ // this is a circular reference
315
+ this.circRefCount++;
316
+ }
317
+ if (this.circRefCount > 1) {
318
+ //It is possible that we could properly resolve the case that one reference points to itself
319
+ //see test: '[Scope][symbolTable lookups with enhanced typing][finds correct class field type with default value enums are used]
320
+ return;
321
+ }
322
+ this.referenceChain.add(resolvedType);
323
+ resolvedType = (_a = resolvedType === null || resolvedType === void 0 ? void 0 : resolvedType.getTarget) === null || _a === void 0 ? void 0 : _a.call(resolvedType);
324
+ }
325
+ this.tableProvider().setCachedType(this.memberKey, { type: resolvedType }, { flags: this.flags });
326
+ }
327
+ if (resolvedType && !(0, reflection_1.isAnyReferenceType)(resolvedType)) {
328
+ this.circRefCount = 0;
329
+ this.referenceChain.clear();
330
+ }
331
+ return resolvedType;
332
+ }
333
+ get __reflection() {
334
+ return { name: 'ReferenceType' };
335
+ }
336
+ makeMemberFullName(memberName) {
337
+ return this.fullName + '.' + memberName;
338
+ }
339
+ getCircularReferenceInfo(stopAtTypes = []) {
340
+ this.resolve();
341
+ const isCircRef = this.circRefCount > 1;
342
+ const referenceChainNames = [];
343
+ stopAtTypes.push(this);
344
+ if (isCircRef) {
345
+ referenceChainNames.push(this.fullName);
346
+ for (const chainItem of this.referenceChain) {
347
+ if (!(0, reflection_1.isReferenceType)(chainItem) || chainItem === this) {
348
+ continue;
349
+ }
350
+ if (stopAtTypes.map(t => t.fullName).includes(chainItem.fullName)) {
351
+ break;
352
+ }
353
+ const chainItemCircInfo = chainItem.getCircularReferenceInfo(stopAtTypes);
354
+ referenceChainNames.push(...chainItemCircInfo.referenceChainNames);
355
+ }
356
+ }
357
+ return { isCircularReference: isCircRef, referenceChainNames: referenceChainNames };
358
+ }
359
+ }
360
+ exports.ReferenceType = ReferenceType;
361
+ /**
362
+ * Use this class for when you need to reference a property of a BscType, and that property is also a BscType,
363
+ * Especially when the instance with the property may not have been instantiated/discovered yet
364
+ *
365
+ * For Example, FunctionType.returnType --- if the FunctionExpression has not been walked yet, it will be a ReferenceType
366
+ * if we just access .returnType on a ReferenceType that doesn't have access to an actual FunctionType yet, .returnType will be undefined
367
+ * So when we use this class, it maintains that reference to a potential ReferenceType, and this class will change from
368
+ * returning undefined to the ACTUAL .returnType when the ReferenceType can be resolved.
369
+ *
370
+ * This is really cool. It's like programming with time-travel.
371
+ */
372
+ class TypePropertyReferenceType extends BscType_1.BscType {
373
+ constructor(outerType, propertyName) {
374
+ super(propertyName);
375
+ this.outerType = outerType;
376
+ this.propertyName = propertyName;
377
+ // eslint-disable-next-line no-constructor-return
378
+ return new Proxy(this, {
379
+ get: (target, propName, receiver) => {
380
+ if (propName === '__reflection') {
381
+ // Cheeky way to get `isTypePropertyReferenceType` reflection to work
382
+ return { name: 'TypePropertyReferenceType' };
383
+ }
384
+ if (propName === 'outerType') {
385
+ return outerType;
386
+ }
387
+ if (propName === 'getTarget') {
388
+ return () => {
389
+ return this.getTarget();
390
+ };
391
+ }
392
+ if (propName === 'isResolvable') {
393
+ return () => {
394
+ var _a;
395
+ return !!((0, reflection_1.isAnyReferenceType)(this.outerType) ? this.outerType.getTarget() : (_a = this.outerType) === null || _a === void 0 ? void 0 : _a.isResolvable());
396
+ };
397
+ }
398
+ if ((0, reflection_1.isAnyReferenceType)(this.outerType) && !this.outerType.isResolvable()) {
399
+ if (propName === 'getMemberType') {
400
+ //If we're calling `getMemberType()`, we need it to proxy to using the actual symbol table
401
+ //So if that symbol is ever populated, the correct type is passed through
402
+ return (memberName, options) => {
403
+ const fullMemberName = this.outerType.toString() + '.' + memberName;
404
+ return new ReferenceType(memberName, fullMemberName, options.flags, () => {
405
+ return {
406
+ name: `TypePropertyReferenceType : '${fullMemberName}'`,
407
+ getSymbolType: (innerName, innerOptions) => {
408
+ var _a, _b;
409
+ return (_b = (_a = this.outerType) === null || _a === void 0 ? void 0 : _a[this.propertyName]) === null || _b === void 0 ? void 0 : _b.getMemberType(innerName, innerOptions);
410
+ },
411
+ setCachedType: (innerName, innerTypeCacheEntry, innerOptions) => {
412
+ var _a, _b;
413
+ return (_b = (_a = this.outerType) === null || _a === void 0 ? void 0 : _a[this.propertyName]) === null || _b === void 0 ? void 0 : _b.memberTable.setCachedType(innerName, innerTypeCacheEntry, innerOptions);
414
+ },
415
+ addSibling: (symbolTable) => {
416
+ var _a, _b, _c, _d;
417
+ return (_d = (_c = (_b = (_a = this.outerType) === null || _a === void 0 ? void 0 : _a[this.propertyName]) === null || _b === void 0 ? void 0 : _b.memberTable) === null || _c === void 0 ? void 0 : _c.addSibling) === null || _d === void 0 ? void 0 : _d.call(_c, symbolTable);
418
+ }
419
+ };
420
+ });
421
+ };
422
+ }
423
+ if (propName === 'isResolvable') {
424
+ return () => false;
425
+ }
426
+ }
427
+ let inner = this.getTarget();
428
+ if (!inner) {
429
+ inner = DynamicType_1.DynamicType.instance;
430
+ }
431
+ if (inner) {
432
+ const result = Reflect.get(inner, propName, inner);
433
+ return result;
434
+ }
435
+ },
436
+ set: (target, name, value, receiver) => {
437
+ //There may be some need to specifically set members on ReferenceType in the future
438
+ // eg: if (Reflect.has(target, name)) {
439
+ // return Reflect.set(target, name, value, receiver);
440
+ let inner = this.outerType[this.propertyName];
441
+ if (inner) {
442
+ const result = Reflect.set(inner, name, value, inner);
443
+ return result;
444
+ }
445
+ }
446
+ });
447
+ }
448
+ getTarget() {
449
+ var _a;
450
+ let actualOuterType = this.outerType;
451
+ if ((0, reflection_1.isAnyReferenceType)(this.outerType)) {
452
+ if (this.outerType.isResolvable()) {
453
+ actualOuterType = (_a = this.outerType) === null || _a === void 0 ? void 0 : _a.getTarget();
454
+ }
455
+ }
456
+ return actualOuterType === null || actualOuterType === void 0 ? void 0 : actualOuterType[this.propertyName];
457
+ }
458
+ }
459
+ exports.TypePropertyReferenceType = TypePropertyReferenceType;
460
+ /**
461
+ * Use this class for when there is a binary operator and either the left hand side and/or the right hand side
462
+ * are ReferenceTypes
463
+ */
464
+ class BinaryOperatorReferenceType extends BscType_1.BscType {
465
+ constructor(leftType, operator, rightType, binaryOpResolver) {
466
+ super(operator.text);
467
+ this.leftType = leftType;
468
+ this.operator = operator;
469
+ this.rightType = rightType;
470
+ // eslint-disable-next-line no-constructor-return
471
+ return new Proxy(this, {
472
+ get: (target, propName, receiver) => {
473
+ var _a, _b;
474
+ if (propName === '__reflection') {
475
+ // Cheeky way to get `BinaryOperatorReferenceType` reflection to work
476
+ return { name: 'BinaryOperatorReferenceType' };
477
+ }
478
+ if (propName === 'leftType') {
479
+ return leftType;
480
+ }
481
+ if (propName === 'rightType') {
482
+ return rightType;
483
+ }
484
+ let resultType = (_a = this.cachedType) !== null && _a !== void 0 ? _a : DynamicType_1.DynamicType.instance;
485
+ if (!this.cachedType) {
486
+ if (((0, reflection_1.isAnyReferenceType)(this.leftType) && !this.leftType.isResolvable()) ||
487
+ ((0, reflection_1.isAnyReferenceType)(this.rightType) && !this.rightType.isResolvable())) {
488
+ if (propName === 'isResolvable') {
489
+ return () => false;
490
+ }
491
+ if (propName === 'getTarget') {
492
+ return () => undefined;
493
+ }
494
+ }
495
+ else {
496
+ resultType = (_b = binaryOpResolver(this.leftType, this.operator, this.rightType)) !== null && _b !== void 0 ? _b : DynamicType_1.DynamicType.instance;
497
+ this.cachedType = resultType;
498
+ }
499
+ }
500
+ if (resultType) {
501
+ const result = Reflect.get(resultType, propName, resultType);
502
+ return result;
503
+ }
504
+ }
505
+ });
506
+ }
507
+ }
508
+ exports.BinaryOperatorReferenceType = BinaryOperatorReferenceType;
509
+ /**
510
+ * Use this class for when there is a presumable array type that is a referenceType
511
+ */
512
+ class ArrayDefaultTypeReferenceType extends BscType_1.BscType {
513
+ constructor(objType) {
514
+ super('ArrayDefaultType');
515
+ this.objType = objType;
516
+ // eslint-disable-next-line no-constructor-return
517
+ return new Proxy(this, {
518
+ get: (target, propName, receiver) => {
519
+ if (propName === '__reflection') {
520
+ // Cheeky way to get `ArrayDefaultTypeReferenceType` reflection to work
521
+ return { name: 'ArrayDefaultTypeReferenceType' };
522
+ }
523
+ if (propName === 'objType') {
524
+ return objType;
525
+ }
526
+ if (propName === 'getTarget') {
527
+ return () => {
528
+ if ((0, reflection_1.isReferenceType)(this.objType)) {
529
+ this.objType.getTarget();
530
+ }
531
+ return this.objType;
532
+ };
533
+ }
534
+ let resultType = DynamicType_1.DynamicType.instance;
535
+ if (((0, reflection_1.isAnyReferenceType)(this.objType) && !this.objType.isResolvable())) {
536
+ if (propName === 'isResolvable') {
537
+ return () => false;
538
+ }
539
+ if (propName === 'getTarget') {
540
+ return () => undefined;
541
+ }
542
+ }
543
+ else {
544
+ resultType = util_1.util.getIteratorDefaultType(this.objType);
545
+ }
546
+ if (resultType) {
547
+ const result = Reflect.get(resultType, propName, resultType);
548
+ return result;
549
+ }
550
+ }
551
+ });
552
+ }
553
+ }
554
+ exports.ArrayDefaultTypeReferenceType = ArrayDefaultTypeReferenceType;
555
+ /**
556
+ * Used for when a Param's initial value is unresolved
557
+ * Generally, this will be resolved later *except* for Enum
558
+ * Enum Types will have an initial value of an EnumMemberType, but the param
559
+ * should be an EnumType
560
+ */
561
+ class ParamTypeFromValueReferenceType extends BscType_1.BscType {
562
+ constructor(objType) {
563
+ super('ParamInitialValueType');
564
+ this.objType = objType;
565
+ // eslint-disable-next-line no-constructor-return
566
+ return new Proxy(this, {
567
+ get: (target, propName, receiver) => {
568
+ var _a;
569
+ if (propName === '__reflection') {
570
+ // Cheeky way to get reflection to work
571
+ return { name: 'ParamTypeFromValueReferenceType' };
572
+ }
573
+ if (propName === 'objType') {
574
+ return objType;
575
+ }
576
+ if (propName === 'getTarget') {
577
+ return () => {
578
+ if (this.cachedType) {
579
+ return this.cachedType;
580
+ }
581
+ if ((0, reflection_1.isReferenceType)(this.objType)) {
582
+ this.objType.getTarget();
583
+ }
584
+ return this.objType;
585
+ };
586
+ }
587
+ let resultType = (_a = this.cachedType) !== null && _a !== void 0 ? _a : DynamicType_1.DynamicType.instance;
588
+ if (!this.cachedType) {
589
+ if (((0, reflection_1.isAnyReferenceType)(this.objType) && !this.objType.isResolvable())) {
590
+ if (propName === 'isResolvable') {
591
+ return () => false;
592
+ }
593
+ if (propName === 'getTarget') {
594
+ return () => undefined;
595
+ }
596
+ }
597
+ else {
598
+ resultType = util_1.util.getDefaultTypeFromValueType(this.objType);
599
+ this.cachedType = resultType;
600
+ }
601
+ }
602
+ if (resultType) {
603
+ const result = Reflect.get(resultType, propName, resultType);
604
+ return result;
605
+ }
606
+ }
607
+ });
608
+ }
609
+ }
610
+ exports.ParamTypeFromValueReferenceType = ParamTypeFromValueReferenceType;
611
+ /**
612
+ * Used when an IntersectionType has at least one member that may have default dynamic members.
613
+ * If the inner type is not resolvable, this type will resolve to the given type instead.
614
+ * @example
615
+ * ```brighterscript
616
+ * interface HasAge
617
+ * age as integer
618
+ * end interface
619
+ *
620
+ * type foo = HasAge and roAssociativeArray
621
+ *
622
+ * sub useFoo(f as foo)
623
+ * print f.age ' f.age is an integer
624
+ * print f.doesExist("key") ' will result in a boolean, from roAssociativeArray
625
+ * print f.someKey ' no idea - so this is dynamic, and will not cause a validation error
626
+ * end sub
627
+ * ```
628
+ */
629
+ class ReferenceTypeWithDefault extends BscType_1.BscType {
630
+ constructor(baseType, defaultType) {
631
+ super('ReferenceTypeWithDefault');
632
+ this.baseType = baseType;
633
+ this.defaultType = defaultType;
634
+ // eslint-disable-next-line no-constructor-return
635
+ return new Proxy(this, {
636
+ get: (target, propName, receiver) => {
637
+ if (propName === '__reflection') {
638
+ // Cheeky way to get `isReferenceTypeWithDefault` reflection to work
639
+ return { name: 'ReferenceTypeWithDefault' };
640
+ }
641
+ if (propName === 'isResolvable') {
642
+ return () => {
643
+ return true;
644
+ };
645
+ }
646
+ let innerType = this.getTarget();
647
+ if (!innerType) {
648
+ innerType = this.defaultType;
649
+ }
650
+ if (innerType) {
651
+ const result = Reflect.get(innerType, propName, innerType);
652
+ return result;
653
+ }
654
+ }
655
+ });
656
+ }
657
+ getTarget() {
658
+ var _a;
659
+ if ((0, reflection_1.isAnyReferenceType)(this.baseType)) {
660
+ if (this.baseType.isResolvable()) {
661
+ return (_a = this.baseType) === null || _a === void 0 ? void 0 : _a.getTarget();
662
+ }
663
+ }
664
+ return this.baseType;
665
+ }
666
+ }
667
+ exports.ReferenceTypeWithDefault = ReferenceTypeWithDefault;
668
+ /**
669
+ * Gives an array of all the symbol names that need to be resolved to make the given reference type be resolved
670
+ */
671
+ function getAllRequiredSymbolNames(refType, namespaceLower) {
672
+ if (refType.isResolvable()) {
673
+ return [];
674
+ }
675
+ if ((0, reflection_1.isReferenceType)(refType)) {
676
+ return [{ name: refType.fullName, namespacedName: namespaceLower ? `${namespaceLower}.${refType.fullName}` : null }];
677
+ }
678
+ if ((0, reflection_1.isTypePropertyReferenceType)(refType)) {
679
+ const outer = refType.outerType;
680
+ if ((0, reflection_1.isAnyReferenceType)(outer)) {
681
+ return getAllRequiredSymbolNames(outer);
682
+ }
683
+ else {
684
+ return [];
685
+ }
686
+ }
687
+ if ((0, reflection_1.isArrayDefaultTypeReferenceType)(refType)) {
688
+ const objType = refType.objType;
689
+ if ((0, reflection_1.isAnyReferenceType)(objType)) {
690
+ return getAllRequiredSymbolNames(objType);
691
+ }
692
+ else {
693
+ return [];
694
+ }
695
+ }
696
+ if ((0, reflection_1.isBinaryOperatorReferenceType)(refType)) {
697
+ const left = refType.leftType;
698
+ const right = refType.rightType;
699
+ const result = [];
700
+ if ((0, reflection_1.isAnyReferenceType)(left)) {
701
+ result.push(...getAllRequiredSymbolNames(left, namespaceLower));
702
+ }
703
+ if ((0, reflection_1.isAnyReferenceType)(right)) {
704
+ result.push(...getAllRequiredSymbolNames(right, namespaceLower));
705
+ }
706
+ return result;
707
+ }
708
+ if ((0, reflection_1.isParamTypeFromValueReferenceType)(refType)) {
709
+ const objType = refType.objType;
710
+ if ((0, reflection_1.isAnyReferenceType)(objType)) {
711
+ return getAllRequiredSymbolNames(objType);
712
+ }
713
+ else {
714
+ return [];
715
+ }
716
+ }
717
+ return [];
718
+ }
719
+ exports.getAllRequiredSymbolNames = getAllRequiredSymbolNames;
720
+ //# sourceMappingURL=ReferenceType.js.map