brighterscript 0.66.0-alpha.8 → 0.67.0

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 (472) hide show
  1. package/CHANGELOG.md +120 -71
  2. package/README.md +14 -418
  3. package/dist/BsConfig.d.ts +25 -2
  4. package/dist/Cache.js +3 -3
  5. package/dist/Cache.js.map +1 -1
  6. package/dist/CodeActionUtil.d.ts +3 -3
  7. package/dist/CodeActionUtil.js.map +1 -1
  8. package/dist/CommentFlagProcessor.d.ts +3 -4
  9. package/dist/CommentFlagProcessor.js +4 -3
  10. package/dist/CommentFlagProcessor.js.map +1 -1
  11. package/dist/DependencyGraph.js +8 -8
  12. package/dist/DependencyGraph.js.map +1 -1
  13. package/dist/DiagnosticFilterer.d.ts +8 -4
  14. package/dist/DiagnosticFilterer.js +71 -38
  15. package/dist/DiagnosticFilterer.js.map +1 -1
  16. package/dist/DiagnosticMessages.d.ts +15 -36
  17. package/dist/DiagnosticMessages.js +15 -61
  18. package/dist/DiagnosticMessages.js.map +1 -1
  19. package/dist/DiagnosticSeverityAdjuster.js +3 -0
  20. package/dist/DiagnosticSeverityAdjuster.js.map +1 -1
  21. package/dist/FunctionScope.d.ts +2 -3
  22. package/dist/FunctionScope.js +0 -3
  23. package/dist/FunctionScope.js.map +1 -1
  24. package/dist/LanguageServer.d.ts +1 -2
  25. package/dist/LanguageServer.js +29 -35
  26. package/dist/LanguageServer.js.map +1 -1
  27. package/dist/Logger.d.ts +5 -9
  28. package/dist/Logger.js +18 -22
  29. package/dist/Logger.js.map +1 -1
  30. package/dist/PluginInterface.d.ts +13 -15
  31. package/dist/PluginInterface.js +16 -70
  32. package/dist/PluginInterface.js.map +1 -1
  33. package/dist/Program.d.ts +105 -138
  34. package/dist/Program.js +479 -702
  35. package/dist/Program.js.map +1 -1
  36. package/dist/ProgramBuilder.d.ts +8 -19
  37. package/dist/ProgramBuilder.js +82 -87
  38. package/dist/ProgramBuilder.js.map +1 -1
  39. package/dist/Scope.d.ts +56 -46
  40. package/dist/Scope.js +281 -217
  41. package/dist/Scope.js.map +1 -1
  42. package/dist/Stopwatch.js +1 -1
  43. package/dist/Stopwatch.js.map +1 -1
  44. package/dist/SymbolTable.d.ts +12 -68
  45. package/dist/SymbolTable.js +28 -213
  46. package/dist/SymbolTable.js.map +1 -1
  47. package/dist/XmlScope.d.ts +5 -7
  48. package/dist/XmlScope.js +36 -76
  49. package/dist/XmlScope.js.map +1 -1
  50. package/dist/astUtils/{Editor.d.ts → AstEditor.d.ts} +1 -6
  51. package/dist/astUtils/{Editor.js → AstEditor.js} +3 -9
  52. package/dist/astUtils/AstEditor.js.map +1 -0
  53. package/dist/astUtils/{Editor.spec.js → AstEditor.spec.js} +6 -10
  54. package/dist/astUtils/AstEditor.spec.js.map +1 -0
  55. package/dist/astUtils/creators.d.ts +8 -19
  56. package/dist/astUtils/creators.js +22 -54
  57. package/dist/astUtils/creators.js.map +1 -1
  58. package/dist/astUtils/creators.spec.js +0 -10
  59. package/dist/astUtils/creators.spec.js.map +1 -1
  60. package/dist/astUtils/reflection.d.ts +45 -81
  61. package/dist/astUtils/reflection.js +157 -220
  62. package/dist/astUtils/reflection.js.map +1 -1
  63. package/dist/astUtils/reflection.spec.js +19 -96
  64. package/dist/astUtils/reflection.spec.js.map +1 -1
  65. package/dist/astUtils/stackedVisitor.spec.js.map +1 -1
  66. package/dist/astUtils/visitors.d.ts +14 -18
  67. package/dist/astUtils/visitors.js +9 -22
  68. package/dist/astUtils/visitors.js.map +1 -1
  69. package/dist/astUtils/visitors.spec.js +9 -62
  70. package/dist/astUtils/visitors.spec.js.map +1 -1
  71. package/dist/astUtils/xml.d.ts +9 -9
  72. package/dist/astUtils/xml.js +6 -6
  73. package/dist/astUtils/xml.js.map +1 -1
  74. package/dist/bscPlugin/BscPlugin.d.ts +8 -11
  75. package/dist/bscPlugin/BscPlugin.js +21 -29
  76. package/dist/bscPlugin/BscPlugin.js.map +1 -1
  77. package/dist/bscPlugin/CallExpressionInfo.d.ts +6 -5
  78. package/dist/bscPlugin/CallExpressionInfo.js +2 -2
  79. package/dist/bscPlugin/CallExpressionInfo.js.map +1 -1
  80. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js +11 -11
  81. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js.map +1 -1
  82. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js +4 -4
  83. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js.map +1 -1
  84. package/dist/bscPlugin/completions/CompletionsProcessor.d.ts +1 -49
  85. package/dist/bscPlugin/completions/CompletionsProcessor.js +23 -424
  86. package/dist/bscPlugin/completions/CompletionsProcessor.js.map +1 -1
  87. package/dist/bscPlugin/definition/DefinitionProvider.d.ts +13 -0
  88. package/dist/bscPlugin/definition/DefinitionProvider.js +200 -0
  89. package/dist/bscPlugin/definition/DefinitionProvider.js.map +1 -0
  90. package/dist/bscPlugin/definition/DefinitionProvider.spec.js +87 -0
  91. package/dist/bscPlugin/definition/DefinitionProvider.spec.js.map +1 -0
  92. package/dist/bscPlugin/hover/HoverProcessor.d.ts +3 -7
  93. package/dist/bscPlugin/hover/HoverProcessor.js +88 -128
  94. package/dist/bscPlugin/hover/HoverProcessor.js.map +1 -1
  95. package/dist/bscPlugin/hover/HoverProcessor.spec.js +24 -336
  96. package/dist/bscPlugin/hover/HoverProcessor.spec.js.map +1 -1
  97. package/dist/bscPlugin/references/ReferencesProvider.d.ts +12 -0
  98. package/dist/bscPlugin/references/ReferencesProvider.js +56 -0
  99. package/dist/bscPlugin/references/ReferencesProvider.js.map +1 -0
  100. package/dist/bscPlugin/references/ReferencesProvider.spec.js +51 -0
  101. package/dist/bscPlugin/references/ReferencesProvider.spec.js.map +1 -0
  102. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.d.ts +0 -1
  103. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js +5 -49
  104. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js.map +1 -1
  105. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js +0 -22
  106. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js.map +1 -1
  107. package/dist/bscPlugin/symbols/DocumentSymbolProcessor.d.ts +7 -0
  108. package/dist/bscPlugin/symbols/DocumentSymbolProcessor.js +22 -0
  109. package/dist/bscPlugin/symbols/DocumentSymbolProcessor.js.map +1 -0
  110. package/dist/bscPlugin/symbols/DocumentSymbolProcessor.spec.js +290 -0
  111. package/dist/bscPlugin/symbols/DocumentSymbolProcessor.spec.js.map +1 -0
  112. package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.d.ts +7 -0
  113. package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.js +26 -0
  114. package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.js.map +1 -0
  115. package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.spec.js +245 -0
  116. package/dist/bscPlugin/symbols/WorkspaceSymbolProcessor.spec.js.map +1 -0
  117. package/dist/bscPlugin/symbols/symbolUtils.d.ts +5 -0
  118. package/dist/bscPlugin/symbols/symbolUtils.js +140 -0
  119. package/dist/bscPlugin/symbols/symbolUtils.js.map +1 -0
  120. package/dist/bscPlugin/transpile/{BrsFileTranspileProcessor.d.ts → BrsFilePreTranspileProcessor.d.ts} +2 -4
  121. package/dist/bscPlugin/transpile/{BrsFileTranspileProcessor.js → BrsFilePreTranspileProcessor.js} +15 -36
  122. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js.map +1 -0
  123. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.js +46 -0
  124. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.js.map +1 -0
  125. package/dist/bscPlugin/validation/BrsFileValidator.d.ts +1 -0
  126. package/dist/bscPlugin/validation/BrsFileValidator.js +30 -41
  127. package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -1
  128. package/dist/bscPlugin/validation/BrsFileValidator.spec.js +2 -2
  129. package/dist/bscPlugin/validation/BrsFileValidator.spec.js.map +1 -1
  130. package/dist/bscPlugin/validation/ProgramValidator.d.ts +3 -3
  131. package/dist/bscPlugin/validation/ProgramValidator.js +6 -6
  132. package/dist/bscPlugin/validation/ProgramValidator.js.map +1 -1
  133. package/dist/bscPlugin/validation/ScopeValidator.d.ts +6 -28
  134. package/dist/bscPlugin/validation/ScopeValidator.js +166 -387
  135. package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -1
  136. package/dist/bscPlugin/validation/XmlFileValidator.js +9 -9
  137. package/dist/bscPlugin/validation/XmlFileValidator.js.map +1 -1
  138. package/dist/diagnosticUtils.d.ts +2 -3
  139. package/dist/diagnosticUtils.js +5 -5
  140. package/dist/diagnosticUtils.js.map +1 -1
  141. package/dist/examples/plugins/removePrint.js +1 -1
  142. package/dist/examples/plugins/removePrint.js.map +1 -1
  143. package/dist/files/BrsFile.Class.spec.js +143 -114
  144. package/dist/files/BrsFile.Class.spec.js.map +1 -1
  145. package/dist/files/BrsFile.d.ts +61 -83
  146. package/dist/files/BrsFile.js +552 -607
  147. package/dist/files/BrsFile.js.map +1 -1
  148. package/dist/files/BrsFile.spec.js +1365 -1201
  149. package/dist/files/BrsFile.spec.js.map +1 -1
  150. package/dist/files/XmlFile.d.ts +28 -56
  151. package/dist/files/XmlFile.js +103 -89
  152. package/dist/files/XmlFile.js.map +1 -1
  153. package/dist/files/XmlFile.spec.js +179 -122
  154. package/dist/files/XmlFile.spec.js.map +1 -1
  155. package/dist/files/tests/imports.spec.js +19 -29
  156. package/dist/files/tests/imports.spec.js.map +1 -1
  157. package/dist/files/tests/optionalChaning.spec.js +14 -14
  158. package/dist/files/tests/optionalChaning.spec.js.map +1 -1
  159. package/dist/globalCallables.js +83 -88
  160. package/dist/globalCallables.js.map +1 -1
  161. package/dist/index.d.ts +1 -9
  162. package/dist/index.js +1 -9
  163. package/dist/index.js.map +1 -1
  164. package/dist/interfaces.d.ts +173 -423
  165. package/dist/interfaces.js +0 -24
  166. package/dist/interfaces.js.map +1 -1
  167. package/dist/lexer/Lexer.d.ts +9 -15
  168. package/dist/lexer/Lexer.js +35 -46
  169. package/dist/lexer/Lexer.js.map +1 -1
  170. package/dist/lexer/Lexer.spec.js +48 -40
  171. package/dist/lexer/Lexer.spec.js.map +1 -1
  172. package/dist/lexer/Token.d.ts +1 -5
  173. package/dist/lexer/Token.js +1 -1
  174. package/dist/lexer/Token.js.map +1 -1
  175. package/dist/lexer/TokenKind.d.ts +0 -6
  176. package/dist/lexer/TokenKind.js +2 -14
  177. package/dist/lexer/TokenKind.js.map +1 -1
  178. package/dist/logging.d.ts +9 -0
  179. package/dist/logging.js +16 -0
  180. package/dist/logging.js.map +1 -0
  181. package/dist/parser/AstNode.d.ts +6 -90
  182. package/dist/parser/AstNode.js +5 -96
  183. package/dist/parser/AstNode.js.map +1 -1
  184. package/dist/parser/AstNode.spec.js.map +1 -1
  185. package/dist/parser/BrsTranspileState.d.ts +3 -4
  186. package/dist/parser/BrsTranspileState.js +2 -3
  187. package/dist/parser/BrsTranspileState.js.map +1 -1
  188. package/dist/parser/Expression.d.ts +114 -137
  189. package/dist/parser/Expression.js +244 -373
  190. package/dist/parser/Expression.js.map +1 -1
  191. package/dist/parser/Parser.Class.spec.js +19 -46
  192. package/dist/parser/Parser.Class.spec.js.map +1 -1
  193. package/dist/parser/Parser.d.ts +18 -14
  194. package/dist/parser/Parser.js +196 -175
  195. package/dist/parser/Parser.js.map +1 -1
  196. package/dist/parser/Parser.spec.d.ts +0 -2
  197. package/dist/parser/Parser.spec.js +10 -674
  198. package/dist/parser/Parser.spec.js.map +1 -1
  199. package/dist/parser/SGParser.d.ts +6 -44
  200. package/dist/parser/SGParser.js +198 -194
  201. package/dist/parser/SGParser.js.map +1 -1
  202. package/dist/parser/SGParser.spec.js +11 -14
  203. package/dist/parser/SGParser.spec.js.map +1 -1
  204. package/dist/parser/SGTypes.d.ts +52 -280
  205. package/dist/parser/SGTypes.js +185 -562
  206. package/dist/parser/SGTypes.js.map +1 -1
  207. package/dist/parser/Statement.d.ts +140 -172
  208. package/dist/parser/Statement.js +201 -337
  209. package/dist/parser/Statement.js.map +1 -1
  210. package/dist/parser/Statement.spec.js.map +1 -1
  211. package/dist/parser/TranspileState.d.ts +3 -2
  212. package/dist/parser/TranspileState.js +8 -10
  213. package/dist/parser/TranspileState.js.map +1 -1
  214. package/dist/parser/tests/Parser.spec.js +3 -5
  215. package/dist/parser/tests/Parser.spec.js.map +1 -1
  216. package/dist/parser/tests/controlFlow/For.spec.js +8 -16
  217. package/dist/parser/tests/controlFlow/For.spec.js.map +1 -1
  218. package/dist/parser/tests/controlFlow/ForEach.spec.js +6 -12
  219. package/dist/parser/tests/controlFlow/ForEach.spec.js.map +1 -1
  220. package/dist/parser/tests/controlFlow/While.spec.js +4 -8
  221. package/dist/parser/tests/controlFlow/While.spec.js.map +1 -1
  222. package/dist/parser/tests/expression/Call.spec.js +4 -4
  223. package/dist/parser/tests/expression/Call.spec.js.map +1 -1
  224. package/dist/parser/tests/expression/Indexing.spec.js +25 -0
  225. package/dist/parser/tests/expression/Indexing.spec.js.map +1 -1
  226. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js +73 -29
  227. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js.map +1 -1
  228. package/dist/parser/tests/expression/RegexLiteralExpression.spec.js +10 -10
  229. package/dist/parser/tests/expression/RegexLiteralExpression.spec.js.map +1 -1
  230. package/dist/parser/tests/expression/SourceLiteralExpression.spec.js +24 -24
  231. package/dist/parser/tests/expression/SourceLiteralExpression.spec.js.map +1 -1
  232. package/dist/parser/tests/expression/TemplateStringExpression.spec.js +47 -35
  233. package/dist/parser/tests/expression/TemplateStringExpression.spec.js.map +1 -1
  234. package/dist/parser/tests/expression/TernaryExpression.spec.js +83 -36
  235. package/dist/parser/tests/expression/TernaryExpression.spec.js.map +1 -1
  236. package/dist/parser/tests/expression/UnaryExpression.spec.js +2 -2
  237. package/dist/parser/tests/expression/UnaryExpression.spec.js.map +1 -1
  238. package/dist/parser/tests/statement/ConstStatement.spec.js +26 -27
  239. package/dist/parser/tests/statement/ConstStatement.spec.js.map +1 -1
  240. package/dist/parser/tests/statement/Continue.spec.js +2 -2
  241. package/dist/parser/tests/statement/Continue.spec.js.map +1 -1
  242. package/dist/parser/tests/statement/Dim.spec.js.map +1 -1
  243. package/dist/parser/tests/statement/Enum.spec.js +393 -90
  244. package/dist/parser/tests/statement/Enum.spec.js.map +1 -1
  245. package/dist/parser/tests/statement/For.spec.js +6 -6
  246. package/dist/parser/tests/statement/For.spec.js.map +1 -1
  247. package/dist/parser/tests/statement/ForEach.spec.js +4 -4
  248. package/dist/parser/tests/statement/ForEach.spec.js.map +1 -1
  249. package/dist/parser/tests/statement/Function.spec.js +1 -1
  250. package/dist/parser/tests/statement/Function.spec.js.map +1 -1
  251. package/dist/parser/tests/statement/InterfaceStatement.spec.js +18 -18
  252. package/dist/parser/tests/statement/InterfaceStatement.spec.js.map +1 -1
  253. package/dist/parser/tests/statement/Misc.spec.js.map +1 -1
  254. package/dist/parser/tests/statement/PrintStatement.spec.js +13 -16
  255. package/dist/parser/tests/statement/PrintStatement.spec.js.map +1 -1
  256. package/dist/parser/tests/statement/ReturnStatement.spec.js +3 -5
  257. package/dist/parser/tests/statement/ReturnStatement.spec.js.map +1 -1
  258. package/dist/parser/tests/statement/Set.spec.js +13 -26
  259. package/dist/parser/tests/statement/Set.spec.js.map +1 -1
  260. package/dist/parser/tests/statement/Throw.spec.js.map +1 -1
  261. package/dist/parser/tests/statement/TryCatch.spec.js.map +1 -1
  262. package/dist/preprocessor/Chunk.js +1 -2
  263. package/dist/preprocessor/Chunk.js.map +1 -1
  264. package/dist/preprocessor/Preprocessor.d.ts +3 -4
  265. package/dist/preprocessor/Preprocessor.js +3 -3
  266. package/dist/preprocessor/Preprocessor.js.map +1 -1
  267. package/dist/preprocessor/PreprocessorParser.js +8 -1
  268. package/dist/preprocessor/PreprocessorParser.js.map +1 -1
  269. package/dist/roku-types/data.json +293 -243
  270. package/dist/roku-types/index.d.ts +38 -17
  271. package/dist/types/ArrayType.d.ts +4 -9
  272. package/dist/types/ArrayType.js +24 -72
  273. package/dist/types/ArrayType.js.map +1 -1
  274. package/dist/types/ArrayType.spec.js +10 -39
  275. package/dist/types/ArrayType.spec.js.map +1 -1
  276. package/dist/types/BooleanType.d.ts +4 -8
  277. package/dist/types/BooleanType.js +8 -19
  278. package/dist/types/BooleanType.js.map +1 -1
  279. package/dist/types/BooleanType.spec.js +3 -9
  280. package/dist/types/BooleanType.spec.js.map +1 -1
  281. package/dist/types/BscType.d.ts +2 -29
  282. package/dist/types/BscType.js +0 -113
  283. package/dist/types/BscType.js.map +1 -1
  284. package/dist/types/CustomType.d.ts +9 -0
  285. package/dist/types/CustomType.js +32 -0
  286. package/dist/types/CustomType.js.map +1 -0
  287. package/dist/types/DoubleType.d.ts +4 -8
  288. package/dist/types/DoubleType.js +20 -23
  289. package/dist/types/DoubleType.js.map +1 -1
  290. package/dist/types/DoubleType.spec.js +3 -11
  291. package/dist/types/DoubleType.spec.js.map +1 -1
  292. package/dist/types/DynamicType.d.ts +3 -9
  293. package/dist/types/DynamicType.js +2 -18
  294. package/dist/types/DynamicType.js.map +1 -1
  295. package/dist/types/DynamicType.spec.js +4 -15
  296. package/dist/types/DynamicType.spec.js.map +1 -1
  297. package/dist/types/FloatType.d.ts +4 -8
  298. package/dist/types/FloatType.js +20 -23
  299. package/dist/types/FloatType.js.map +1 -1
  300. package/dist/types/FloatType.spec.js +3 -3
  301. package/dist/types/FloatType.spec.js.map +1 -1
  302. package/dist/types/FunctionType.d.ts +20 -10
  303. package/dist/types/FunctionType.js +52 -27
  304. package/dist/types/FunctionType.js.map +1 -1
  305. package/dist/types/FunctionType.spec.js +23 -0
  306. package/dist/types/FunctionType.spec.js.map +1 -0
  307. package/dist/types/IntegerType.d.ts +4 -8
  308. package/dist/types/IntegerType.js +20 -23
  309. package/dist/types/IntegerType.js.map +1 -1
  310. package/dist/types/IntegerType.spec.js +3 -7
  311. package/dist/types/IntegerType.spec.js.map +1 -1
  312. package/dist/types/InterfaceType.d.ts +10 -12
  313. package/dist/types/InterfaceType.js +48 -23
  314. package/dist/types/InterfaceType.js.map +1 -1
  315. package/dist/types/InterfaceType.spec.js +45 -82
  316. package/dist/types/InterfaceType.spec.js.map +1 -1
  317. package/dist/types/InvalidType.d.ts +4 -7
  318. package/dist/types/InvalidType.js +8 -18
  319. package/dist/types/InvalidType.js.map +1 -1
  320. package/dist/types/InvalidType.spec.js +3 -7
  321. package/dist/types/InvalidType.spec.js.map +1 -1
  322. package/dist/types/LongIntegerType.d.ts +4 -8
  323. package/dist/types/LongIntegerType.js +20 -23
  324. package/dist/types/LongIntegerType.js.map +1 -1
  325. package/dist/types/LongIntegerType.spec.js +3 -9
  326. package/dist/types/LongIntegerType.spec.js.map +1 -1
  327. package/dist/types/ObjectType.d.ts +4 -8
  328. package/dist/types/ObjectType.js +7 -21
  329. package/dist/types/ObjectType.js.map +1 -1
  330. package/dist/types/ObjectType.spec.js +2 -2
  331. package/dist/types/ObjectType.spec.js.map +1 -1
  332. package/dist/types/StringType.d.ts +4 -11
  333. package/dist/types/StringType.js +8 -23
  334. package/dist/types/StringType.js.map +1 -1
  335. package/dist/types/StringType.spec.js +2 -2
  336. package/dist/types/StringType.spec.js.map +1 -1
  337. package/dist/types/UninitializedType.d.ts +3 -7
  338. package/dist/types/UninitializedType.js +3 -14
  339. package/dist/types/UninitializedType.js.map +1 -1
  340. package/dist/types/VoidType.d.ts +4 -8
  341. package/dist/types/VoidType.js +8 -18
  342. package/dist/types/VoidType.js.map +1 -1
  343. package/dist/types/VoidType.spec.js +2 -2
  344. package/dist/types/VoidType.spec.js.map +1 -1
  345. package/dist/util.d.ts +43 -104
  346. package/dist/util.js +243 -640
  347. package/dist/util.js.map +1 -1
  348. package/dist/validators/ClassValidator.d.ts +6 -1
  349. package/dist/validators/ClassValidator.js +61 -20
  350. package/dist/validators/ClassValidator.js.map +1 -1
  351. package/package.json +13 -12
  352. package/dist/ActionPipeline.d.ts +0 -10
  353. package/dist/ActionPipeline.js +0 -40
  354. package/dist/ActionPipeline.js.map +0 -1
  355. package/dist/AstValidationSegmenter.d.ts +0 -25
  356. package/dist/AstValidationSegmenter.js +0 -150
  357. package/dist/AstValidationSegmenter.js.map +0 -1
  358. package/dist/CacheVerifier.d.ts +0 -7
  359. package/dist/CacheVerifier.js +0 -20
  360. package/dist/CacheVerifier.js.map +0 -1
  361. package/dist/astUtils/Editor.js.map +0 -1
  362. package/dist/astUtils/Editor.spec.js.map +0 -1
  363. package/dist/bscPlugin/FileWriter.d.ts +0 -6
  364. package/dist/bscPlugin/FileWriter.js +0 -24
  365. package/dist/bscPlugin/FileWriter.js.map +0 -1
  366. package/dist/bscPlugin/completions/CompletionsProcessor.spec.js +0 -1658
  367. package/dist/bscPlugin/completions/CompletionsProcessor.spec.js.map +0 -1
  368. package/dist/bscPlugin/fileProviders/FileProvider.d.ts +0 -9
  369. package/dist/bscPlugin/fileProviders/FileProvider.js +0 -51
  370. package/dist/bscPlugin/fileProviders/FileProvider.js.map +0 -1
  371. package/dist/bscPlugin/serialize/BslibInjector.spec.js +0 -19
  372. package/dist/bscPlugin/serialize/BslibInjector.spec.js.map +0 -1
  373. package/dist/bscPlugin/serialize/BslibManager.d.ts +0 -9
  374. package/dist/bscPlugin/serialize/BslibManager.js +0 -40
  375. package/dist/bscPlugin/serialize/BslibManager.js.map +0 -1
  376. package/dist/bscPlugin/serialize/FileSerializer.d.ts +0 -9
  377. package/dist/bscPlugin/serialize/FileSerializer.js +0 -72
  378. package/dist/bscPlugin/serialize/FileSerializer.js.map +0 -1
  379. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.js.map +0 -1
  380. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.js +0 -41
  381. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.js.map +0 -1
  382. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.d.ts +0 -11
  383. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.js +0 -53
  384. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.js.map +0 -1
  385. package/dist/bscPlugin/validation/ScopeValidator.spec.js +0 -2004
  386. package/dist/bscPlugin/validation/ScopeValidator.spec.js.map +0 -1
  387. package/dist/files/AssetFile.d.ts +0 -26
  388. package/dist/files/AssetFile.js +0 -26
  389. package/dist/files/AssetFile.js.map +0 -1
  390. package/dist/files/Factory.d.ts +0 -25
  391. package/dist/files/Factory.js +0 -22
  392. package/dist/files/Factory.js.map +0 -1
  393. package/dist/files/File.d.ts +0 -106
  394. package/dist/files/File.js +0 -16
  395. package/dist/files/File.js.map +0 -1
  396. package/dist/files/LazyFileData.d.ts +0 -20
  397. package/dist/files/LazyFileData.js +0 -54
  398. package/dist/files/LazyFileData.js.map +0 -1
  399. package/dist/files/LazyFileData.spec.js +0 -27
  400. package/dist/files/LazyFileData.spec.js.map +0 -1
  401. package/dist/parser/tests/expression/TypeExpression.spec.js +0 -127
  402. package/dist/parser/tests/expression/TypeExpression.spec.js.map +0 -1
  403. package/dist/types/AssociativeArrayType.d.ts +0 -11
  404. package/dist/types/AssociativeArrayType.js +0 -52
  405. package/dist/types/AssociativeArrayType.js.map +0 -1
  406. package/dist/types/BaseFunctionType.d.ts +0 -9
  407. package/dist/types/BaseFunctionType.js +0 -25
  408. package/dist/types/BaseFunctionType.js.map +0 -1
  409. package/dist/types/BscTypeKind.d.ts +0 -25
  410. package/dist/types/BscTypeKind.js +0 -30
  411. package/dist/types/BscTypeKind.js.map +0 -1
  412. package/dist/types/BuiltInInterfaceAdder.d.ts +0 -23
  413. package/dist/types/BuiltInInterfaceAdder.js +0 -160
  414. package/dist/types/BuiltInInterfaceAdder.js.map +0 -1
  415. package/dist/types/BuiltInInterfaceAdder.spec.d.ts +0 -1
  416. package/dist/types/BuiltInInterfaceAdder.spec.js +0 -116
  417. package/dist/types/BuiltInInterfaceAdder.spec.js.map +0 -1
  418. package/dist/types/ClassType.d.ts +0 -17
  419. package/dist/types/ClassType.js +0 -58
  420. package/dist/types/ClassType.js.map +0 -1
  421. package/dist/types/ClassType.spec.d.ts +0 -1
  422. package/dist/types/ClassType.spec.js +0 -77
  423. package/dist/types/ClassType.spec.js.map +0 -1
  424. package/dist/types/ComponentType.d.ts +0 -26
  425. package/dist/types/ComponentType.js +0 -83
  426. package/dist/types/ComponentType.js.map +0 -1
  427. package/dist/types/EnumType.d.ts +0 -40
  428. package/dist/types/EnumType.js +0 -81
  429. package/dist/types/EnumType.js.map +0 -1
  430. package/dist/types/EnumType.spec.d.ts +0 -1
  431. package/dist/types/EnumType.spec.js +0 -33
  432. package/dist/types/EnumType.spec.js.map +0 -1
  433. package/dist/types/InheritableType.d.ts +0 -28
  434. package/dist/types/InheritableType.js +0 -152
  435. package/dist/types/InheritableType.js.map +0 -1
  436. package/dist/types/NamespaceType.d.ts +0 -12
  437. package/dist/types/NamespaceType.js +0 -28
  438. package/dist/types/NamespaceType.js.map +0 -1
  439. package/dist/types/ReferenceType.d.ts +0 -63
  440. package/dist/types/ReferenceType.js +0 -423
  441. package/dist/types/ReferenceType.js.map +0 -1
  442. package/dist/types/ReferenceType.spec.d.ts +0 -1
  443. package/dist/types/ReferenceType.spec.js +0 -137
  444. package/dist/types/ReferenceType.spec.js.map +0 -1
  445. package/dist/types/TypedFunctionType.d.ts +0 -33
  446. package/dist/types/TypedFunctionType.js +0 -106
  447. package/dist/types/TypedFunctionType.js.map +0 -1
  448. package/dist/types/TypedFunctionType.spec.d.ts +0 -1
  449. package/dist/types/TypedFunctionType.spec.js +0 -122
  450. package/dist/types/TypedFunctionType.spec.js.map +0 -1
  451. package/dist/types/UnionType.d.ts +0 -20
  452. package/dist/types/UnionType.js +0 -123
  453. package/dist/types/UnionType.js.map +0 -1
  454. package/dist/types/UnionType.spec.d.ts +0 -1
  455. package/dist/types/UnionType.spec.js +0 -130
  456. package/dist/types/UnionType.spec.js.map +0 -1
  457. package/dist/types/helper.spec.d.ts +0 -1
  458. package/dist/types/helper.spec.js +0 -145
  459. package/dist/types/helper.spec.js.map +0 -1
  460. package/dist/types/helpers.d.ts +0 -24
  461. package/dist/types/helpers.js +0 -178
  462. package/dist/types/helpers.js.map +0 -1
  463. package/dist/types/index.d.ts +0 -22
  464. package/dist/types/index.js +0 -39
  465. package/dist/types/index.js.map +0 -1
  466. /package/dist/astUtils/{Editor.spec.d.ts → AstEditor.spec.d.ts} +0 -0
  467. /package/dist/bscPlugin/{completions/CompletionsProcessor.spec.d.ts → definition/DefinitionProvider.spec.d.ts} +0 -0
  468. /package/dist/bscPlugin/{serialize/BslibInjector.spec.d.ts → references/ReferencesProvider.spec.d.ts} +0 -0
  469. /package/dist/bscPlugin/{transpile/BrsFileTranspileProcessor.spec.d.ts → symbols/DocumentSymbolProcessor.spec.d.ts} +0 -0
  470. /package/dist/bscPlugin/{validation/ScopeValidator.spec.d.ts → symbols/WorkspaceSymbolProcessor.spec.d.ts} +0 -0
  471. /package/dist/{files/LazyFileData.spec.d.ts → bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.d.ts} +0 -0
  472. /package/dist/{parser/tests/expression/TypeExpression.spec.d.ts → types/FunctionType.spec.d.ts} +0 -0
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.rangeFromTokenValue = void 0;
3
4
  const parser = require("@xml-tools/parser");
4
5
  const DiagnosticMessages_1 = require("../DiagnosticMessages");
5
6
  const util_1 = require("../util");
@@ -37,31 +38,33 @@ class SGParser {
37
38
  * Walk the AST to extract references to useful bits of information
38
39
  */
39
40
  findReferences() {
40
- this._references = this.emptySGReferences();
41
- const { componentElement } = this.ast;
42
- if (!componentElement) {
41
+ this._references = emptySGReferences();
42
+ const { component } = this.ast;
43
+ if (!component) {
43
44
  return;
44
45
  }
45
- const nameAttr = componentElement.getAttribute('name');
46
- this._references.name = nameAttr === null || nameAttr === void 0 ? void 0 : nameAttr.tokens.value;
47
- const extendsAttr = componentElement.getAttribute('extends');
48
- if (extendsAttr === null || extendsAttr === void 0 ? void 0 : extendsAttr.tokens.value) {
49
- this._references.extends = extendsAttr.tokens.value;
46
+ const nameAttr = component.getAttribute('name');
47
+ if (nameAttr === null || nameAttr === void 0 ? void 0 : nameAttr.value) {
48
+ this._references.name = nameAttr.value;
50
49
  }
51
- for (const script of componentElement.scriptElements) {
50
+ const extendsAttr = component.getAttribute('extends');
51
+ if (extendsAttr === null || extendsAttr === void 0 ? void 0 : extendsAttr.value) {
52
+ this._references.extends = extendsAttr.value;
53
+ }
54
+ for (const script of component.scripts) {
52
55
  const uriAttr = script.getAttribute('uri');
53
- if (uriAttr === null || uriAttr === void 0 ? void 0 : uriAttr.tokens.value) {
54
- const uri = uriAttr.tokens.value.text;
56
+ if (uriAttr) {
57
+ const uri = uriAttr.value.text;
55
58
  this._references.scriptTagImports.push({
56
- filePathRange: uriAttr.tokens.value.range,
59
+ filePathRange: uriAttr.value.range,
57
60
  text: uri,
58
- destPath: util_1.default.getPkgPathFromTarget(this.destPath, uri)
61
+ pkgPath: util_1.default.getPkgPathFromTarget(this.pkgPath, uri)
59
62
  });
60
63
  }
61
64
  }
62
65
  }
63
- parse(destPath, fileContents) {
64
- this.destPath = destPath;
66
+ parse(pkgPath, fileContents) {
67
+ this.pkgPath = pkgPath;
65
68
  this.diagnostics = [];
66
69
  const { cst, tokenVector, lexErrors, parseErrors } = parser.parse(fileContents);
67
70
  this.tokens = tokenVector;
@@ -73,16 +76,16 @@ class SGParser {
73
76
  if (parseErrors.length) {
74
77
  const err = parseErrors[0];
75
78
  const token = err.token;
76
- this.diagnostics.push(Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.xmlGenericParseError(`Syntax error: ${err.message}`)), { range: !isNaN(token.startLine) ? this.rangeFromToken(token) : util_1.default.createRange(0, 0, 0, Number.MAX_VALUE) }));
79
+ this.diagnostics.push(Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.xmlGenericParseError(`Syntax error: ${err.message}`)), { range: !isNaN(token.startLine) ? rangeFromTokens(token) : util_1.default.createRange(0, 0, 0, Number.MAX_VALUE) }));
77
80
  }
78
- const { prolog, root } = this.buildAST(cst);
81
+ const { prolog, root } = buildAST(cst, this.diagnostics);
79
82
  if (!root) {
80
83
  const token1 = tokenVector[0];
81
84
  const token2 = tokenVector[1];
82
85
  //whitespace before the prolog isn't allowed by the parser
83
86
  if ((token1 === null || token1 === void 0 ? void 0 : token1.image.trim().length) === 0 &&
84
87
  (token2 === null || token2 === void 0 ? void 0 : token2.image.trim()) === '<?xml') {
85
- this.diagnostics.push(Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.xmlGenericParseError('Syntax error: whitespace found before the XML prolog')), { range: this.rangeFromToken(token1) }));
88
+ this.diagnostics.push(Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.xmlGenericParseError('Syntax error: whitespace found before the XML prolog')), { range: rangeFromTokens(token1) }));
86
89
  }
87
90
  }
88
91
  if ((0, xml_1.isSGComponent)(root)) {
@@ -91,204 +94,205 @@ class SGParser {
91
94
  else {
92
95
  if (root) {
93
96
  //error: not a component
94
- this.diagnostics.push(Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.xmlUnexpectedTag(root.tokens.startTagName.text)), { range: root.tokens.startTagName.range }));
97
+ this.diagnostics.push(Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.xmlUnexpectedTag(root.tag.text)), { range: root.tag.range }));
95
98
  }
96
99
  this.ast = new SGTypes_1.SGAst(prolog, root);
97
100
  }
98
101
  }
99
- buildAST(cst) {
100
- var _a, _b;
101
- const { prolog: cstProlog, element } = cst.children;
102
- let prolog;
103
- if (cstProlog === null || cstProlog === void 0 ? void 0 : cstProlog[0]) {
104
- const ctx = cstProlog[0].children;
105
- prolog = new SGTypes_1.SGProlog(
106
- // <?
107
- this.createPartialToken(ctx.XMLDeclOpen[0], 0, 2),
108
- // xml
109
- this.createPartialToken(ctx.XMLDeclOpen[0], 2, 3), this.mapAttributes(ctx.attribute),
110
- // ?>
111
- this.mapToken(ctx.SPECIAL_CLOSE[0]));
112
- }
113
- let root;
114
- if (element.length > 0 && ((_b = (_a = element[0]) === null || _a === void 0 ? void 0 : _a.children) === null || _b === void 0 ? void 0 : _b.Name)) {
115
- root = this.mapElement(element[0]);
116
- }
117
- return {
118
- prolog: prolog,
119
- root: root
120
- };
102
+ }
103
+ exports.default = SGParser;
104
+ function buildAST(cst, diagnostics) {
105
+ var _a, _b;
106
+ const { prolog: cstProlog, element } = cst.children;
107
+ let prolog;
108
+ if (cstProlog === null || cstProlog === void 0 ? void 0 : cstProlog[0]) {
109
+ const ctx = cstProlog[0].children;
110
+ prolog = new SGTypes_1.SGProlog(mapToken(ctx.XMLDeclOpen[0]), mapAttributes(ctx.attribute), rangeFromTokens(ctx.XMLDeclOpen[0], ctx.SPECIAL_CLOSE[0]));
121
111
  }
122
- mapElement({ children }) {
123
- var _a, _b, _c, _d, _e, _f;
124
- const startTagOpen = this.mapToken(children.OPEN[0]);
125
- const startTagName = this.mapToken(children.Name[0]);
126
- const attributes = this.mapAttributes(children.attribute);
127
- const startTagClose = this.mapToken((_b = ((_a = children.SLASH_CLOSE) !== null && _a !== void 0 ? _a : children.START_CLOSE)) === null || _b === void 0 ? void 0 : _b[0]);
128
- const endTagOpen = this.mapToken((_c = children.SLASH_OPEN) === null || _c === void 0 ? void 0 : _c[0]);
129
- const endTagName = this.mapToken((_d = children.END_NAME) === null || _d === void 0 ? void 0 : _d[0]);
130
- const endTagClose = this.mapToken((_e = children.END) === null || _e === void 0 ? void 0 : _e[0]);
131
- const content = (_f = children.content) === null || _f === void 0 ? void 0 : _f[0];
132
- let childrenContent;
133
- switch (startTagName.text) {
134
- case 'component':
135
- childrenContent = this.mapElements(content, ['interface', 'script', 'children', 'customization']);
136
- return new SGTypes_1.SGComponent(startTagOpen, startTagName, attributes, startTagClose, childrenContent, endTagOpen, endTagName, endTagClose);
137
- case 'interface':
138
- childrenContent = this.mapElements(content, ['field', 'function']);
139
- return new SGTypes_1.SGInterface(startTagOpen, startTagName, attributes, startTagClose, childrenContent, endTagOpen, endTagName, endTagClose);
140
- case 'field':
141
- if (this.hasElements(content)) {
142
- this.diagnostics.push(Object.assign({ range: startTagName.range }, DiagnosticMessages_1.DiagnosticMessages.xmlUnexpectedChildren(startTagName.text)));
143
- }
144
- return new SGTypes_1.SGInterfaceField(startTagOpen, startTagName, attributes, startTagClose, childrenContent, endTagOpen, endTagName, endTagClose);
145
- case 'function':
146
- if (this.hasElements(content)) {
147
- this.diagnostics.push(Object.assign({ range: startTagName.range }, DiagnosticMessages_1.DiagnosticMessages.xmlUnexpectedChildren(startTagName.text)));
148
- }
149
- return new SGTypes_1.SGInterfaceFunction(startTagOpen, startTagName, attributes, startTagClose, childrenContent, endTagOpen, endTagName, endTagClose);
150
- case 'script':
151
- if (this.hasElements(content)) {
152
- this.diagnostics.push(Object.assign({ range: startTagName.range }, DiagnosticMessages_1.DiagnosticMessages.xmlUnexpectedChildren(startTagName.text)));
153
- }
154
- const script = new SGTypes_1.SGScript(startTagOpen, startTagName, attributes, startTagClose, childrenContent, endTagOpen, endTagName, endTagClose);
155
- script.cdata = this.getCdata(content);
156
- return script;
157
- case 'children':
158
- childrenContent = this.mapNodes(content);
159
- return new SGTypes_1.SGChildren(startTagOpen, startTagName, attributes, startTagClose, childrenContent, endTagOpen, endTagName, endTagClose);
160
- default:
161
- childrenContent = this.mapNodes(content);
162
- return new SGTypes_1.SGNode(startTagOpen, startTagName, attributes, startTagClose, childrenContent, endTagOpen, endTagName, endTagClose);
163
- }
112
+ let root;
113
+ if (element.length > 0 && ((_b = (_a = element[0]) === null || _a === void 0 ? void 0 : _a.children) === null || _b === void 0 ? void 0 : _b.Name)) {
114
+ root = mapElement(element[0], diagnostics);
164
115
  }
165
- mapNode({ children }) {
166
- var _a, _b, _c, _d, _e;
167
- return new SGTypes_1.SGNode(
168
- //<
169
- this.mapToken(children.OPEN[0]),
170
- // TagName
171
- this.mapToken(children.Name[0]), this.mapAttributes(children.attribute),
172
- // > or />
173
- this.mapToken(((_a = children.SLASH_CLOSE) !== null && _a !== void 0 ? _a : children.START_CLOSE)[0]), this.mapNodes((_b = children.content) === null || _b === void 0 ? void 0 : _b[0]),
174
- // </
175
- this.mapToken((_c = children.SLASH_OPEN) === null || _c === void 0 ? void 0 : _c[0]),
176
- // TagName
177
- this.mapToken((_d = children.END_NAME) === null || _d === void 0 ? void 0 : _d[0]),
178
- // >
179
- this.mapToken((_e = children.END) === null || _e === void 0 ? void 0 : _e[0]));
116
+ return {
117
+ prolog: prolog,
118
+ root: root
119
+ };
120
+ }
121
+ function mapElement({ children }, diagnostics) {
122
+ var _a, _b;
123
+ const nameToken = children.Name[0];
124
+ let range;
125
+ const selfClosing = !!children.SLASH_CLOSE;
126
+ if (selfClosing) {
127
+ const scToken = children.SLASH_CLOSE[0];
128
+ range = rangeFromTokens(nameToken, scToken);
180
129
  }
181
- mapElements(content, allow) {
182
- var _a;
183
- if (!content) {
184
- return [];
185
- }
186
- const { element } = content.children;
187
- const tags = [];
188
- if (element) {
189
- for (const entry of element) {
190
- const name = (_a = entry.children.Name) === null || _a === void 0 ? void 0 : _a[0];
191
- if (name === null || name === void 0 ? void 0 : name.image) {
192
- if (!allow.includes(name.image)) {
193
- //unexpected tag
194
- this.diagnostics.push(Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.xmlUnexpectedTag(name.image)), { range: this.rangeFromToken(name) }));
195
- }
196
- tags.push(this.mapElement(entry));
197
- }
198
- else {
199
- //bad xml syntax...
200
- }
201
- }
202
- }
203
- return tags;
130
+ else {
131
+ const endToken = (_a = children.END) === null || _a === void 0 ? void 0 : _a[0];
132
+ range = rangeFromTokens(nameToken, endToken);
204
133
  }
205
- mapNodes(content) {
206
- if (!content) {
207
- return [];
208
- }
209
- const { element } = content.children;
210
- return element === null || element === void 0 ? void 0 : element.map(element => this.mapNode(element));
134
+ const name = mapToken(nameToken);
135
+ const attributes = mapAttributes(children.attribute);
136
+ const content = (_b = children.content) === null || _b === void 0 ? void 0 : _b[0];
137
+ switch (name.text) {
138
+ case 'component':
139
+ const componentContent = mapElements(content, ['interface', 'script', 'children', 'customization'], diagnostics);
140
+ return new SGTypes_1.SGComponent(name, attributes, componentContent, range);
141
+ case 'interface':
142
+ const interfaceContent = mapElements(content, ['field', 'function'], diagnostics);
143
+ return new SGTypes_1.SGInterface(name, interfaceContent, range);
144
+ case 'field':
145
+ if (hasElements(content)) {
146
+ reportUnexpectedChildren(name, diagnostics);
147
+ }
148
+ return new SGTypes_1.SGField(name, attributes, range);
149
+ case 'function':
150
+ if (hasElements(content)) {
151
+ reportUnexpectedChildren(name, diagnostics);
152
+ }
153
+ return new SGTypes_1.SGFunction(name, attributes, range);
154
+ case 'script':
155
+ if (hasElements(content)) {
156
+ reportUnexpectedChildren(name, diagnostics);
157
+ }
158
+ const cdata = getCdata(content);
159
+ return new SGTypes_1.SGScript(name, attributes, cdata, range);
160
+ case 'children':
161
+ const childrenContent = mapNodes(content);
162
+ return new SGTypes_1.SGChildren(name, childrenContent, range);
163
+ default:
164
+ const nodeContent = mapNodes(content);
165
+ return new SGTypes_1.SGNode(name, attributes, nodeContent, range);
211
166
  }
212
- hasElements(content) {
213
- var _a;
214
- return !!((_a = content === null || content === void 0 ? void 0 : content.children.element) === null || _a === void 0 ? void 0 : _a.length);
167
+ }
168
+ function reportUnexpectedChildren(name, diagnostics) {
169
+ diagnostics.push(Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.xmlUnexpectedChildren(name.text)), { range: name.range }));
170
+ }
171
+ function mapNode({ children }) {
172
+ var _a, _b;
173
+ const nameToken = children.Name[0];
174
+ let range;
175
+ const selfClosing = !!children.SLASH_CLOSE;
176
+ if (selfClosing) {
177
+ const scToken = children.SLASH_CLOSE[0];
178
+ range = rangeFromTokens(nameToken, scToken);
215
179
  }
216
- getCdata(content) {
217
- if (!content) {
218
- return undefined;
219
- }
220
- const { CData } = content.children;
221
- return this.mapToken(CData === null || CData === void 0 ? void 0 : CData[0]);
180
+ else {
181
+ const endToken = (_a = children.END) === null || _a === void 0 ? void 0 : _a[0];
182
+ range = rangeFromTokens(nameToken, endToken);
222
183
  }
223
- mapToken(token) {
224
- if (token) {
225
- return {
226
- text: token.image,
227
- range: this.rangeFromToken(token)
228
- };
229
- }
230
- else {
231
- return undefined;
232
- }
184
+ const name = mapToken(nameToken);
185
+ const attributes = mapAttributes(children.attribute);
186
+ const content = (_b = children.content) === null || _b === void 0 ? void 0 : _b[0];
187
+ const nodeContent = mapNodes(content);
188
+ return new SGTypes_1.SGNode(name, attributes, nodeContent, range);
189
+ }
190
+ function mapElements(content, allow, diagnostics) {
191
+ var _a;
192
+ if (!content) {
193
+ return [];
233
194
  }
234
- /**
235
- * Build SGAttributes from the underlying XML parser attributes array
236
- */
237
- mapAttributes(attributes) {
238
- // this is a hot function and has been optimized, so don't refactor unless you know what you're doing...
239
- const result = [];
240
- if (attributes) {
241
- // eslint-disable-next-line @typescript-eslint/prefer-for-of
242
- for (let i = 0; i < attributes.length; i++) {
243
- const children = attributes[i].children;
244
- const attr = new SGTypes_1.SGAttribute(this.mapToken(children.Name[0]));
245
- if (children.EQUALS) {
246
- attr.tokens.equals = this.mapToken(children.EQUALS[0]);
195
+ const { element } = content.children;
196
+ const tags = [];
197
+ if (element) {
198
+ for (const entry of element) {
199
+ const name = (_a = entry.children.Name) === null || _a === void 0 ? void 0 : _a[0];
200
+ if (name === null || name === void 0 ? void 0 : name.image) {
201
+ if (allow.includes(name.image)) {
202
+ tags.push(mapElement(entry, diagnostics));
247
203
  }
248
- if (children.STRING) {
249
- const valueToken = children.STRING[0];
250
- attr.tokens.openingQuote = this.createPartialToken(valueToken, 0, 1);
251
- attr.tokens.value = this.createPartialToken(valueToken, 1, -2);
252
- attr.tokens.closingQuote = this.createPartialToken(valueToken, -1, 1);
204
+ else {
205
+ //unexpected tag
206
+ diagnostics.push(Object.assign(Object.assign({}, DiagnosticMessages_1.DiagnosticMessages.xmlUnexpectedTag(name.image)), { range: rangeFromTokens(name) }));
253
207
  }
254
- result.push(attr);
208
+ }
209
+ else {
210
+ //bad xml syntax...
255
211
  }
256
212
  }
257
- return result;
258
213
  }
259
- /**
260
- * Create a partial token from the given token. This only supports single-line tokens.
261
- * @param token the offset to start the new token. If negative, subtracts from token.length
262
- * @param startOffset the offset to start the new token. If negative, subtracts from token.length
263
- * @param length the length of the text to keep. If negative, subtracts from token.length
264
- */
265
- createPartialToken(token, startOffset, length) {
266
- if (startOffset < 0) {
267
- startOffset = token.image.length + startOffset;
268
- }
269
- if (length === undefined) {
270
- length = token.image.length - startOffset;
271
- }
272
- if (length < 0) {
273
- length = token.image.length + length;
214
+ return tags;
215
+ }
216
+ function mapNodes(content) {
217
+ if (!content) {
218
+ return [];
219
+ }
220
+ const { element } = content.children;
221
+ return element === null || element === void 0 ? void 0 : element.map(element => mapNode(element));
222
+ }
223
+ function hasElements(content) {
224
+ var _a;
225
+ return !!((_a = content === null || content === void 0 ? void 0 : content.children.element) === null || _a === void 0 ? void 0 : _a.length);
226
+ }
227
+ function getCdata(content) {
228
+ if (!content) {
229
+ return undefined;
230
+ }
231
+ const { CData } = content.children;
232
+ return mapToken(CData === null || CData === void 0 ? void 0 : CData[0]);
233
+ }
234
+ function mapToken(token, unquote = false) {
235
+ if (!token) {
236
+ return undefined;
237
+ }
238
+ return {
239
+ text: unquote ? stripQuotes(token.image) : token.image,
240
+ range: unquote ? rangeFromTokenValue(token) : rangeFromTokens(token)
241
+ };
242
+ }
243
+ function mapAttributes(attributes) {
244
+ return (attributes === null || attributes === void 0 ? void 0 : attributes.map(({ children }) => {
245
+ var _a;
246
+ const key = children.Name[0];
247
+ const value = (_a = children.STRING) === null || _a === void 0 ? void 0 : _a[0];
248
+ let openQuote;
249
+ let closeQuote;
250
+ //capture the leading and trailing quote tokens
251
+ const match = /^(["']).*?(["'])$/.exec(value === null || value === void 0 ? void 0 : value.image);
252
+ if (match) {
253
+ const range = rangeFromTokenValue(value);
254
+ openQuote = {
255
+ text: match[1],
256
+ range: util_1.default.createRange(range.start.line, range.start.character, range.start.line, range.start.character + 1)
257
+ };
258
+ closeQuote = {
259
+ text: match[1],
260
+ range: util_1.default.createRange(range.end.line, range.end.character - 1, range.end.line, range.end.character)
261
+ };
274
262
  }
275
263
  return {
276
- text: token.image.substring(startOffset, startOffset + length),
277
- //xmltools startLine is 1-based, we need 0-based which is why we subtract 1 below
278
- range: util_1.default.createRange(token.startLine - 1, token.startColumn - 1 + startOffset, token.endLine - 1, token.startColumn - 1 + (startOffset + length))
264
+ key: mapToken(key),
265
+ openQuote: openQuote,
266
+ value: mapToken(value, true),
267
+ closeQuote: closeQuote,
268
+ range: rangeFromTokens(key, value)
279
269
  };
270
+ })) || [];
271
+ }
272
+ //make range from `start` to `end` tokens
273
+ function rangeFromTokens(start, end) {
274
+ if (!end) {
275
+ end = start;
280
276
  }
281
- /**
282
- * Create a range based on the xmltools token
283
- */
284
- rangeFromToken(token) {
285
- return util_1.default.createRange(token.startLine - 1, token.startColumn - 1, token.endLine - 1, token.endColumn);
277
+ return util_1.default.createRange(start.startLine - 1, start.startColumn - 1, end.endLine - 1, end.endColumn);
278
+ }
279
+ //make range not including quotes
280
+ function rangeFromTokenValue(token) {
281
+ if (!token) {
282
+ return undefined;
286
283
  }
287
- emptySGReferences() {
288
- return {
289
- scriptTagImports: []
290
- };
284
+ return util_1.default.createRange(token.startLine - 1, token.startColumn, token.endLine - 1, token.endColumn - 1);
285
+ }
286
+ exports.rangeFromTokenValue = rangeFromTokenValue;
287
+ function stripQuotes(value) {
288
+ if ((value === null || value === void 0 ? void 0 : value.length) > 1) {
289
+ return value.substr(1, value.length - 2);
291
290
  }
291
+ return '';
292
+ }
293
+ function emptySGReferences() {
294
+ return {
295
+ scriptTagImports: []
296
+ };
292
297
  }
293
- exports.default = SGParser;
294
298
  //# sourceMappingURL=SGParser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SGParser.js","sourceRoot":"","sources":["../../src/parser/SGParser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SGParser.js","sourceRoot":"","sources":["../../src/parser/SGParser.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,6 @@ const testHelpers_spec_2 = require("../testHelpers.spec");
11
11
  let sinon = (0, sinon_1.createSandbox)();
12
12
  describe('SGParser', () => {
13
13
  let program;
14
- const testTranspile = (0, testHelpers_spec_1.getTestTranspile)(() => [program, testHelpers_spec_2.rootDir]);
15
14
  beforeEach(() => {
16
15
  program = new Program_1.Program({ rootDir: testHelpers_spec_2.rootDir, sourceMap: false });
17
16
  });
@@ -19,12 +18,8 @@ describe('SGParser', () => {
19
18
  sinon.restore();
20
19
  program.dispose();
21
20
  });
22
- it('Parses well formed SG component', async () => {
23
- program.setFile('components/Component1.brs', `
24
- sub load()
25
- end sub
26
- `);
27
- const { file } = await testTranspile((0, testHelpers_spec_1.trim) `
21
+ it('Parses well formed SG component', () => {
22
+ const file = program.setFile('components/file.xml', (0, testHelpers_spec_1.trim) `
28
23
  <?xml version="1.0" encoding="utf-8" ?>
29
24
  <component name="ParentScene" extends="GrandparentScene">
30
25
  <interface>
@@ -46,8 +41,14 @@ describe('SGParser', () => {
46
41
  font="font:MediumBoldSystemFont"
47
42
  />
48
43
  </children>
49
- </component>
50
- `, (0, testHelpers_spec_1.trim) `
44
+ </component>`);
45
+ const { ast } = file.parser;
46
+ (0, chai_config_spec_1.expect)(ast.prolog).to.exist;
47
+ (0, chai_config_spec_1.expect)(ast.component).to.exist;
48
+ (0, chai_config_spec_1.expect)(ast.root).to.equal(ast.component);
49
+ (0, testHelpers_spec_1.expectZeroDiagnostics)(file);
50
+ const output = file.transpile();
51
+ (0, chai_config_spec_1.expect)(output.code.trimEnd()).to.equal((0, testHelpers_spec_1.trim) `
51
52
  <?xml version="1.0" encoding="utf-8" ?>
52
53
  <component name="ParentScene" extends="GrandparentScene">
53
54
  <interface>
@@ -65,11 +66,7 @@ describe('SGParser', () => {
65
66
  <Label id="loadingIndicator" text="Loading..." font="font:MediumBoldSystemFont" />
66
67
  </children>
67
68
  </component>
68
- `, undefined, 'components/file.xml');
69
- const { ast } = file.parser;
70
- (0, chai_config_spec_1.expect)(ast.prologElement).to.exist;
71
- (0, chai_config_spec_1.expect)(ast.componentElement).to.exist;
72
- (0, chai_config_spec_1.expect)(ast.rootElement).to.equal(ast.componentElement);
69
+ `);
73
70
  });
74
71
  it('does not crash when missing tag name', () => {
75
72
  const parser = new SGParser_1.default();
@@ -1 +1 @@
1
- {"version":3,"file":"SGParser.spec.js","sourceRoot":"","sources":["../../src/parser/SGParser.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SGParser.spec.js","sourceRoot":"","sources":["../../src/parser/SGParser.spec.ts"],"names":[],"mappings":"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"}