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,5 @@
1
1
  {
2
- "generatedDate": "2023-11-24T19:45:56.208Z",
2
+ "generatedDate": "2022-11-02T15:29:46.390Z",
3
3
  "nodes": {
4
4
  "animation": {
5
5
  "description": "Extends [**AnimationBase**](https://developer.roku.com/docs/references/scenegraph/abstract-nodes/animationbase.md\n\nThe Animation node class provides animations of renderable nodes, by applying interpolator functions to the values in specified renderable node fields. For an animation to take effect, an Animation node definition must include a child field interpolator node ([FloatFieldInterpolator](https://developer.roku.com/docs/references/scenegraph/animation-nodes/floatfieldinterpolator.md\"FloatFieldInterpolator\"), [Vector2DFieldInterpolator](https://developer.roku.com/docs/references/scenegraph/animation-nodes/vector2dfieldinterpolator.md\"Vector2DFieldInterpolator\"), [ColorFieldInterpolator](https://developer.roku.com/docs/references/scenegraph/animation-nodes/colorfieldinterpolator.md\"ColorFieldInterpolator\")) definition for each renderable node field that is animated.\n\nThe Animation node class provides a simple linear interpolator function, where the animation takes place smoothly and simply from beginning to end. The Animation node class also provides several more complex interpolator functions to allow custom animation effects. For example, you can move a graphic image around the screen at differing speeds and curved trajectories at different times in the animation by specifying the appropriate function in the easeFunction field (quadratic and exponential are two examples of functions that can be specified). The interpolator functions are divided into two parts: the beginning of the animation (ease-in), and the end of the animation (ease-out). You can apply a specified interpolator function to either or both ease-in and ease-out, or specify no function for either or both (which is the linear function). You can also change the portion of the animation that is ease-in and ease-out to arbitrary fractional values for a quadratic interpolator function applied to both ease-in and ease-out.",
@@ -443,7 +443,7 @@
443
443
  {
444
444
  "accessPermission": "READ_ONLY",
445
445
  "default": "",
446
- "description": "Contains the format of the currently playing audio.\n\n| Value | Meaning |\n| --- | --- |\n| \"\" | No stream playing |\n| aac | ISO/IEC 14496-3, Advanced Audio Coding |\n| aac\\_adif | ISO/IEC 14496-3, Advanced Audio Coding, ADIF container |\n| aac\\_adts | ISO/IEC 14496-3, Advanced Audio Coding, ADTS container |\n| aac\\_latm | ISO/IEC 14496-3, Advanced Audio Coding, LATM container |\n| ac3 | Dolby Digital |\n| alac | Apple Lossless |\n| dts | DTS Coherent Acoustics |\n| eac3 | Dolby Digital Plus |\n| flac | Free Lossless Audio Codec |\n| mp2 | ISO/IEC 11172-3, MPEG Audio Layer II |\n| mp3 | ISO/IEC 11172-3, MPEG Audio Layer III |\n| none | Stream contains no playable audio |\n| pcm | linear PCM |\n| unknown | Stream contains unknown audio |\n| vorbis | Ogg Vorbis |\n| wma _sunset as of Roku OS 12.5_ | Microsoft Windows Media Audio. As of Roku OS 10.5, the Roku platform no longer supports this audio format. As part of the Roku OS 12.5 release, this format was officially sunset. |\n| wmapro _sunset as of Roku OS 12.5_ | Microsoft Windows Media Pro Audio. As of Roku OS 10.5, the Roku platform no longer supports this audio format. As part of the Roku OS 12.5 release, this format was officially sunset. |",
446
+ "description": "Contains the format of the currently playing audio.\n\n| Value | Meaning |\n| --- | --- |\n| \"\" | No stream playing |\n| aac | ISO/IEC 14496-3, Advanced Audio Coding |\n| aac\\_adif | ISO/IEC 14496-3, Advanced Audio Coding, ADIF container |\n| aac\\_adts | ISO/IEC 14496-3, Advanced Audio Coding, ADTS container |\n| aac\\_latm | ISO/IEC 14496-3, Advanced Audio Coding, LATM container |\n| ac3 | Dolby Digital |\n| alac | Apple Lossless |\n| dts | DTS Coherent Acoustics |\n| eac3 | Dolby Digital Plus |\n| flac | Free Lossless Audio Codec |\n| mp2 | ISO/IEC 11172-3, MPEG Audio Layer II |\n| mp3 | ISO/IEC 11172-3, MPEG Audio Layer III |\n| none | Stream contains no playable audio |\n| pcm | linear PCM |\n| unknown | Stream contains unknown audio |\n| vorbis | Ogg Vorbis |\n| wma _deprecated_ | Microsoft Windows Media Audio. As of Roku OS 10.5, the Roku platform no longer supports this audio format. |\n| wmapro _deprecated_ | Microsoft Windows Media Pro Audio. As of Roku OS 10.5, the Roku platform no longer supports this audio format. |",
447
447
  "name": "audioFormat",
448
448
  "type": "string"
449
449
  },
@@ -607,7 +607,7 @@
607
607
  "url": "https://developer.roku.com/docs/references/scenegraph/media-playback-nodes/audio.md"
608
608
  },
609
609
  "busyspinner": {
610
- "description": "Extends [**Group**](https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/group.md\n\nThe BusySpinner node class is a simple widget that displays a continuously rotating bitmap. Since the BusySpinner node class uses an internal Poster node instance, the busy spinner bitmap can be specified by setting the internal Poster node uri field.\n\n[SimpleBusySpinner](https://github.com/rokudev/samples/tree/master/ux%20components/widgets) is a sample channel that demonstrates usage of the BusySpinner.\n\n> Not all Roku Player hardware versions support arbitrary rotations. In particular, some hardware versions only support 90 degree rotation increments. In those cases, the icon will step through 90 degree, 180 degree, 270 degree and back to 0 degree rotations, rather than spin smoothly.",
610
+ "description": "Extends [**Group**](https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/group.md\n\nThe BusySpinner node class is a simple widget that displays a continuously rotating bitmap. Since the BusySpinner node class uses an internal Poster node instance, the busy spinner bitmap can be specified by setting the internal Poster node uri field.\n\n[SimpleBusySpinner.zip](https://github.com/rokudev/samples/tree/master/ux%20components/widgets) is a sample channel that demonstrates usage of the BusySpinner.\n\n> Not all Roku Player hardware versions support arbitrary rotations. In particular, some hardware versions only support 90 degree rotation increments. In those cases, the icon will step through 90 degree, 180 degree, 270 degree and back to 0 degree rotations, rather than spin smoothly.",
611
611
  "events": [],
612
612
  "extends": {
613
613
  "name": "Group",
@@ -1007,7 +1007,7 @@
1007
1007
  "url": "https://developer.roku.com/docs/references/scenegraph/animation-nodes/colorfieldinterpolator.md"
1008
1008
  },
1009
1009
  "componentlibrary": {
1010
- "description": "Extends [**Node**](https://developer.roku.com/docs/references/scenegraph/node.md\n\nThe ComponentLibrary node class downloads a library of custom SceneGraph components to be used in an application. The ComponentLibrary node should be used in a Scene node, such as Scene or OverhangPanelSetScene. One way to ensure that the library downloads before the SceneGraph application begins to compile the components for the application, is to begin the download in the main.brs file that creates the Scene node, by adding an / field to the Scene node that can be used to monitor the download, and starts the application when the download is complete.",
1010
+ "description": "Extends [**Node**](https://developer.roku.com/docs/references/scenegraph/node.md\n\nThe ComponentLibrary node class downloads a library of custom SceneGraph components to be used in an application. The ComponentLibrary node should be used in a Scene node, such as Scene or OverhangPanelSetScene. One way to ensure that the library downloads before the SceneGraph application begins to compile the components for the application, is to begin the download in the main.brs file that creates the Scene node, by adding an field to the Scene node that can be used to monitor the download, and starts the application when the download is complete.",
1011
1011
  "events": [],
1012
1012
  "extends": {
1013
1013
  "name": "Node",
@@ -1283,7 +1283,7 @@
1283
1283
  },
1284
1284
  "dynamickeyboardbase": {
1285
1285
  "availableSince": "9.4",
1286
- "description": "_Available since Roku OS 9.4_\n\nExtends [**Group**](https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/group.md\"**Group**\")\n\n> Channels must use Roku voice keyboards for [email](https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/dynamic-keyboard.md, [PIN](https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/dynamic-pinpad.md, [password](https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/dynamic-keyboard.md entry to pass [certification](/docs/developer-program/certification/certification.md#4-channel-operation).\n\nThe DynamicKeyboardBase is an abstract class that provides the functionality for dynamic voice-enabled keyboards. It combines [**DynamicKeyGrid**](https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/dynamic-key-grid.md and [**VoiceTextEditBox**](https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/voice-text-edit-box.md nodes to provide a single node that supports text entry in multiple languages and voice entry in English and Spanish.\n\n* The [**DynamicKeyGrid**](https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/dynamic-key-grid.md provides keyboard functionality. The layout of the keyboard is based on a JSON-formatted Key Definition File.\n \n The classes derived from DynamicKeyboardBase (DynamicKeyboard, DynamicPinPad, and DynamicMiniKeyboard) have built-in Key Definition Files. For example, the DynamicKeyboard node uses a Key Definition File that matches the key layout of the [legacy Keyboard node](https://developer.roku.com/docs/references/scenegraph/widget-nodes/keyboard.md.\n \n The [**DynamicCustomKeyboard** node](https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/dynamic-custom-keyboard.md enables developers to define a custom Key Definition File in order to configure the key layout. In the Key Definition File, the developer specifies the keys in each section and row of the keyboard. The keys support the characters in the Basic Latin, Latin 1 Supplement, Latin Extended-A, and Latin Extended-B blocks. This provides support for most Western European languages, including English, French, German, Italian, Portuguese, and Spanish.\n \n\n* The [**VoiceTextEditBox**](https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/voice-text-edit-box.md displays the text that has been entered or spoken. This node supports multiple voice entry modes for entering email addresses, passwords, street addresses, and PINs. This node currently supports voice entry in English and Spanish.\n\n> Developers should upgrade the [legacy keyboards](https://developer.roku.com/docs/references/scenegraph/widget-nodes/keyboard.md in their channels to dynamic voice-enabled keyboards in order to leverage the following benefits:\n> \n> * **Faster on-device sign-ups and sign-ins.** Enable customers to use voice entry to provide their information when subscribing to channels and logging in.\n> \n> * **Localized in-channel search**: Enable customers to search for content in their native language.\n> \n> * **Localized customer information entry**: Enable customers to enter their personal information in their native language.\n>",
1286
+ "description": "_Available since Roku OS 9.4_\n\nExtends [**Group**](https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/group.md\"**Group**\")\n\n> Channels must use Roku voice keyboards for [email](https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/dynamic-keyboard.md, [PIN](https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/dynamic-pinpad.md, [password](https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/dynamic-keyboard.md entry to pass [certification](/docs/developer-program/certification/certification.md#4-channel-operation).\n\nThe DynamicKeyboardBase is an abstract class that provides the functionality for dynamic voice-enabled keyboards. It combines [**DynamicKeyGrid**](https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/dynamic-key-grid.md and [**VoiceTextEditBox**](https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/voice-text-edit-box.md nodes to provide a single node that supports text entry in multiple languages and voice entry in English.\n\n* The [**DynamicKeyGrid**](https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/dynamic-key-grid.md provides keyboard functionality. The layout of the keyboard is based on a JSON-formatted Key Definition File.\n \n The classes derived from DynamicKeyboardBase (DynamicKeyboard, DynamicPinPad, and DynamicMiniKeyboard) have built-in Key Definition Files. For example, the DynamicKeyboard node uses a Key Definition File that matches the key layout of the [legacy Keyboard node](https://developer.roku.com/docs/references/scenegraph/widget-nodes/keyboard.md.\n \n The [**DynamicCustomKeyboard** node](https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/dynamic-custom-keyboard.md enables developers to define a custom Key Definition File in order to configure the key layout. In the Key Definition File, the developer specifies the keys in each section and row of the keyboard. The keys support the characters in the Basic Latin, Latin 1 Supplement, Latin Extended-A, and Latin Extended-B blocks. This provides support for most Western European languages, including English, French, German, Italian, Portuguese, and Spanish.\n \n\n* The [**VoiceTextEditBox**](https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/voice-text-edit-box.md displays the text that has been entered or spoken. This node supports multiple voice entry modes for entering email addresses, passwords, street addresses, and PINs. This node currently supports voice entry in English only.\n\n> Developers should upgrade the [legacy keyboards](https://developer.roku.com/docs/references/scenegraph/widget-nodes/keyboard.md in their channels to dynamic voice-enabled keyboards in order to leverage the following benefits:\n> \n> * **Faster on-device sign-ups and sign-ins.** Enable customers to use voice entry to provide their information when subscribing to channels and logging in.\n> \n> * **Localized in-channel search**: Enable customers to search for content in their native language.\n> \n> * **Localized customer information entry**: Enable customers to enter their personal information in their native language.\n>",
1287
1287
  "events": [],
1288
1288
  "extends": {
1289
1289
  "name": "Group",
@@ -1332,7 +1332,7 @@
1332
1332
  },
1333
1333
  "dynamickeygrid": {
1334
1334
  "availableSince": "9.4",
1335
- "description": "_Available since Roku OS 9.4_\n\nExtends [**Group**](https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/group.md\"**Group**\")\n\nThe **DynamicKeyGrid** node implements a grid of keys that are defined and organized in a [Key Definition File](https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/key-definition-file.md. It is typically used in a subclass of the [DynamicKeyboardBase](https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/dynamic-keyboard-base.md node (DynamicKeyboard, DynamicPinPad, and DynamicMiniKeyboard) to display the string of characters entered via text or voice entry. It may also be used as an individual node.",
1335
+ "description": "_Available since Roku OS 9.4_\n\nExtends [**Group**](https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/group.md\"**Group**\")\n\nThe **DynamicKeyGrid** node implements a grid of keys that are defined and organized in a [Key Definition File](https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/key-defintion-file.md. It is typically used in a subclass of the [DynamicKeyboardBase](https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/dynamic-keyboard-base.md node (DynamicKeyboard, DynamicPinPad, and DynamicMiniKeyboard) to display the string of characters entered via text or voice entry. It may also be used as an individual node.",
1336
1336
  "events": [],
1337
1337
  "extends": {
1338
1338
  "name": "Group",
@@ -1377,7 +1377,7 @@
1377
1377
  {
1378
1378
  "accessPermission": "READ_WRITE",
1379
1379
  "default": "\"\"",
1380
- "description": "Specifies the \\[Key Definition File\\](https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/key-definition-file.md to use to define the key layout metadata.",
1380
+ "description": "Specifies the \\[Key Definition File\\](https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/key-defintion-file.md to use to define the key layout metadata.",
1381
1381
  "name": "keyDefinitionUri",
1382
1382
  "type": "uri"
1383
1383
  },
@@ -1405,7 +1405,7 @@
1405
1405
  {
1406
1406
  "accessPermission": "READ_WRITE",
1407
1407
  "default": "not set",
1408
- "description": "The \\[RSGPalette node\\](https://developer.roku.com/docs/references/scenegraph/scene.md contains the set of color values used by this DynamicKeyGrid node. By default, no RSGPalette is specified; therefore, the RSGPalette colors are inherited from the ancestor nodes in the scene graph. If the DynamicKeyboardBase node is used within a StandardDialog node, the following rules determine the color palette used by the keyboard: \\* If the \\*\\*palette\\*\\* field is set, the key grid uses it. \\* If the \\*\\*palette\\*\\* field is not set, the key grid looks up the scene graph until it finds a \\*\\*PaletteGroup\\*\\* node with its \\*\\*palette\\*\\* field set. This may be found in a \\*\\*DynamicKeyboard\\*\\* node, a \\*\\*StandardDialog\\*\\* node, or the \\*\\*Scene\\*\\* itself. \\* If no node has its \\*\\*palette\\*\\* field set, the key grid uses the default palette (gray background/white text). The RSGPalette color values used by the DynamicKeyboardBase are as follows:\n\n| Palette Color Name | Usages |\n| --- | --- |\n| KeyboardColor | Blend color for key background bitmap. |\n| PrimaryTextColor | Text color used for non-focused keys. Blend color for the icons of non-focused keys. Text color for the label of focused key suggestion items. |\n| SecondaryItemColor | Text color for disabled keys. Blend color for the icons of disabled keys. |\n| FocusColor | Blend color for the focus indicator. Blend color for the background of key suggestion pop-us. |\n| FocusItemColor | Text color for the label of the focused key. Blend color for the icons of the focused key and the focus indicator in key suggestion pop-ups. Text color for the labels of non-focused key suggestion items. |",
1408
+ "description": "The RSGPalette node contains the set of color values used by this DynamicKeyGrid node. By default, no RSGPalette is specified; therefore, the RSGPalette colors are inherited from the ancestor nodes in the scene graph. If the DynamicKeyboardBase node is used within a StandardDialog node, the following rules determine the color palette used by the keyboard: \\* If the \\*\\*palette\\*\\* field is set, the key grid uses it. \\* If the \\*\\*palette\\*\\* field is not set, the key grid looks up the scene graph until it finds a \\*\\*PaletteGroup\\*\\* node with its \\*\\*palette\\*\\* field set. This may be found in a \\*\\*DynamicKeyboard\\*\\* node, a \\*\\*StandardDialog\\*\\* node, or the \\*\\*Scene\\*\\* itself. \\* If no node has its \\*\\*palette\\*\\* field set, the key grid uses the default palette (gray background/white text). The RSGPalette color values used by the DynamicKeyboardBase are as follows:\n\n| Palette Color Name | Usages |\n| --- | --- |\n| KeyboardColor | Blend color for key background bitmap. |\n| PrimaryTextColor | Text color used for non-focused keys. Blend color for the icons of non-focused keys. Text color for the label of focused key suggestion items. |\n| SecondaryItemColor | Text color for disabled keys. Blend color for the icons of disabled keys. |\n| FocusColor | Blend color for the focus indicator. Blend color for the background of key suggestion pop-us. |\n| FocusItemColor | Text color for the label of the focused key. Blend color for the icons of the focused key and the focus indicator in key suggestion pop-ups. Text color for the labels of non-focused key suggestion items. |",
1409
1409
  "name": "palette",
1410
1410
  "type": "RSGPalette node"
1411
1411
  },
@@ -1711,13 +1711,13 @@
1711
1711
  "name": "InfoPane",
1712
1712
  "url": "https://developer.roku.com/docs/references/scenegraph/label-nodes/info-pane.md"
1713
1713
  },
1714
- "key definition file": {
1714
+ "key defintion file": {
1715
1715
  "description": "The Key Definition File is a JSON-formatted file that specifies the layout of a keyboard. The Key Definition Files for the classes derived from **DynamicKeyboardBase** (**DynamicKeyboard**, **DynamicPinPad**, and **DynamicMiniKeyboard**) are built-in and cannot be modified because the keyboard layout for these nodes is fixed. Conversely, the **DynamicCustomKeyboard** node requires developers to create the Key Definition File in order to implement a custom keyboard layout.\n\nThe Key Definition File is a single JSON object with the following six hierarchal objects (listed in order from the top to the bottom of the hierarchy):\n\n1. [KeyLayout](#keylayout)\n2. [Section](#section)\n3. [Grid](#grid)\n4. [Row](#row)\n5. [Key](#key)\n6. [KeySuggestions](#keysuggestions)\n\nProperties can be set at any level of the hierarchy and are used to determine the default values for the subparts at lower levels in the hierarchy. For example, setting the **keyboardHeight** property at the **KeyLayout** level will specify the default height of each **Row** in each **Grid** in each **Section** of the grid used. If a **Grid** specifies a **gridHeight** property, it is set as the default for each **Row** in that **Grid**. In both cases, if any **Row** in the **Grid** specifies a **rowHeight** property, that height will be used as the default for each **Key** in that **Row**.",
1716
1716
  "events": [],
1717
1717
  "fields": [],
1718
1718
  "interfaces": [],
1719
- "name": "Key Definition File",
1720
- "url": "https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/key-definition-file.md"
1719
+ "name": "Key Defintion File",
1720
+ "url": "https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/key-defintion-file.md"
1721
1721
  },
1722
1722
  "keyboard": {
1723
1723
  "description": "Extends [**Group**](https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/group.md\"**Group**\")\n\nThe Keyboard node class allows a user to enter a string of alphanumeric characters. The string entered is displayed in a [TextEditBox](https://developer.roku.com/docs/references/scenegraph/widget-nodes/texteditbox.md\"TextEditBox\") node that is part of the Keyboard node.\n\nThe Keyboard node must have the key focus in order to work properly. By default, a Keyboard node toggles between uppercase and lowercase letters when the Options remote key is pressed, to speed the entry of mixed-case strings by the user. It is important not to override this behavior, particularly if a Keyboard node is used as an internal node for a [KeyboardDialog](https://developer.roku.com/docs/references/scenegraph/dialog-nodes/keyboarddialog.md\"KeyboardDialog\") node.\n\nThe default appearance of a Keyboard node is very transparent, allowing the keyboard to pick up most of its color from what is rendered underneath it. The appearance can be customized by changing the keyboardBitmapUri and other fields.",
@@ -1816,6 +1816,13 @@
1816
1816
  "url": "https://developer.roku.com/docs/references/scenegraph/label-nodes/label-base.md"
1817
1817
  },
1818
1818
  "fields": [
1819
+ {
1820
+ "accessPermission": "READ_WRITE",
1821
+ "default": "false",
1822
+ "description": "If the height field value is greater than zero, used to determine whether or not the last line of visible text is displayed if it would be clipped vertically",
1823
+ "name": "displayPartialLines",
1824
+ "type": "Boolean"
1825
+ },
1819
1826
  {
1820
1827
  "accessPermission": "READ_WRITE",
1821
1828
  "default": "false",
@@ -1858,13 +1865,6 @@
1858
1865
  "name": "color",
1859
1866
  "type": "color"
1860
1867
  },
1861
- {
1862
- "accessPermission": "READ_WRITE",
1863
- "default": "false",
1864
- "description": "If the height field value is greater than zero, used to determine whether or not the last line of visible text is displayed if it would be clipped vertically.",
1865
- "name": "displayPartialLines",
1866
- "type": "Boolean"
1867
- },
1868
1868
  {
1869
1869
  "accessPermission": "READ_WRITE",
1870
1870
  "default": "",
@@ -2230,7 +2230,7 @@
2230
2230
  {
2231
2231
  "accessPermission": "READ_WRITE",
2232
2232
  "default": "top",
2233
- "description": "Specifies the alignment point in the vertical direction. The effect of the value set depends on the whether the layoutDirection field value is set to either horiz or vert\n\n| Value | layoutDirection | Use |\n| --- | --- | --- |\n| top | horiz | Aligns the top edges of each child in the row, and sets the **LayoutGroup** node local y-coordinate origin at the top edge of the children |\n| top | vert | Sets the LayoutGroup node local y-coordinate origin at the top edge of the first child |\n| center | horiz | Aligns the centers of each child in the row, and sets the LayoutGroup node local y-coordinate origin at the center alignment point |\n| center | vert | Sets the **LayoutGroup** node local y-coordinate origin at the center of the vertical column of children |\n| bottom | horiz | Aligns the bottom edges of each child in the row, and sets the **LayoutGroup** node local y-coordinate origin at the bottom edge of the children |\n| bottom | vert | Sets the LayoutGroup node local y-coordinate origin at the bottom edge of the last child |\n| custom | horiz | Explicitly set the y translation of each child of the LayoutGroup. If the layoutDirection is \"vert\", custom will not be a valid setting. Instead, \"top\" will be used to do the child layout. |",
2233
+ "description": "Specifies the alignment point in the vertical direction. The effect of the value set depends on the whether the layoutDirection field value is set to either horiz or vert\n\n| Value | layoutDirection | Use |\n| --- | --- | --- |\n| top | horiz | Aligns the top edges of each child in the row, and sets the **LayoutGroup** node local y-coordinate origin at the top edge of the children |\n| top | vert | Sets the LayoutGroup node local y-coordinate origin at the top edge of the first child |\n| center | horiz | Aligns the centers of each child in the row, and sets the LayoutGroup node local y-coordinate origin at the center alignment point |\n| vert | vert | Sets the **LayoutGroup** node local y-coordinate origin at the center of the vertical column of children |\n| bottom | horiz | Aligns the bottom edges of each child in the row, and sets the **LayoutGroup** node local y-coordinate origin at the bottom edge of the children |\n| bottom | vert | Sets the LayoutGroup node local y-coordinate origin at the bottom edge of the last child |\n| custom | horiz | Explicitly set the y translation of each child of the LayoutGroup. If the layoutDirection is \"vert\", custom will not be a valid setting. Instead, \"top\" will be used to do the child layout. |",
2234
2234
  "name": "vertAlignment",
2235
2235
  "type": "string"
2236
2236
  }
@@ -2302,7 +2302,7 @@
2302
2302
  "url": "https://developer.roku.com/docs/references/scenegraph/sliding-panels-nodes/listpanel.md"
2303
2303
  },
2304
2304
  "markupgrid": {
2305
- "description": "Extends [**ArrayGrid**](https://developer.roku.com/docs/references/scenegraph/abstract-nodes/arraygrid.md\n\nThe MarkupGrid node class is a is a generic grid class that can be used to display a set of items arranged into a 2D grid. The contents of each grid item is an instance of an XML component specified by the `itemComponentName` field. An instance of the XML component is used to display the data for each item in the grid data model. The appearance of the grid item as it enters/exits the grid focus position can be customized using scripting. [SimpleMarkupList](https://github.com/rokudev/samples/blob/master/ux%20components/lists%20and%20grids/SimpleMarkupList) is a sample channel containing a MarkupGrid where each item is an instance of an XML component. See the section [MarkupGrid XML component](https://developer.roku.com/docs/references/scenegraph/list-and-grid-nodes/markupgrid.mdmarkupgrid-xml-component) for details.\n\nThe number of columns in the MarkupGrid node is fixed and the number of rows varies as needed to display all of the items in the grid data model. The items in the grid fill each row from left to right, then top to bottom. For example, if the grid data contains 8 items and the number of columns is set to 3, then items 1, 2 and 3 will be in the first row. Items 4, 5 and 6 will be in the second row. The third row will contain items 7 and 8 in the leftmost two columns and blank space in the right column.\n\nThe layout of rows and columns in the grid is very flexible. Possible layouts include:\n\n* a simple layout with all items in the grid having the same size\n* a layout with the items in some rows having varying heights and/or the items in some columns having varying widths\n* a layout with varying width rows and columns and items that occupy one or more rows and columns\n\nThe grid items can be organized into sections that are demarcated by labelled horizontal divider lines between the sections.",
2305
+ "description": "Extends [**ArrayGrid**](https://developer.roku.com/docs/references/scenegraph/abstract-nodes/arraygrid.md\n\nThe MarkupGrid node class is a is a generic grid class that can be used to display a set of items arranged into a 2D grid. The contents of each grid item is an instance of an XML component specified by the `itemComponentName` field. An instance of the XML component is used to display the data for each item in the grid data model. The appearance of the grid item as it enters/exits the grid focus position can be customized using scripting. [SimpleMarkupList.zip](https://github.com/rokudev/samples/blob/master/ux%20components/lists%20and%20grids/SimpleMarkupList.zip) is a sample channel containing a MarkupGrid where each item is an instance of an XML component. See the section [MarkupGrid XML component](https://developer.roku.com/docs/references/scenegraph/list-and-grid-nodes/markupgrid.mdmarkupgrid-xml-component) for details.\n\nThe number of columns in the MarkupGrid node is fixed and the number of rows varies as needed to display all of the items in the grid data model. The items in the grid fill each row from left to right, then top to bottom. For example, if the grid data contains 8 items and the number of columns is set to 3, then items 1, 2 and 3 will be in the first row. Items 4, 5 and 6 will be in the second row. The third row will contain items 7 and 8 in the leftmost two columns and blank space in the right column.\n\nThe layout of rows and columns in the grid is very flexible. Possible layouts include:\n\n* a simple layout with all items in the grid having the same size\n* a layout with the items in some rows having varying heights and/or the items in some columns having varying widths\n* a layout with varying width rows and columns and items that occupy one or more rows and columns\n\nThe grid items can be organized into sections that are demarcated by labelled horizontal divider lines between the sections.",
2306
2306
  "events": [],
2307
2307
  "extends": {
2308
2308
  "name": "ArrayGrid",
@@ -2532,7 +2532,7 @@
2532
2532
  "url": "https://developer.roku.com/docs/references/scenegraph/list-and-grid-nodes/markupgrid.md"
2533
2533
  },
2534
2534
  "markuplist": {
2535
- "description": "Extends [**ArrayGrid**](https://developer.roku.com/docs/references/scenegraph/abstract-nodes/arraygrid.md\n\nThe MarkupList node class is a generic list class that can be used to display a list of items.\n\nThe contents of each list item is an instance of an XML component specified by the `itemComponentName` field value. An instance of the XML component is used to display the data for each item in the list data model. The appearance of the list item as it enters/exits the list focus position can be customized using BrightScript.\n\n[SimpleMarkupList](https://github.com/rokudev/samples/tree/master/ux%20components/lists%20and%20grids) is a sample channel containing a MarkupList where each item is an instance of an XML component. See the [MarkupList XML component](#markuplist-xml-component) section for details.\n\n**Example**\n\nThe following example displays the use of the MarkupList node.\n\n![roku815px - markuplist-node](https://image.roku.com/ZHZscHItMTc2/markuplist-node.png \"markuplist-node\")",
2535
+ "description": "Extends [**ArrayGrid**](https://developer.roku.com/docs/references/scenegraph/abstract-nodes/arraygrid.md\n\nThe MarkupList node class is a generic list class that can be used to display a list of items.\n\nThe contents of each list item is an instance of an XML component specified by the `itemComponentName` field value. An instance of the XML component is used to display the data for each item in the list data model. The appearance of the list item as it enters/exits the list focus position can be customized using BrightScript.\n\n[SimpleMarkupList.zip](https://github.com/rokudev/samples/tree/master/ux%20components/lists%20and%20grids) is a sample channel containing a MarkupList where each item is an instance of an XML component. See the [MarkupList XML component](#markuplist-xml-component) section for details.\n\n**Example**\n\nThe following example displays the use of the MarkupList node.\n\n![roku815px - markuplist-node](https://image.roku.com/ZHZscHItMTc2/markuplist-node.png \"markuplist-node\")",
2536
2536
  "events": [],
2537
2537
  "extends": {
2538
2538
  "name": "ArrayGrid",
@@ -2924,23 +2924,6 @@
2924
2924
  "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifsgnodehttpagentaccess.md"
2925
2925
  }
2926
2926
  ],
2927
- "methods": [
2928
- {
2929
- "description": "callFunc() is a synchronized interface on roSGNode. It will always execute in the component's owning ScriptEngine and thread (by rendezvous if necessary), and it will always use the m and m.top of the owning component. Any context from the caller can be passed via one or more method parameters, which may be of any type (previously, callFunc() only supported a single associative array parameter).\n\nTo call the function, use the `callFunc` field with the required method signature. A return value, if any, can be an object that is similarly arbitrary. The method being called must determine how to interpret the parameters included in the `callFunc` field.",
2930
- "isVariadic": true,
2931
- "name": "callFunc",
2932
- "params": [
2933
- {
2934
- "default": null,
2935
- "description": "The function name to call.",
2936
- "isRequired": true,
2937
- "name": "functionName",
2938
- "type": "String"
2939
- }
2940
- ],
2941
- "returnType": "Dynamic"
2942
- }
2943
- ],
2944
2927
  "name": "Node",
2945
2928
  "url": "https://developer.roku.com/docs/references/scenegraph/node.md"
2946
2929
  },
@@ -3253,7 +3236,7 @@
3253
3236
  {
3254
3237
  "accessPermission": "READ_WRITE",
3255
3238
  "default": "noScale",
3256
- "description": "Provides automatic scaling of graphical images after loading. If you intend to load very large graphical images, such as larger than the user interface resolution, you must set one of the scaling options other than noScale, otherwise the image may fail to load. The following are the possible field values:\n\n| Option | Effect |\n| --- | --- |\n| limitSize | Scale the image while loading it into texture memory so that the maximum width and height in either dimension does not exceed the specified loadWidth or loadHeight values. If the image is smaller in both dimensions than the specified values, the image is loaded at its regular size. Aspect ratio is preserved. |\n| noScale | The bitmap will be loaded at the image's original resolution. If the Poster's width and height differ from the bitmap's resolution, it will be scaled to fill the Poster's dimensions. Aspect ratio is not preserved. |\n| scaleToFit | Scale the image to fit into the target screen element area, preserving the aspect ratio but \"letterboxing\" or \"pillarboxing\" the image (background-color bars at the top/bottom or left/right of the image). > This field in not supported on Liberty and Littlefield devices for images that are both scaled and rotated. On these devices, scaled and rotated images appear as if the **scaleToFill** property was applied to them. |\n| scaleToFill | Stretch the image dimensions to fill the target screen element area, distorting the image if the target screen element area has a different aspect ratio than the image. |\n| scaleToZoom | Scale the image to fill the target screen element area, preserving the aspect ratio but not \"letterboxing\" or \"pillarboxing\" the image, with some of the image cropped out. |",
3239
+ "description": "Provides automatic scaling of graphical images after loading. If you intend to load very large graphical images, such as larger than the user interface resolution, you must set one of the scaling options other than noScale, otherwise the image may fail to load. The following are the possible field values:\n\n| Option | Effect |\n| --- | --- |\n| limitSize | Scale the image while loading it into texture memory so that the maximum width and height in either dimension does not exceed the specified loadWidth or loadHeight values. If the image is smaller in both dimensions than the specified values, the image is loaded at its regular size. Aspect ratio is preserved. |\n| noScale | The bitmap will be loaded at the image's original resolution. If the Poster's width and height differ from the bitmap's resolution, it will be scaled to fill the Poster's dimensions. Aspect ratio is not preserved. |\n| scaleToFit | Scale the image to fit into the target screen element area, preserving the aspect ratio but \"letterboxing\" or \"pillarboxing\" the image (background-color bars at the top/bottom or left/right of the image). |\n| scaleToFill | Stretch the image dimensions to fill the target screen element area, distorting the image if the target screen element area has a different aspect ratio than the image. |\n| scaleToZoom | Scale the image to fill the target screen element area, preserving the aspect ratio but not \"letterboxing\" or \"pillarboxing\" the image, with some of the image cropped out. |",
3257
3240
  "name": "loadDisplayMode",
3258
3241
  "type": "option string"
3259
3242
  },
@@ -4111,6 +4094,27 @@
4111
4094
  "name": "RowList",
4112
4095
  "url": "https://developer.roku.com/docs/references/scenegraph/list-and-grid-nodes/rowlist.md"
4113
4096
  },
4097
+ "rsgpalette": {
4098
+ "availableSince": "9.4",
4099
+ "description": "_Available since Roku OS 9.4_\n\nExtends [Node](https://developer.roku.com/docs/references/scenegraph/node.md\n\nThe **RSGPalette** node allows developers to specify a named set of color values that can be shared among nodes that support RSGPalette colors.\n\nNodes that support RSGPalette colors include a **palette** field, which can be set to an **RSGPalette** node to override the default colors used by the node. The specific palette values used by those nodes are defined in each node's documentation.\n\nIf a node that supports a palette does not set its **palette** filed, the RSGPalette is inherited from ancestor nodes in the scene graph. Specifically, the node looks up the scene graph until it finds a **PaletteGroup** node with its **palette** field set. This may be found in the **Scene** itself.\n\nIf no node in the scene graph has its **palette** field set, the keyboard uses the default palette (gray background/white text).\n\nCurrently, the **RSGPalette** node is typically used in channels that customize the colors of the dynamic keyboard nodes. In this case, the channel assigns the RSGPalette node to the **palette** field of the [DynamicKeyboardBase](https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/dynamic-keyboard-base.md\"DynamicKeyboardBase\") node and lets the keyboard's **DynamicKeyGrid** and **VoiceTextEditBox** inherit that RSGPalette.\n\n> The colors in the RSGPalette do not cascade. If a child node overrides its parent's RSGPalette node, that RSGPalette should specify values for all the colors used by the node. Unspecified values will use the system default colors.",
4100
+ "events": [],
4101
+ "extends": {
4102
+ "name": "Node",
4103
+ "url": "https://developer.roku.com/docs/references/scenegraph/node.md"
4104
+ },
4105
+ "fields": [
4106
+ {
4107
+ "accessPermission": "READ_WRITE",
4108
+ "default": "not specified",
4109
+ "description": "Specifies an associative array of color name/color key-value pairs. For example: \\`\\`\\` { PrimaryTextColor: 0x111111FF, FocusColor: 0x0000FFFF } \\`\\`\\` .",
4110
+ "name": "colors",
4111
+ "type": "associative array"
4112
+ }
4113
+ ],
4114
+ "interfaces": [],
4115
+ "name": "RSGPalette",
4116
+ "url": "https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/rsg-palette.md"
4117
+ },
4114
4118
  "scene": {
4115
4119
  "description": "Extends [**Group**](https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/group.md\"**Group**\")\n\nThe **Scene** node class serves as the root of a SceneGraph node tree. Every **roSGScreen** object must have a **Scene** node, or a node that derives from the **Scene** node class as its root, including an XML markup component that extends the Scene node class or subclass. That node must be created using the **roSGScreen** createScene() function, with an argument that is a string of the name of the **Scene** node object created. For example:\n\n```\nscreen = CreateObject(\"roSGScreen\")\nscene = screen.CreateScene(\"Scene\")\n```\n\nWhile it is technically possible to have more than one scene per channel, we recommend you only have one **roSGScreen** and one **Scene** node. Child nodes of the scene can be treated as different \"scenes\" where you can then implement transitions between them.",
4116
4120
  "events": [],
@@ -4129,7 +4133,7 @@
4129
4133
  {
4130
4134
  "accessPermission": "READ_WRITE",
4131
4135
  "default": "0x000000FF",
4132
- "description": "Loads an image using the provided background URI as-is and does not apply any scaling whatsoever when \"limitBackgroundToUIResolution\" is false. Specifies a background color for the scene. This color is only used if the backgroundURI field is set to an empty string. For example: scene.backgroundColor=\"0xEB1010FF\" scene.backgroundUri = \"\"",
4136
+ "description": "Specifies a background color for the scene. This color is only used if the backgroundURI field is set to an empty string. For example: scene.backgroundColor=\"0xEB1010FF\" scene.backgroundUri = \"\"",
4133
4137
  "name": "backgroundColor",
4134
4138
  "type": "color"
4135
4139
  },
@@ -4154,18 +4158,11 @@
4154
4158
  "name": "dialog",
4155
4159
  "type": "Node"
4156
4160
  },
4157
- {
4158
- "accessPermission": "READ_WRITE",
4159
- "default": "true",
4160
- "description": "If the scene background URI is overridden with a non-theme value and this field is set to true, the \\*\\*backgroundURI\\*\\* image is limited to the current screen size after being loaded. if this field is set to false, the \\*\\*backgroundURI\\*\\* image is loaded without any scaling applied.",
4161
- "name": "limitBackgroundToUIResolution",
4162
- "type": "boolean"
4163
- },
4164
4161
  {
4165
4162
  "accessPermission": "READ_WRITE",
4166
4163
  "default": "not set",
4167
4164
  "description": "Defines the default color palette used by those nodes that have a \\*\\*palette\\*\\* field (for example, the \\*\\*Scene\\*\\* node, \\[standard dialogs\\](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/standard-dialog.md, \\[dynamic custom voice keyboards\\](https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/dynamic-keyboard-base.md, and so on). Channels typically set the \\*\\*Scene.palette\\*\\* field to consistently color the standard dialogs and keyboards in the channel. Nodes that include a \\*\\*palette\\*\\* field can be set to an \\*\\*RSGPalette\\*\\* node to override the default colors specified in the \\*\\*Scene\\*\\* node. If a node that supports a palette does not set its \\*\\*palette\\*\\* filed, the node looks up the scene graph until it finds a node with its \\*\\*palette\\*\\* field set. If no ancestor node is found with its palette field set, the default color palette is used (grey with white text). The RSGPalette color values used by the Scene node are as follows:\n\n| Palette Color Name | Usages |\n| --- | --- |\n| PrimaryTextColor | The text color used for the entered text displayed in the VoiceTextEditBox node. |\n| SecondaryTextColor | The text color used for the hints displayed in the VoiceTextEditBox. |\n| InputFieldColor | The blend color applied to the VoiceTextEditBox background |\n| DialogBackgroundColor | Blend color for dialog's background bitmap. |\n| DialogItemColor | Blend color for the following items: * [StdDlgProgressItem's](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-progress-item.md spinner bitmap * [StdDlgDeterminateProgressItem's](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-determinate-progress-item.md graphic |\n| DialogTextColor | Color for the text in the following items: * [StdDlgTextItem](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-text-item.md and [StdDlgGraphicItem](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-graphic-item.md if the **namedTextStyle** field is set to \"normal\" or \"bold\". * All [content area items](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-item-base.md, except for [StdDlgTextItem](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-text-item.md and [StdDlgGraphicItem](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-graphic-item.md. * [Title area](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-title-area.mdfields). Unfocused button. |\n| DialogFocusColor | Blend color for the following: * The [button area](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-button-area.mdfields) focus bitmap. * The focused scrollbar thumb. |\n| DialogFocusItemColor | Color for the text of the focused button. |\n| DialogSecondaryTextColor | Color for the text of in the following items: * [StdDlgTextItem](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-text-item.md and [StdDlgGraphicItem](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-graphic-item.md if the **namedTextStyle** field is set to \"secondary\". * Disabled button. |\n| DialogSecondaryItemColor | Color for the following items: * The divider displayed below the title area. * The unfilled portion of the [StdDlgDeterminateProgressItem's](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-determinate-progress-item.md graphic. |\n| DialogInputFieldColor | The blend color for the text edit box background bitmap for keyboards used inside dialogs. |\n| DialogKeyboardColor | The blend color for the keyboard background bitmap for keyboards used inside dialogs |\n| DialogFootprintColor | The blend color for the following items: * The button focus footprint bitmap that is displayed when the [button area](https://developer.roku.com/docs/references/scenegraph/standard-dialog-framework-nodes/std-dlg-button-area.mdfields) does not have focus. * Unfocused scrollbar thumb and scrollbar track. |",
4168
- "name": "palette",
4165
+ "name": "palete",
4169
4166
  "type": "RSGPalette node"
4170
4167
  }
4171
4168
  ],
@@ -4456,7 +4453,7 @@
4456
4453
  "url": "https://developer.roku.com/docs/references/scenegraph/renderable-nodes/simplelabel.md"
4457
4454
  },
4458
4455
  "soundeffect": {
4459
- "description": "Extends [**Node**](https://developer.roku.com/docs/references/scenegraph/node.md\n\nThe SoundEffect node class is used to play audio sound effects that can be triggered from events that occur in the UI. Typically, these sound effects are short audio clips, but there is no inherent limit on their length. Currently, up to four simultaneous sounds can be playing at any time, in addition to audio from streaming content and TextToSpeech audio.\n\nFiles can be installed locally as part of the channel package or dynamically downloaded from the network. All files must be WAV (i.e. PCM) format.\n\nFor local files, the convention is to include the WAV files in a directory named \"sounds\".\n\nFor downloaded files, a least-recently-used (LRU) mechanism is used to keep the most recently downloaded/played sounds in temporary storage on the device. If the limits on the maximum number/size of downloaded sounds is exceeded, the least recently used sounds are removed from temporary storage. They will be automatically reloaded the next time the control field is set to \"play\".\n\nA sample demonstrating how to use the SoundEffect node can be found here: [SimpleSoundEffect](https://github.com/rokudev/samples/blob/master/media/SimpleSoundEffect)",
4456
+ "description": "Extends [**Node**](https://developer.roku.com/docs/references/scenegraph/node.md\n\nThe SoundEffect node class is used to play audio sound effects that can be triggered from events that occur in the UI. Typically, these sound effects are short audio clips, but there is no inherent limit on their length. Currently, up to four simultaneous sounds can be playing at any time, in addition to audio from streaming content and TextToSpeech audio.\n\nFiles can be installed locally as part of the channel package or dynamically downloaded from the network. All files must be WAV (i.e. PCM) format.\n\nFor local files, the convention is to include the WAV files in a directory named \"sounds\".\n\nFor downloaded files, a least-recently-used (LRU) mechanism is used to keep the most recently downloaded/played sounds in temporary storage on the device. If the limits on the maximum number/size of downloaded sounds is exceeded, the least recently used sounds are removed from temporary storage. They will be automatically reloaded the next time the control field is set to \"play\".\n\nA sample demonstrating how to use the SoundEffect node can be found here: [SimpleSoundEffect](https://github.com/rokudev/samples/blob/master/media/SimpleSoundEffect.zip)",
4460
4457
  "events": [],
4461
4458
  "extends": {
4462
4459
  "name": "Node",
@@ -4582,6 +4579,13 @@
4582
4579
  "name": "buttons",
4583
4580
  "type": "array of strings"
4584
4581
  },
4582
+ {
4583
+ "accessPermission": "Access Permission",
4584
+ "default": "Default",
4585
+ "description": "Description",
4586
+ "name": "Field",
4587
+ "type": "Type"
4588
+ },
4585
4589
  {
4586
4590
  "accessPermission": "READ_WRITE",
4587
4591
  "default": "\"generic\"",
@@ -5250,13 +5254,6 @@
5250
5254
  "url": "https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/group.md"
5251
5255
  },
5252
5256
  "fields": [
5253
- {
5254
- "accessPermission": "READ_WRITE",
5255
- "default": "false",
5256
- "description": "Forces the item index to be interpolated in an advanced manner when animating between items. This only has an effect when the \\*\\*wrap\\*\\* field is set to true. For example, when the number of items is 10 and we are interpolating from item 9 to item 0, not enabling this option will result in the following sequence: 9 -> 8 -> 7 -> … -> 0, rather than 9 -> 0.",
5257
- "name": "advancing",
5258
- "type": "boolean"
5259
- },
5260
5257
  {
5261
5258
  "accessPermission": "WRITE_ONLY",
5262
5259
  "default": "0",
@@ -5306,13 +5303,6 @@
5306
5303
  "name": "duration",
5307
5304
  "type": "Time"
5308
5305
  },
5309
- {
5310
- "accessPermission": "READ_WRITE",
5311
- "default": "inOutCubic",
5312
- "description": "Specifies the interpolator used in TargetGroup animations between items.",
5313
- "name": "easeFunction",
5314
- "type": "string"
5315
- },
5316
5306
  {
5317
5307
  "accessPermission": "READ_WRITE",
5318
5308
  "default": "",
@@ -5348,13 +5338,6 @@
5348
5338
  "name": "jumpToItem",
5349
5339
  "type": "integer"
5350
5340
  },
5351
- {
5352
- "accessPermission": "READ_WRITE",
5353
- "default": "false",
5354
- "description": "Force the item index to be interpolated in a reverse manner when animating between items. This only has an effect when the \\*\\*wrap\\*\\* field is set to true. For example, when the number of items is 10 and we are interpolating from item 0 to item 9, not enabling this option will result in the following sequence: 0 -> 1 -> … -> 9 rather than 0 -> 9.",
5355
- "name": "reversing",
5356
- "type": "boolean"
5357
- },
5358
5341
  {
5359
5342
  "accessPermission": "READ_WRITE",
5360
5343
  "default": "false",
@@ -5692,13 +5675,6 @@
5692
5675
  "url": "https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/group.md"
5693
5676
  },
5694
5677
  "fields": [
5695
- {
5696
- "accessPermission": "WRITE_ONLY",
5697
- "default": "{ }",
5698
- "description": "The significance and priority order of the attributes and values for the audio tracks available in the video stream. > A language matching any country code does not match a track that specifies the same language but with no country code. Provide the attribute fields from highest to lowest significance (for example, if the \\*\\*language\\*\\* should take precedence over the \\*\\*description\\*\\*, list \\*\\*language\\*\\* first. For the audio track languages, provide the language code values from highest to lowest priority (for example, if English for the United States \\\\\\[\"en-US\"\\\\\\] has precedence over English for the United Kingdom \\\\\\[\"en-UK\"\\\\\\], list the language codes in the following order: \\\\\\[\"en-US\", \"en-UK\"\\\\\\].\n\n| Field | Type | Description |\n| --- | --- | --- |\n| values | roAssociativeArray | Specify values for the following audio track attributes. List the attributes from highest to lowest significance. <table><thead><tr><th>Field</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>language</td><td>array of Strings</td><td>A list of (ISO-639)/country (ISO-3166) codes for the audio track. List the languages in priority order (highest to lowest).</td></tr><tr><td>descriptive</td><td>array of Strings</td><td>A flag indicating whether descriptives exist for the video playing in the stream. This is equivalent to the HLS \"public.accessibility.describes-video\" characteristic.</td></tr></tbody></table> |\n| overrideSystem | boolean | Specify whether to use the channel's preferences over the system preferences (true) or use the channel's preferences only when the system preferences do not match any of the available tracks (false), which allows the channel to provide additional rules in this case. The default value is false. |\n\n\\*\\*Example\\*\\* \\`\\`\\` video.audioSelectionPreferences = { values: \\[ { language: \\[\"en-US\", \"en-UK\", \"en\", \"en-\\*\"\\] }, { descriptive: \"false\" } \\], overrideSystem: true } \\`\\`\\` \\*\\*Explanation\\*\\* The audio language with the highest priority is \"en-US\". The next highest priority language is \"en-UK\", then \"en\" with no country code, and finally \"en\" with any country code.",
5699
- "name": "audioSelectionPreferences (_Available since Roku OS 12.5_)",
5700
- "type": "roAssociativeArray"
5701
- },
5702
5678
  {
5703
5679
  "accessPermission": "READ_WRITE",
5704
5680
  "default": "NULL",
@@ -5744,14 +5720,14 @@
5744
5720
  {
5745
5721
  "accessPermission": "READ_ONLY",
5746
5722
  "default": "0",
5747
- "description": "The error code associated with the video play error set in the \\`state\\` field: \\* 0 no error \\* \\\\-1 network error (server down or unresponsive, server is unreachable, network setup problem on the client). \\* \\\\-2 connection timed out \\* \\\\-3 unknown/unspecified or generic Error \\* \\\\-4 empty list; no streams were specified to play \\* \\\\-5 media error; the media format is unknown or unsupported \\* \\\\-6 DRM error Use the \\*\\*errorStr\\*\\* and and \\*\\*errorInfo\\*\\* fields for more descriptive diagnostic information to help identify and resolve the cause of the error.",
5723
+ "description": "The error code associated with the video play error set in the \\`state\\` field. Use the \\*\\*errorStr\\*\\* and and \\*\\*errorInfo\\*\\* fields for more descriptive diagnostic information to help identify and resolve the cause of the error.",
5748
5724
  "name": "errorCode",
5749
5725
  "type": "integer"
5750
5726
  },
5751
5727
  {
5752
5728
  "accessPermission": "READ_ONLY",
5753
5729
  "default": "",
5754
- "description": "A diagnostic message to help resolve the video play error set in the \\`state\\` field. The roAssociativeArray contains the following fields:\n\n| Field | Type | Description |\n| --- | --- | --- |\n| clipId | integer | The unique ID for the clip |\n| ignored | integer | Indicates whether the error generated an exception (0) or was ignored resulting in the next item in the content list being played (1). |\n| source | string | The module that generated the error. |\n| category | String | The type of error, which includes: \"http\", \"drm\", \"mediaerror\", or \"mediaplayer\". |\n| errcode | integer | The internal Roku code associated with the error. Use the **dbgmsg** field for debugging. |\n| dbgmsg | string | A verbose debug message that can help identify the root cause of the error. |\n| drmerrcode _Available since Roku OS 10.5_ | integer | The error code returned by the DRM system, if any, when a video player error occurs |",
5730
+ "description": "A diagnostic message to help resolve the video play error set in the \\`state\\` field. The roAssociativeArray contains the following fields:\n\n| Field | Type | Description |\n| --- | --- | --- |\n| clip\\_id | integer | The unique ID for the clip |\n| ignored | integer | Indicates whether the error generated an exception (0) or was ignored resulting in the next item in the content list being played (1). |\n| source | string | The module that generated the error. |\n| category | String | The type of error, which includes: \"http\", \"drm\", \"mediaerror\", or \"mediaplayer\". |\n| error\\_code | integer | The internal Roku code associated with the error. Use the **dbgmsg** field for debugging. |\n| dbgmsg | string | A verbose debug message that can help identify the root cause of the error. |\n| error\\_attributes | string | The error attribute, which includes the clip\\_id (the unique ID of the clip that failed to play). |\n| drmerrcode _Available since Roku OS 10.5_ | integer | The error code returned by the DRM system, if any, when a video player error occurs |",
5755
5731
  "name": "errorInfo",
5756
5732
  "type": "roAssociativeArray"
5757
5733
  },
@@ -5765,7 +5741,7 @@
5765
5741
  {
5766
5742
  "accessPermission": "READ_ONLY",
5767
5743
  "default": "",
5768
- "description": "A diagnostic message to help resolve the video play error set in the \\`state\\` field. The format of the errorStr is as follows: category:{category\\\\\\_name}:error:{error\\\\\\_code}:ignored:{0|1}:{source}:{source\\\\\\_name}:{additional catcher comment}:{error\\\\\\_string}:extra:{error\\\\\\_attributes}\n\n| errorStr Field | Type | Description |\n| --- | --- | --- |\n| category\\_name | string | The type of error, which includes: \"http\", \"drm\", \"mediaerror\", or \"mediaplayer\". |\n| error\\_code | integer | The unique code associated with the error. |\n| ignored | integer | Indicates whether the error generated an exception (0) or was ignored resulting in the next item in the content list being played (1). |\n| source | string | The module that generated the error. |\n| source\\_name | string | The module that generated the error. |\n| additional catcher comment | string | Typically, the comment added when the exception is caught. |\n| error\\_string | string | A text message describing the video play error. |\n| error\\_attributes | string | The error attribute, which includes the clipId (the unique ID of the clip that failed to play). |",
5744
+ "description": "A diagnostic message to help resolve the video play error set in the \\`state\\` field. The format of the errorStr is as follows: category:{category\\\\\\_name}:error:{error\\\\\\_code}:ignored:{0|1}:{source}:{source\\\\\\_name}:{additional catcher comment}:{error\\\\\\_string}:extra:{error\\\\\\_attributes}\n\n| errorStr Field | Type | Description |\n| --- | --- | --- |\n| category\\_name | string | The type of error, which includes: \"http\", \"drm\", \"mediaerror\", or \"mediaplayer\". |\n| error\\_code | integer | The unique code associated with the error. |\n| ignored | integer | Indicates whether the error generated an exception (0) or was ignored resulting in the next item in the content list being played (1). |\n| source | string | The module that generated the error. |\n| source\\_name | string | The module that generated the error. |\n| additional catcher comment | string | Typically, the comment added when the exception is caught. |\n| error\\_string | string | A text message describing the video play error. |\n| error\\_attributes | string | The error attribute, which includes the clip\\_id (the unique ID of the clip that failed to play). |",
5769
5745
  "name": "errorStr",
5770
5746
  "type": "string"
5771
5747
  },
@@ -5814,7 +5790,7 @@
5814
5790
  {
5815
5791
  "accessPermission": "READ_WRITE",
5816
5792
  "default": "[]",
5817
- "description": "Component that shows the buttons and other specified UI elements on the pause screen at the start of playback. Each element in the array has following fields:\n\n| Field | Type | Default | Description |\n| --- | --- | --- | --- |\n| text | string | system default | Text for the button label |\n| icon | uri | \"\" | A 9-patch or PNG of the icon to be displayed when the button does not have. |\n| focusIcon | uri | \"\" | A 9-patch or PNG of the icon to be displayed when the button has focus. |\n| buttonIsDisabled | Boolean | false | Controls whether the button is disabled (true) or enabled (false). A disabled button is skipped and does not have focus while the user navigates the different playback action buttons with the directional pad on the Roku remote control. |",
5793
+ "description": "Component that shows the buttons and other specified UI elements on the pause screen at the start of playback. Each element in the array has following fields:\n\n| Field | Type | Default | Description |\n| --- | --- | --- | --- |\n| text | string | system default | Text for the button label |\n| icon | uri | \"\" | A 9-patch or PNG of the icon to be displayed when the button does not have. |\n| focusIcon | uri | \"\" | A 9-patch or PNG of the icon to be displayed when the button has focus. |\n| buttonIsDisabled | Boolean | false | Controls whether the button is disabled (true) or enabled (false). A disabled button is skipped and does not have focus while the user navigates the different playback action buttons with the directional pad on the Roku remote control. |\n| bottomRowButtons | array of strings | \\[ \\] | List of buttons to be displayed in the the bottom row the pause screen. Each string in the buttons array adds a new button to the bottom row. |\n| bottomRowButtonFocused | int | 0 | Indicates the index of the button that gained focus when the user moved the focus onto a button in the bottom row. |\n| bottomRowButtonSelected | int | 0 | Indicates the index of the selected button when the user selects one of the buttons in the bottom row. |",
5818
5794
  "name": "playbackActionButtons (_Available since Roku OS 11.5_)",
5819
5795
  "type": "roArray of roAssociativeArrays"
5820
5796
  },
@@ -5852,13 +5828,6 @@
5852
5828
  "description": "Describes the current video play state, such as if the video play has been paused.\n\n| Value | Meaning |\n| --- | --- |\n| none | No current play state |\n| buffering | Video stream is currently buffering |\n| playing | Video is currently playing |\n| paused | Video is currently paused |\n| stopped | Video is currently stopped |\n| finished | Video has successfully completed playback |\n| error | An error has occurred in the video play. The error code, message, and diagnostics can be found in the `errorCode`, `errorMsg`, and `errorStr` fields respectively. |",
5853
5829
  "name": "state",
5854
5830
  "type": "value string"
5855
- },
5856
- {
5857
- "accessPermission": "WRITE_ONLY",
5858
- "default": "{ }",
5859
- "description": "The significance and priority order of the attributes and values for the subtitle tracks available in the video stream. Provide the attribute fields from highest to lowest significance (for example, if \\*\\*language\\*\\* should take precedence over all other attributes, list it first). For the subtitle track languages, provide the language codes from highest to lowest priority (for example, if Spanish for Latin America and the Caribbean \\\\\\[\"es-419\"\\\\\\] has precedence over Spanish \\\\\\[\"es\"\\\\\\], list the language codes in the following order: \\\\\\[\"es-419\", \"es\"\\\\\\].\n\n| Field | Type | Description |\n| --- | --- | --- |\n| values | roAssociativeArray | Specify values for the following subtitle track attributes. List the attributes from highest to lowest significance. <table><thead><tr><th>Field</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>language</td><td>array of Strings</td><td>A list of language (ISO-639)/country (ISO-3166) codes for the subtitles. List the language codes in priority order (highest to lowest).</td></tr><tr><td>caption</td><td>array of Strings</td><td>A flag indicating whether captions exist for the video stream. This is equivalent to the HLS \"public.accessibility.transcribes-spoken-dialog\" characteristic.</td></tr><tr><td>descriptive</td><td>array of Strings</td><td>A flag indicating whether descriptives exist for the music and sounds in the video stream. This is equivalent to the HLS \"public.accessibility.describes-music-and-sound\" characteristic.</td></tr><tr><td>easyReader</td><td>array of Strings</td><td>A flag indicating whether subtitles are easy to read.</td></tr></tbody></table> |\n| overrideSystem | boolean | Specify whether to use the channel's preferences over the system preferences (true) or use the channel's preferences only when the system preferences do not match any of the available tracks (false), which allows the channel to provide additional rules in this case. The default value is false. |\n\n\\*\\*Example\\*\\* \\`\\`\\` video.subtitleSelectionPreferences = { values: \\[ { language: \\[\"es-419\", \"es\", \"es-\\*\", \"fr\", \"en-US\", \"en-UK\", \"en\"\\] }, { caption: \"true\" }, { descriptive: \\[\"false\"\\] }, { easyReader: \"true\" } \\], overrideSystem: true } \\`\\`\\` \\*\\*Explanation\\*\\* The subititle language with the highest priority is \"es\" with a country code of \"419\". The next highest priority language is \"es\" with no country code, and then \"es\" with any country code.",
5860
- "name": "subtitleSelectionPreferences (_Available since Roku OS 12.5_)",
5861
- "type": "roAssociativeArray"
5862
5831
  }
5863
5832
  ],
5864
5833
  "interfaces": [],
@@ -5915,8 +5884,12 @@
5915
5884
  "url": "https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/voice-text-edit-box.md"
5916
5885
  },
5917
5886
  "zoomrowlist": {
5918
- "description": "The ZoomRowList node allows a row of the Row-Row Grid to smoothly zoom up to a larger size when that row has focus. Rows in this node are capable of gaining the focus while scrolling, and smoothly zooming up by the specified amount. The amount to zoom can be specified on a per row basis so that some rows can zoom up by a larger amount than others.",
5887
+ "description": "Extends [**ArrayGrid**](https://developer.roku.com/docs/references/scenegraph/abstract-nodes/arraygrid.md\n\nThe ZoomRowList node allows a row of the Row-Row Grid to smoothly zoom up to a larger size when that row has focus. Rows in this node are capable of gaining the focus while scrolling, and smoothly zooming up by the specified amount. The amount to zoom can be specified on a per row basis so that some rows can zoom up by a larger amount than others.",
5919
5888
  "events": [],
5889
+ "extends": {
5890
+ "name": "ArrayGrid",
5891
+ "url": "https://developer.roku.com/docs/references/scenegraph/abstract-nodes/arraygrid.md"
5892
+ },
5920
5893
  "fields": [],
5921
5894
  "interfaces": [],
5922
5895
  "name": "ZoomRowList",
@@ -5958,7 +5931,7 @@
5958
5931
  "roappmemorymonitor": {
5959
5932
  "availableSince": "10.5",
5960
5933
  "constructors": [],
5961
- "description": "_Available since Roku OS 10.5_\n\nThe **roAppMemoryMonitor** component is used to subscribe channels to low-memory notifications. When a channel is subscribed, it receives a [roAppMemoryMonitorEvent](https://developer.roku.com/docs/references/brightscript/events/roappmemorymonitorevent.md when it reaches a specific percentage of the per-channel memory limit (80%).\n\n> The roAppMemoryMonitor functions are supported on all [current and updatable device models](/docs/specs/hardware.md), except for Liberty, Austin, Mustang and Littlefield.",
5934
+ "description": "_Available since Roku OS 10.5_\n\nThe **roAppMemoryMonitor** component is used to subscribe channels to low-memory notifications. When a channel is subscribed, it receives a [roAppMemoryMonitorEvent](https://developer.roku.com/docs/references/brightscript/events/roappmemorymonitorevent.md when it reaches a specific percentage of the per-channel memory limit (80%).\n\n> To use the roAppMemoryMonitor functions, you must add the **run\\_as\\_process=1** attribute to the [channel manifest](/docs/developer-program/getting-started/architecture/channel-manifest.md).\n> \n> This feature is only supported on [current Roku device models](/docs/specs/hardware.md#current-roku-models).",
5962
5935
  "events": [
5963
5936
  {
5964
5937
  "name": "roAppMemoryMonitorEvent",
@@ -6085,7 +6058,7 @@
6085
6058
  "returnType": "roAudioPlayer"
6086
6059
  }
6087
6060
  ],
6088
- "description": "The Audio Player object provides the ability to setup the playing of a series of audio streams. The object accepts an array of content meta-data objects, describing the audio and providing URLs for accessing each stream. The component understands the following streamformat values: \"mp3\", \"mp4\", \"hls\", \"es.aac-adts\", \"flac.\"\n\nThis object does not provide an interface to a screen. In order to get events both from the screen you are using and the Audio Player, you should use the same Message Port for both objects.\n\nThis object is created with no parameters:\n\n`CreateObject(\"roAudioPlayer\")`\n\n**Example**\n\n```\nSub Main()\n audioPlayer = CreateObject(\"roAudioPlayer\")\n port = CreateObject(\"roMessagePort\")\n audioPlayer.SetMessagePort(port)\n song = CreateObject(\"roAssociativeArray\")\n song.url = \"https://file-examples.com/storage/feb401d325641db2fa1dfe7/2017/11/file_example_MP3_700KB.mp3\"\n audioplayer.addcontent(song)\n audioplayer.setloop(false)\n audioPlayer.play()\n while true\n msg = wait(0, port)\n if type(msg) = \"roAudioPlayerEvent\"\n if msg.isStatusMessage() then\n print \"roAudioPlayerEvent: \"; msg.getmessage()\n if msg.getmessage() = \"end of playlist\" return\n endif\n endif\n end while\nEnd Sub\n```",
6061
+ "description": "The Audio Player object provides the ability to setup the playing of a series of audio streams. The object accepts an array of content meta-data objects, describing the audio and providing URLs for accessing each stream. The component understands the following streamformat values: \"mp3\", \"wma\", \"mp4\", \"hls\", \"es.aac-adts\", \"flac.\"\n\nThis object does not provide an interface to a screen. In order to get events both from the screen you are using and the Audio Player, you should use the same Message Port for both objects.\n\nThis object is created with no parameters:\n\n`CreateObject(\"roAudioPlayer\")`\n\n**Example**\n\n```\nSub Main()\n audioPlayer = CreateObject(\"roAudioPlayer\")\n port = CreateObject(\"roMessagePort\")\n audioPlayer.SetMessagePort(port)\n song = CreateObject(\"roAssociativeArray\")\n song.url = \"http://www.theflute.co.uk/media/BachCPE_SonataAmin_1.wma\"\n audioplayer.addcontent(song)\n audioplayer.setloop(false)\n audioPlayer.play()\n while true\n msg = wait(0, port)\n if type(msg) = \"roAudioPlayerEvent\"\n if msg.isStatusMessage() then\n print \"roAudioPlayerEvent: \"; msg.getmessage()\n if msg.getmessage() = \"end of playlist\" return\n endif\n endif\n end while\nEnd Sub\n```",
6089
6062
  "events": [
6090
6063
  {
6091
6064
  "name": "roAudioPlayerEvent",
@@ -6130,7 +6103,7 @@
6130
6103
  {
6131
6104
  "isRequired": true,
6132
6105
  "name": "param1",
6133
- "type": "dynamic"
6106
+ "type": "string"
6134
6107
  }
6135
6108
  ],
6136
6109
  "returnType": "roAudioResource"
@@ -6171,6 +6144,16 @@
6171
6144
  ],
6172
6145
  "returnType": "roBitmap"
6173
6146
  },
6147
+ {
6148
+ "params": [
6149
+ {
6150
+ "isRequired": true,
6151
+ "name": "param1",
6152
+ "type": "string"
6153
+ }
6154
+ ],
6155
+ "returnType": "roBitmap"
6156
+ },
6174
6157
  {
6175
6158
  "params": [
6176
6159
  {
@@ -6581,7 +6564,7 @@
6581
6564
  },
6582
6565
  "rohdmistatus": {
6583
6566
  "constructors": [],
6584
- "description": "The HDMI status component provides an interface to the current HDMI operational status.\n\nThis component allows you to query the status of the HDMI connection for a Roku streaming player (or set-top box \\[STB\\]) through the ifHdmiStatus interface functions. This node is not applicable for Roku TVs.",
6567
+ "description": "The HDMI status component provides an interface to the current HDMI operational status.\n\nThis component allows you to query the status of the HDMI connection for the device through the ifHdmiStatus interface functions.",
6585
6568
  "events": [],
6586
6569
  "interfaces": [
6587
6570
  {
@@ -6657,7 +6640,7 @@
6657
6640
  "returnType": "roInput"
6658
6641
  }
6659
6642
  ],
6660
- "description": "An roInput object can be used to receive events sent from a network client using the External Control Protocol (ECP), as described in [External Control API](/docs/developer-program/dev-tools/external-control-api.md \"External Control API\").\n\n> The [supports\\_input\\_launch manifest flag](/docs/developer-program/getting-started/architecture/channel-manifest.md#launch-requirement-attributes) must be set for channels to accept deep linking parameters when already running. This flag enables deep linking into content without relaunching the channel. See the [Deep Linking sample channel](https://github.com/rokudev/deep-Linking-samples) for how to use roInput to handle deep links into content while the channel is already running.\n\nRefer to [External Control Service Commands](/docs/developer-program/dev-tools/external-control-api.md#external-control-service-commands \"External Control Service Commands\") for information about the ECP input command.\n\nThis object is created without any arguments:\n\n`CreateObject(\"roInput\")`\n\n**Example**\n\nThe following prints information received from an external device in JSON format. If the external device sends the following input command:\n\n```\ncurl -d '' '<roku_target_device>:8060/input?my_event=My%20Test&x=100&y=200&action=start'\n```\n\nThe following will be printed:\n\n```\n{\"action\":\"start\",\"my_event\":\"My Test\",\"x\":\"100\",\"y\":\"200\"}\n```\n\n**roInput Example**\n\n```\nmsgPort = CreateObject(\"roMessagePort\")\n\ninput = CreateObject(\"roInput\")\ninput.SetMessagePort(msgPort)\n\nprint \"Waiting for messages...\"\nwhile true\n msg = wait(0, msgPort)\n if type(msg) = \"roInputEvent\"\n if msg.IsInput()\n info = msg.GetInfo()\n print \"Received input: \"; FormatJSON(info)\n end if\n end if\nend while\n```",
6643
+ "description": "An roInput object can be used to receive events sent from a network client using the External Control Protocol (ECP), as described in [External Control API](/docs/developer-program/debugging/external-control-api.md \"External Control API\").\n\n> The [supports\\_input\\_launch manifest flag](/docs/developer-program/getting-started/architecture/channel-manifest.md#launch-requirement-attributes) must be set for channels to accept deep linking parameters when already running. This flag enables deep linking into content without relaunching the channel. See the [Deep Linking sample channel](https://github.com/rokudev/deep-Linking-samples) for how to use roInput to handle deep links into content while the channel is already running.\n\nRefer to [External Control Service Commands](/docs/developer-program/debugging/external-control-api.md#external-control-service-commands \"External Control Service Commands\") for information about the ECP input command.\n\nThis object is created without any arguments:\n\n`CreateObject(\"roInput\")`\n\n**Example**\n\nThe following prints information received from an external device in JSON format. If the external device sends the following input command:\n\n```\ncurl -d '' '<roku_target_device>:8060/input?my_event=My%20Test&x=100&y=200&action=start'\n```\n\nThe following will be printed:\n\n```\n{\"action\":\"start\",\"my_event\":\"My Test\",\"x\":\"100\",\"y\":\"200\"}\n```\n\n**roInput Example**\n\n```\nmsgPort = CreateObject(\"roMessagePort\")\n\ninput = CreateObject(\"roInput\")\ninput.SetMessagePort(msgPort)\n\nprint \"Waiting for messages...\"\nwhile true\n msg = wait(0, msgPort)\n if type(msg) = \"roInputEvent\"\n if msg.IsInput()\n info = msg.GetInfo()\n print \"Received input: \"; FormatJSON(info)\n end if\n end if\nend while\n```",
6661
6644
  "events": [
6662
6645
  {
6663
6646
  "name": "roInputEvent",
@@ -6836,7 +6819,7 @@
6836
6819
  {
6837
6820
  "isRequired": true,
6838
6821
  "name": "param1",
6839
- "type": "dynamic"
6822
+ "type": "string"
6840
6823
  }
6841
6824
  ],
6842
6825
  "returnType": "roPath"
@@ -6887,12 +6870,12 @@
6887
6870
  {
6888
6871
  "isRequired": true,
6889
6872
  "name": "param1",
6890
- "type": "dynamic"
6873
+ "type": "string"
6891
6874
  },
6892
6875
  {
6893
6876
  "isRequired": true,
6894
6877
  "name": "param2",
6895
- "type": "dynamic"
6878
+ "type": "string"
6896
6879
  }
6897
6880
  ],
6898
6881
  "returnType": "roRegex"
@@ -6950,10 +6933,6 @@
6950
6933
  "description": "The roRegion component is used to represent a subsection of a bitmap.\n\nThe region is specified with an x,y, width, and height as well as a time field for use with animated sprites and a wrap field which causes the region to wrap during scrolling. The roRegion is a common parameter used by the drawing functions of [roBitmap](https://developer.roku.com/docs/references/brightscript/components/robitmap.md\"roBitmap\"). Wrap and Time are used by [roCompositor](https://developer.roku.com/docs/references/brightscript/components/roCompositor.md\"roCompositor\"). roRegion is also used to specify a pretranslation (x,y) for the draw, rotate, and scale operation. The pretranslation is normally used to specify the center of the region. The scaling operation is controlled by the scalemode specified in the region.\n\nThis object is created with parameters to initialize the x,y coordinates, width, height. If time and wrap are desired, use the SetTime() and SetWrap().\n\n`CreateObject(\"roRegion\", Object bitmap, Integer x, Integer y, Integer width, Integer height)`",
6951
6934
  "events": [],
6952
6935
  "interfaces": [
6953
- {
6954
- "name": "ifDraw2D",
6955
- "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifdraw2d.md"
6956
- },
6957
6936
  {
6958
6937
  "name": "ifRegion",
6959
6938
  "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifregion.md"
@@ -6969,7 +6948,7 @@
6969
6948
  "returnType": "roRegistry"
6970
6949
  }
6971
6950
  ],
6972
- "description": "The Registry is an area of non-volatile storage where a small number of persistent settings can be stored.\n\nThe Registry provides a means for an application to write and read small amounts of data such as settings, scores, etc. The data persists even if the user exits the application and even if the player is rebooted. Registry data is removed only when the application explicitly removes it, the user uninstalls the application, which remove the registry for the application, or the user performs a factory reset, which removes the registry for all applications.\n\nAccess to the registry is available through the roRegistry object. This object is created with no parameters:\n\n`CreateObject(\"roRegistry\")`\n\nThere is a separate registry for each [developer ID](/docs/developer-program/publishing/packaging-channels.md#step-3-run-the-genkey-utility-to-create-a-signing-key \"developer ID\"). This allows multiple applications to use the registry without being able to read or modify the registry from other applications. If desired, a single registry can be shared across multiple applications by using the same developer ID to package the applications. This is the conventional way that an \"application suite\" with shared preferences and other shared information should work. Each registry is divided into sections which are specified by the developer for organization and grouping of attributes. Methods in ifRegistry are provided to list the sections in the registry and to provide access to the data in each section.\n\n> The maximum size of each zlib-compressed application registry is **32K bytes**. Channels should minimize the amount of data stored in the registry and the frequency in which they update it.\n> \n> Use the **ifRegistry.GetSpaceAvailable()** function to check the number of bytes available in the registry.\n\nThe Registry also supports the use of a special transient registry section. A registry section named \"Transient\" can be used to store attributes that have the lifetime of a single boot. Within a specific boot session, these values will be persistent to the application and stored as any other registry value. Whenever the user reboots the Roku Streaming Player, all \"Transient\" registry sections are removed and the values no longer persist. This technique is useful for caching data to minimize network access, yet still ensuring that this data is always fresh after a system reboot.\n\nThe registry is encrypted, and updates are relatively performance intensive and should be used sparingly. Note that all writes to the registry are delayed, and not committed to non-volatile storage until ifRegistry.Flush() or ifRegistrySection.Flush() is explicitly called. The platform may choose opportune times to flush data on its own, but no application is technically correct unless it explicitly calls Flush() at appropriate times. Flushing the registry is a relatively time-consuming operation, so it should be done as infrequently as possible. The Registry data is stored in a fault tolerant manner by preserving a backup for each write which is automatically rolled-back in the event of a failure.",
6951
+ "description": "The Registry is an area of non-volatile storage where a small number of persistent settings can be stored.\n\nThe Registry provides a means for an application to write and read small amounts of data such as settings, scores, etc. The data persists even if the user exits the application and even if the player is rebooted. Registry data is removed only when the application explicitly removes it, the user uninstalls the application, which remove the registry for the application, or the user performs a factory reset, which removes the registry for all applications.\n\nAccess to the registry is available through the roRegistry object. This object is created with no parameters:\n\n`CreateObject(\"roRegistry\")`\n\nThere is a separate registry for each [developer ID](/docs/developer-program/publishing/packaging-channels.md#step-3-run-the-genkey-utility-to-create-a-signing-key \"developer ID\"). This allows multiple applications to use the registry without being able to read or modify the registry from other applications. If desired, a single registry can be shared across multiple applications by using the same developer ID to package the applications. This is the conventional way that an \"application suite\" with shared preferences and other shared information should work. Each registry is divided into sections which are specified by the developer for organization and grouping of attributes. Methods in ifRegistry are provided to list the sections in the registry and to provide access to the data in each section.\n\n> The maximum size of each zlib-compressed application registry is **16K bytes**. Channels should minimize the amount of data stored in the registry and the frequency in which they update it.\n> \n> Use the **ifRegistry.GetSpaceAvailable()** function to check the number of bytes available in the registry.\n\nThe Registry also supports the use of a special transient registry section. A registry section named \"Transient\" can be used to store attributes that have the lifetime of a single boot. Within a specific boot session, these values will be persistent to the application and stored as any other registry value. Whenever the user reboots the Roku Streaming Player, all \"Transient\" registry sections are removed and the values no longer persist. This technique is useful for caching data to minimize network access, yet still ensuring that this data is always fresh after a system reboot.\n\nThe registry is encrypted, and updates are relatively performance intensive and should be used sparingly. Note that all writes to the registry are delayed, and not committed to non-volatile storage until ifRegistry.Flush() or ifRegistrySection.Flush() is explicitly called. The platform may choose opportune times to flush data on its own, but no application is technically correct unless it explicitly calls Flush() at appropriate times. Flushing the registry is a relatively time-consuming operation, so it should be done as infrequently as possible. The Registry data is stored in a fault tolerant manner by preserving a backup for each write which is automatically rolled-back in the event of a failure.",
6973
6952
  "events": [],
6974
6953
  "interfaces": [
6975
6954
  {
@@ -6998,7 +6977,7 @@
6998
6977
  {
6999
6978
  "isRequired": true,
7000
6979
  "name": "param1",
7001
- "type": "dynamic"
6980
+ "type": "string"
7002
6981
  }
7003
6982
  ],
7004
6983
  "returnType": "roRegistrySection"
@@ -7058,17 +7037,17 @@
7058
7037
  {
7059
7038
  "isRequired": true,
7060
7039
  "name": "param1",
7061
- "type": "dynamic"
7040
+ "type": "boolean"
7062
7041
  },
7063
7042
  {
7064
7043
  "isRequired": true,
7065
7044
  "name": "param2",
7066
- "type": "dynamic"
7045
+ "type": "integer"
7067
7046
  },
7068
7047
  {
7069
7048
  "isRequired": true,
7070
7049
  "name": "param3",
7071
- "type": "dynamic"
7050
+ "type": "integer"
7072
7051
  }
7073
7052
  ],
7074
7053
  "returnType": "roScreen"
@@ -7078,7 +7057,7 @@
7078
7057
  {
7079
7058
  "isRequired": true,
7080
7059
  "name": "param1",
7081
- "type": "dynamic"
7060
+ "type": "boolean"
7082
7061
  }
7083
7062
  ],
7084
7063
  "returnType": "roScreen"
@@ -7088,7 +7067,7 @@
7088
7067
  "returnType": "roScreen"
7089
7068
  }
7090
7069
  ],
7091
- "description": "The roScreen component provides a full screen drawing surface that can be stacked and that you can receive input events from.\n\nYou will need at least one roScreen component in your 2D game application to draw on and get events from. The origin (0,0) is the top left corner of the screen. The pixels are always RGBA 32 bits. Multiple roScreen components stack, and like other screen components only the top screen is viewable and gets events. An roScreen that is not the top most screen can still be drawn to.\n\n> Once an roScreen is created, the display stack enters \"Game Mode\", and other screen components cannot be used. Screensavers will also be disabled and will appear as a black screen in its place. Other screen components cannot be intermixed with roScreens as the roScreen display stack is maintained independently from the main screen component display stack. When the final roScreen component is closed, other screen components can be used again.\n\nWhen the roScreen constructor is called, an optional double buffer flag, and an optional resolution can be passed. If the screen is double buffered, two buffers are fully allocated when CreateObject() succeeds. If the screen is single buffered only one buffer is allocated and the \"front\" and \"back\" buffers in method descriptions below are the same buffer. When a screen is created with a different resolution than the output display, it is scaled automatically to the output display resolution.\n\nTo maintain proper aspect ratio, and take care of the different pixel aspect ratio in HD vs SD; there is a fixed set of bitmap resolutions that are allowed to be created for screens:",
7070
+ "description": "The roScreen component provides a full screen drawing surface that can be stacked and that you can receive input events from.\n\nYou will need at least one roScreen component in your 2D game application to draw on and get events from. The origin (0,0) is the top left corner of the screen. The pixels are always RGBA 32 bits. Multiple roScreen components stack, and like other screen components only the top screen is viewable and gets events. An roScreen that is not the top most screen can still be drawn to.\n\n> Once an roScreen is created, the display stack enters \"Game Mode\", and other screen components cannot be used. Screensavers will also be disabled and will appear as a black screen in its place. Other screen components cannot be intermixed with roScreens as the roScreen display stack is maintained independently from the main screen component display stack. When the final roScreen component is closed, other screen components can be used again.\n\nWhen the roScreen constructor is called, an optional double buffer flag, and an optional resolution can be passed. If the screen is double buffered, two buffers are fully allocated when CreateObject() succeeds. If the screen is single buffered only one buffer is allocated and the \"front\" and \"back\" buffers in method descriptions below are the same buffer. When a screen is created with a different resolution than the output display, it is scaled automatically to the output display resolution.\n\nTo maintain proper aspect ratio, and take care of the different pixel aspect ratio in HD vs SD; there is a fixed set of bitmap resolutions that are allowed to be created for screens:\n\n**HD mode screensizes**\n\n* 1280x720PAR=1:1 (default for HD)\n* 854x480 PAR=1:1 useful for higher performance HD games, also for 640x480 games\n* 940x480 PAR=1.1:1 used for displaying a RokuSD (720x480) games\n\n**SD mode screensizes**\n\n* 720x480 PAR=1.1:1 (default for SD)\n* 640x480 PAR=1:1 (used for 640x480 games)\n* 854x626 PAR=1:1 (used for 854x480 HD games)\n\nThe screen dimensions correspond to the drawable area that applications see. The dimensions were chosen so that applications do not need to compensate for screen aspect ratio or pixel aspect ratio.\n\nIt's likely that when porting games from other platforms, the active game area may be smaller and correspond to more traditional dimensions. In this case, the application can supply letterbox or pillarbox artwork and use an [roRegion](https://developer.roku.com/docs/references/brightscript/components/roregion.md\"roRegion\") to define the active area. The roRegion will translate and clip graphics to the proper area for the game. Similarly, roRegions are used to describe the left and right pillars for an SD game in HD mode, or the upper and lower letterbox regions for an HD game in SD mode.\n\nGames that require more performance should use smaller dimensions. Games should run in HD and SD mode. The screensizes HD 854x480 paired with SD 854x626 and HD 940x480 paired with SD 720x480 were designed for this purpose.\n\nThe game creates a single active game roRegion to do all graphics operations in. roRegions for pillar or letter boxes are used to fill the rest of the screen area depending on if the app is in HD or SD mode. Please refer to the dfSetupDisplayRegions() function in [v30/bslDefender.brs](https://developer.roku.com/docs/references/brightscript/language/component-architecture.mdv30bslcorebrs \"v30/bslDefender.brs\") for help in setting up the drawable regions in screen scaling.\n\nThere are some useful rules of thumb to be aware of to get the best performance when rendering your games:\n\n* Alpha enabled regions are expensive to render\n\nIt is a requirement that the destination be alpha enabled in order for non-rectangular sprites to be properly rendered with transparency. However the sprite used for a background would typically have all pixels be fully nontransparent. Since alpha blending is expensive, a quick way to blit the background in this scenario is to first disable alpha on the screen, manually draw the background, and then enable alpha for the screen before drawing the rest of the sprites.\n\n* Use smaller resolution images wherever possible. Scaling a large image down at run time is expensive with no benefit to the user\n* Rendering text with DrawText() is expensive\n\nFortunately, many of these calls are redundant and can be eliminated. The static text for a particular level can be drawn on the background once and this newly created background can be used for refreshing the screen. This will eliminate almost all text redraws.\n\nA screen can be created with one of three constructors. If it is created with no parameters, the screen will be single buffered, and its output resolution will match the current display resolution (if the current resolution is specified in the manifest file ui\\_resolutions entry, otherwise the size will be 720p).\n\n`CreateObject(\"roScreen\")`\n\nIf a single parameter is passed, it is a Boolean that indicates if the screen is double buffered or not. See SwapBuffers():\n\n`CreateObject(\"roScreen\", true) ' double buffered screen`\n\nIf four parameters are passed, the last two specify the screen's resolution. The dimensions must be one of the screen sizes specified above:\n\n`CreateObject(\"roScreen\", true, 720, 480) ' db & SD res`\n\n**Example: Display an image**\n\n```\nScreen=CreateObject(\"roScreen\")\ndfDrawImage(screen, \"myphoto.jpg\",0,0)\nScreen.Finish()\n```\n\n**Example: Alpha blending**\n\n```\nwhite=&hFFFFFFFF\nscreen0=CreateObject(\"roScreen\")\nscreen0.SetAlphaEnable(true)\nscreen0.Clear(white)\nscreen0.DrawRect(100,100, screen0.GetWidth()-200, screen0.GetHeight()-200, &h80)\n' &h80 is black with a 50% alpha mix (RGBA)\nscreen0.finish()\n```",
7092
7071
  "events": [
7093
7072
  {
7094
7073
  "name": "roUniversalControlEvent",
@@ -7123,7 +7102,7 @@
7123
7102
  {
7124
7103
  "isRequired": true,
7125
7104
  "name": "param1",
7126
- "type": "dynamic"
7105
+ "type": "string"
7127
7106
  }
7128
7107
  ],
7129
7108
  "returnType": "roSGNode"
@@ -7294,7 +7273,7 @@
7294
7273
  "returnType": "roSystemLog"
7295
7274
  }
7296
7275
  ],
7297
- "description": "The roSystemLog component enables the application to receive events from the Roku Streaming Player that are intended for reporting errors and trends, rather than trigger a response to a user action.\n\nAll of the log event messages are sent to the roMessagePort that is registered on the [roSystemLogEvent](https://developer.roku.com/docs/references/brightscript/events/rosystemlogevent.md\"roSystemLogEvent\") object. See roSystemLogEvent for details on the messages.\n\nThis object is created with no parameters:\n\n`CreateObject(\"roSystemLog\")`\n\nThe roSystemLog component requires specific Design Patterns in your BrightScript Application. Take care to:\n\n* Use one roMessagePort throughout the application (instead of creating a new roMessagePort for each screen).\n* Create one roSystemLog instance at startup that remains for the entire lifetime of the application.\n* Create the roSystemLog instance on the main thread (it cannot be created on a task thread).\n* Pass the global roMessagePort referenced in the first bullet point to SetMessagePort() on the roSystemLog component.\n* Enable the desired log types using EnableType().\n* Handle the [roSystemLogEvents](https://developer.roku.com/docs/references/brightscript/events/rosystemlogevent.md\"roSystemLogEvents\") in all message loops.",
7276
+ "description": "The roSystemLog component enables the application to receive events from the Roku Streaming Player that are intended for reporting errors and trends, rather than trigger a response to a user action.\n\nAll of the log event messages are sent to the roMessagePort that is registered on the [roSystemLogEvent](https://developer.roku.com/docs/references/brightscript/events/rosystemlogevent.md\"roSystemLogEvent\") object. See roSystemLogEvent for details on the messages.\n\nThis object is created with no parameters:\n\n`CreateObject(\"roSystemLog\")`\n\nThe roSystemLog component requires specific Design Patterns in your BrightScript Application. Take care to:\n\n* Use one roMessagePort throughout the application (instead of creating a new roMessagePort for each screen).\n* Create one roSystemLog instance at startup that remains for the entire lifetime of the application.\n* Pass the global roMessagePort referenced in the first bullet point to SetMessagePort() on the roSystemLog component.\n* Enable the desired log types using EnableType().\n* Handle the [roSystemLogEvents](https://developer.roku.com/docs/references/brightscript/events/rosystemlogevent.md\"roSystemLogEvents\") in all message loops.",
7298
7277
  "events": [],
7299
7278
  "interfaces": [
7300
7279
  {
@@ -7378,7 +7357,7 @@
7378
7357
  {
7379
7358
  "isRequired": true,
7380
7359
  "name": "param1",
7381
- "type": "dynamic"
7360
+ "type": "string"
7382
7361
  }
7383
7362
  ],
7384
7363
  "returnType": "roTextureRequest"
@@ -7751,18 +7730,11 @@
7751
7730
  "returnType": "Boolean"
7752
7731
  },
7753
7732
  {
7754
- "description": "Returns the estimated kilobytes (Kb) of memory available for the channel. This can be used to determine when to release memory when a channel receives low-memory warnings.",
7755
- "name": "GetChannelAvailableMemory",
7756
- "params": [],
7757
- "returnDescription": "An integer indicating the estimated available memory remaining for the channel or the available memory for the device, whichever is lower.",
7758
- "returnType": "dynamic"
7759
- },
7760
- {
7761
- "description": "Returns the usage percentage of memory limit for the channel.",
7733
+ "description": "Returns the memory limit for the channel.",
7762
7734
  "name": "GetMemoryLimitPercent",
7763
7735
  "params": [],
7764
- "returnDescription": "The usage percentage of memory limit for the channel.",
7765
- "returnType": "dynamic"
7736
+ "returnDescription": "The memory limit for the channel.",
7737
+ "returnType": "Int"
7766
7738
  }
7767
7739
  ],
7768
7740
  "name": "ifAppMemoryMonitor",
@@ -8035,7 +8007,7 @@
8035
8007
  {
8036
8008
  "default": null,
8037
8009
  "description": "Items are arbitrarily grouped by comparable type of number or string, and are sorted within the group with a logical comparison. If \"r\" is included in flags, a reverse sort is performed. If \"i\" is included in flags, a case-insensitive sort is performed. If invalid flags are specified, the sort is not performed.",
8038
- "isRequired": false,
8010
+ "isRequired": true,
8039
8011
  "name": "flags",
8040
8012
  "type": "String"
8041
8013
  }
@@ -8056,7 +8028,7 @@
8056
8028
  {
8057
8029
  "default": null,
8058
8030
  "description": "Items are arbitrarily grouped by comparable type of number or string, and are sorted within the group with a logical comparison. If \"r\" is included in flags, a reverse sort is performed. If \"i\" is included in flags, a case-insensitive sort is performed. If invalid flags are specified, the sort is not performed.",
8059
- "isRequired": false,
8031
+ "isRequired": true,
8060
8032
  "name": "flags",
8061
8033
  "type": "String"
8062
8034
  }
@@ -8966,12 +8938,6 @@
8966
8938
  ],
8967
8939
  "returnType": "Void"
8968
8940
  },
8969
- {
8970
- "description": "The **getAllPurchases** function is similar to the [**getPurchases** function](#getpurchases-as-void) except that it requests the historical list of all canceled, expired, and terminated subscriptions over the lifetime of the current user account—in addition to the active subscriptions. You can use this method to leverage purchase history in order to implement subscription renewal flows and more easily determine if subscriptions have expired.",
8971
- "name": "GetAllPurchases",
8972
- "params": [],
8973
- "returnType": "Void"
8974
- },
8975
8941
  {
8976
8942
  "description": "Requests the list of In-Channel products that are linked to the running channel.",
8977
8943
  "name": "GetCatalog",
@@ -9299,21 +9265,6 @@
9299
9265
  "returnDescription": "A dateString corresponding to the specified format.",
9300
9266
  "returnType": "String"
9301
9267
  },
9302
- {
9303
- "description": "Returns the localized date of the device.",
9304
- "name": "asDateStringLoc",
9305
- "params": [
9306
- {
9307
- "default": null,
9308
- "description": "Specify the format of the date string to be returned: * full * long * medium * short * custom formatting string using date symbols (for example, \"MMM d, y\")",
9309
- "isRequired": true,
9310
- "name": "format",
9311
- "type": "String"
9312
- }
9313
- ],
9314
- "returnDescription": "A date string corresponding to the specified format:",
9315
- "returnType": "String"
9316
- },
9317
9268
  {
9318
9269
  "description": "Returns the date/time in long-date format.",
9319
9270
  "name": "AsDateStringNoParam",
@@ -9328,21 +9279,6 @@
9328
9279
  "returnDescription": "Number of seconds as Integer.",
9329
9280
  "returnType": "Integer"
9330
9281
  },
9331
- {
9332
- "description": "Returns the localized time of the device.",
9333
- "name": "asTimeStringLoc",
9334
- "params": [
9335
- {
9336
- "default": null,
9337
- "description": "Specify the format of the time string to be returned: * short * short-h12 * short-h24 * custom formatting string using time symbols (for example, \"h:mm a\")",
9338
- "isRequired": true,
9339
- "name": "format",
9340
- "type": "String"
9341
- }
9342
- ],
9343
- "returnDescription": "A time string corresponding to the specified format:",
9344
- "returnType": "String"
9345
- },
9346
9282
  {
9347
9283
  "description": "Sets the date/time using a string in the ISO 8601 format. For example \"YYYY-MM-DD HH:MM:SS\" e.g \"2009-01-01 01:00:00.000\" or \"2009-01-01T01:00:00.000\".",
9348
9284
  "name": "FromISO8601String",
@@ -9514,7 +9450,7 @@
9514
9450
  }
9515
9451
  ],
9516
9452
  "returnDescription": "An roByteArray containing the decrypted data.",
9517
- "returnType": "dynamic"
9453
+ "returnType": "roByteArray"
9518
9454
  },
9519
9455
  {
9520
9456
  "description": "Encrypts data on a device that is unique per device, channel, or model.",
@@ -9536,7 +9472,7 @@
9536
9472
  }
9537
9473
  ],
9538
9474
  "returnDescription": "An roByteArray containing the encrypted data.",
9539
- "returnType": "dynamic"
9475
+ "returnType": "roByteArray"
9540
9476
  }
9541
9477
  ],
9542
9478
  "name": "ifDeviceCrypto",
@@ -9558,7 +9494,7 @@
9558
9494
  "params": [
9559
9495
  {
9560
9496
  "default": null,
9561
- "description": "An associative array with the audio format to be checked. The general format of the associative arrays for CanDecodeAudio() is similar to the parameter and return associative arrays used in [CanDecodeVideo()](https://developer.roku.com/docs/references/brightscript/interfaces/ifdeviceinfo.mdcandecodevideovideo_format-as-object-as-object): \n| Key | Type | Value | Requirement |\n| ---------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- |\n| Codec | string | Specifies the audio codec: “aac”, “ac3”, “eac3”, \"alac\", \"flac\", “mp2”, “mp3”, “vorbis”, “wma (sunset as of Roku OS 12.5), “wma pro (sunset as of Roku OS 12.5), “dts”, \"ac4\" | Required |\n| Profile | string | Specifies the codec profile:CodecProfile\"h.265/h.265\"\"main\", \"high\", \"main 10\"\"vp9\"\"profile 0\", \"profile 2\"\"AAC codec profiles\"\"mp2 lc\", \"mp4 he\" | Optional |\n| Level | String | Specifies the codec level:CodecLevel\"h.265/h.265\"4.1, 4.2, 5.0, 5.1\"vp9\"3.0, 3.1, 4.0, 4.1, 5.0, 5.1 | Optional |\n| ChCnt | integer | Specifies the required number of audio channels | Optional |\n| PassThru | integer | Specifies whether the bitstream needs to be decoded on the device. By default, this reports the codec properties of both the Roku device and the attached HDMI device.You can filter the values returned by including one of the following options:**0** \\- Reports only codecs that are supported on the Roku device itself.**1** \\- Reports only codecs of the attached HDMI device (for example, an audio receiver). | Optional |\n| Atmos | Integer | Specifies whether atmos is required. Include 'atmos=1' if it is. | Optional |\n| SampleRate | integer | Specifies the sample rate | Optional |\n| BitRate | integer | Specifies the bit rate in Kbit/sec | Optional |\n| Container | string | Specifies the container format | Optional |\n",
9497
+ "description": "An associative array with the audio format to be checked. The general format of the associative arrays for CanDecodeAudio() is similar to the parameter and return associative arrays used in [CanDecodeVideo()](https://developer.roku.com/docs/references/brightscript/interfaces/ifdeviceinfo.mdcandecodevideovideo_format-as-object-as-object): \n| Key | Type | Value | Requirement |\n| ---------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- |\n| Codec | string | Specifies the audio codec: “aac”, “ac3”, “eac3”, \"alac\", \"flac\", “mp2”, “mp3”, “vorbis”, “wma”, “wma pro”, “dts”, \"ac4\" | Required |\n| Profile | string | Specifies the codec profile:CodecProfile\"h.265/h.265\"\"main\", \"high\", \"main 10\"\"vp9\"\"profile 0\", \"profile 2\"\"AAC codec profiles\"\"mp2 lc\", \"mp4 he\" | Optional |\n| Level | String | Specifies the codec level:CodecLevel\"h.265/h.265\"4.1, 4.2, 5.0, 5.1\"vp9\"3.0, 3.1, 4.0, 4.1, 5.0, 5.1 | Optional |\n| ChCnt | integer | Specifies the required number of audio channels | Optional |\n| PassThru | integer | Specifies whether the bitstream needs to be decoded on the device. By default, this reports the codec properties of both the Roku device and the attached HDMI device.You can filter the values returned by including one of the following options:**0** \\- Reports only codecs that are supported on the Roku device itself.**1** \\- Reports only codecs of the attached HDMI device (for example, an audio receiver). | Optional |\n| Atmos | Integer | Specifies whether atmos is required. Include 'atmos=1' if it is. | Optional |\n| SampleRate | integer | Specifies the sample rate | Optional |\n| BitRate | integer | Specifies the bit rate in Kbit/sec | Optional |\n| Container | string | Specifies the container format | Optional |\n",
9562
9498
  "isRequired": true,
9563
9499
  "name": "audio_format",
9564
9500
  "type": "Object"
@@ -9864,7 +9800,7 @@
9864
9800
  "returnType": "String"
9865
9801
  },
9866
9802
  {
9867
- "description": "Checks the general memory levels of the device.",
9803
+ "description": "Checks the general memory levels of the channel.",
9868
9804
  "name": "GetGeneralMemoryLevel",
9869
9805
  "params": [],
9870
9806
  "returnDescription": "Returns the general memory levels of the channel, which may be one of the following values:",
@@ -9934,10 +9870,10 @@
9934
9870
  "returnType": "Object"
9935
9871
  },
9936
9872
  {
9937
- "description": "Checks the two-letter ISO 639-1 language terminology code of the preferred caption language set on the Roku device.",
9873
+ "description": "Checks the three-letter ISO 639-2 language terminology code of the preferred caption language set on the Roku device.",
9938
9874
  "name": "GetPreferredCaptionLanguage",
9939
9875
  "params": [],
9940
- "returnDescription": "The two-letter ISO 639-1 language terminology code, which may be one of the following values:",
9876
+ "returnDescription": "The three-letter ISO 639-2 language terminology code, which may be one of the following values:",
9941
9877
  "returnType": "String"
9942
9878
  },
9943
9879
  {
@@ -10350,7 +10286,50 @@
10350
10286
  "returnType": "Boolean"
10351
10287
  },
10352
10288
  {
10353
- "description": "**OVERLOADED METHOD**\n\nDraws the source object, where src is an [roBitmap](https://developer.roku.com/docs/references/brightscript/components/robitmap.md\"roBitmap\") or an [roRegion](https://developer.roku.com/docs/references/brightscript/components/roregion.md\"roRegion\") object, at position x,y, scaled in the x direction by scaleX and in the y direction by scaleY. scaleX and scaleY should each be greater than zero and less than one to reduce the object size, or greater than one to increase the object size\n\n or \n\nDraws the source object, where src is an [roBitmap](https://developer.roku.com/docs/references/brightscript/components/robitmap.md\"roBitmap\") or an [roRegion](https://developer.roku.com/docs/references/brightscript/components/roregion.md\"roRegion\") object, at position x,y, scaled in the x direction by scaleX and in the y direction by scaleY. scaleX and scaleY should each be greater than zero and less than one to reduce the object size, or greater than one to increase the object size.",
10289
+ "description": "Draws the source object, where src is an [roBitmap](https://developer.roku.com/docs/references/brightscript/components/robitmap.md\"roBitmap\") or an [roRegion](https://developer.roku.com/docs/references/brightscript/components/roregion.md\"roRegion\") object, at position x,y, scaled in the x direction by scaleX and in the y direction by scaleY. scaleX and scaleY should each be greater than zero and less than one to reduce the object size, or greater than one to increase the object size",
10290
+ "name": "DrawScaledObject",
10291
+ "params": [
10292
+ {
10293
+ "default": null,
10294
+ "description": "The x-coordinate of the source object.",
10295
+ "isRequired": true,
10296
+ "name": "x",
10297
+ "type": "Integer"
10298
+ },
10299
+ {
10300
+ "default": null,
10301
+ "description": "The y-coordinate of the source object.",
10302
+ "isRequired": true,
10303
+ "name": "y",
10304
+ "type": "Integer"
10305
+ },
10306
+ {
10307
+ "default": null,
10308
+ "description": "The x direction in which the source object is to be scaled.",
10309
+ "isRequired": true,
10310
+ "name": "scaleX",
10311
+ "type": "Float"
10312
+ },
10313
+ {
10314
+ "default": null,
10315
+ "description": "The y direction in which the source object is to be scaled.",
10316
+ "isRequired": true,
10317
+ "name": "scaleY",
10318
+ "type": "Float"
10319
+ },
10320
+ {
10321
+ "default": null,
10322
+ "description": "The [roBitmap](https://developer.roku.com/docs/references/brightscript/components/robitmap.md\"roBitmap\") or an [roRegion](https://developer.roku.com/docs/references/brightscript/components/roregion.md\"roRegion\") object to be drawn.",
10323
+ "isRequired": true,
10324
+ "name": "src",
10325
+ "type": "Object"
10326
+ }
10327
+ ],
10328
+ "returnDescription": "A flag indicating whether the object was successfully drawn.",
10329
+ "returnType": "Boolean"
10330
+ },
10331
+ {
10332
+ "description": "Draws the source object, where src is an [roBitmap](https://developer.roku.com/docs/references/brightscript/components/robitmap.md\"roBitmap\") or an [roRegion](https://developer.roku.com/docs/references/brightscript/components/roregion.md\"roRegion\") object, at position x,y, scaled in the x direction by scaleX and in the y direction by scaleY. scaleX and scaleY should each be greater than zero and less than one to reduce the object size, or greater than one to increase the object size.",
10354
10333
  "name": "DrawScaledObject",
10355
10334
  "params": [
10356
10335
  {
@@ -10391,7 +10370,7 @@
10391
10370
  {
10392
10371
  "default": null,
10393
10372
  "description": "The RGBA color of the source object.",
10394
- "isRequired": false,
10373
+ "isRequired": true,
10395
10374
  "name": "rgba",
10396
10375
  "type": "Integer"
10397
10376
  }
@@ -11187,46 +11166,58 @@
11187
11166
  {
11188
11167
  "description": "roFont represents a particular font, from a font-family (eg. Arial), with a particular pixel size (e.g 20), and a particular boldness or italicness",
11189
11168
  "name": "roFont",
11190
- "url": "https://developer.roku.com/docs/references/api-index/brightscript/components/rofont.md"
11169
+ "url": "https://developer.roku.com/docs/references/brightscript/components/rofont.md"
11191
11170
  }
11192
11171
  ],
11193
11172
  "methods": [
11194
11173
  {
11174
+ "description": "Returns the number of pixels of the font ascent.",
11195
11175
  "name": "GetAscent",
11196
11176
  "params": [],
11177
+ "returnDescription": "The number of pixels.",
11197
11178
  "returnType": "Integer"
11198
11179
  },
11199
11180
  {
11181
+ "description": "Returns the number of pixels of the font descent.",
11200
11182
  "name": "GetDescent",
11201
11183
  "params": [],
11184
+ "returnDescription": "The number of pixels.",
11202
11185
  "returnType": "Integer"
11203
11186
  },
11204
11187
  {
11188
+ "description": "Returns the font maximum advance width in pixels.",
11205
11189
  "name": "GetMaxAdvance",
11206
11190
  "params": [],
11191
+ "returnDescription": "The number of pixels.",
11207
11192
  "returnType": "Integer"
11208
11193
  },
11209
11194
  {
11195
+ "description": "Returns the number of pixels from one line to the next when drawing with this font.",
11210
11196
  "name": "GetOneLineHeight",
11211
11197
  "params": [],
11198
+ "returnDescription": "The number of pixels.",
11212
11199
  "returnType": "Integer"
11213
11200
  },
11214
11201
  {
11202
+ "description": "Returns the number of pixels from one line to the next when drawing with this font. Each glyph and the needed spacing between glyphs is measured.",
11215
11203
  "name": "GetOneLineWidth",
11216
11204
  "params": [
11217
11205
  {
11218
11206
  "default": null,
11207
+ "description": "The subject text.",
11219
11208
  "isRequired": true,
11220
11209
  "name": "text",
11221
11210
  "type": "String"
11222
11211
  },
11223
11212
  {
11224
11213
  "default": null,
11214
+ "description": "Generally, the amount of pixels available for rendering on this line.",
11225
11215
  "isRequired": true,
11226
11216
  "name": "MaxWidth",
11227
11217
  "type": "Integer"
11228
11218
  }
11229
11219
  ],
11220
+ "returnDescription": "The number of pixels. This will be less than provided MaxWidth.",
11230
11221
  "returnType": "Integer"
11231
11222
  }
11232
11223
  ],
@@ -11455,7 +11446,7 @@
11455
11446
  "ifhdmistatus": {
11456
11447
  "implementers": [
11457
11448
  {
11458
- "description": "The HDMI status component provides an interface to the current HDMI operational status of Roku streaming players (or set-top boxes \\[STBs\\]). This interface is not applicable for Roku TVs.",
11449
+ "description": "The HDMI status component provides an interface to the current HDMI operational status",
11459
11450
  "name": "roHdmiStatus",
11460
11451
  "url": "https://developer.roku.com/docs/references/brightscript/components/rohdmistatus.md"
11461
11452
  }
@@ -11620,7 +11611,7 @@
11620
11611
  "params": [
11621
11612
  {
11622
11613
  "default": null,
11623
- "description": "An roArray of roAssociativeArrays, where each associative array represents a cookie to be added. Each associative array must contain the following key-value pairs: \n| Name | Type | Description |\n| ------------------------------------ | ---------- | ----------------------------------------------------------------------------- |\n| Version | Integer | Cookie version number |\n| Domain | String | Domain to which cookie applies |\n| Path | String | Path to which cookie applies |\n| Name | String | Name of the cookie |\n| Value | String | Value of the cookie |\n| Expires | roDateTime | Cookie expiration date, if any |\n| Secure_Available since Roku OS 12.0_ | Boolean | Indicates whether the cookie is to be sent over HTTPS (true) or HTTP (false). |\n",
11614
+ "description": "An roArray of roAssociativeArrays, where each associative array represents a cookie to be added. Each associative array must contain the following key-value pairs: \n| Name | Type | Description |\n| ------- | ---------- | ------------------------------ |\n| Version | Integer | Cookie version number |\n| Domain | String | Domain to which cookie applies |\n| Path | String | Path to which cookie applies |\n| Name | String | Name of the cookie |\n| Value | String | Value of the cookie |\n| Expires | roDateTime | Cookie expiration date, if any |\n",
11624
11615
  "isRequired": true,
11625
11616
  "name": "cookies",
11626
11617
  "type": "Object"
@@ -12828,7 +12819,7 @@
12828
12819
  "returnType": "Object"
12829
12820
  },
12830
12821
  {
12831
- "description": "Returns the number of bytes available in the channel application's device registry (32K). This function can be used, for example, to check the remaining space and remove older entries before writing newer ones. The following code demonstrates how to do this:",
12822
+ "description": "Returns the number of bytes available in the channel application's device registry (16K minus current file size). This function can be used, for example, to check the remaining space and remove older entries before writing newer ones. The following code demonstrates how to do this:",
12832
12823
  "name": "GetSpaceAvailable",
12833
12824
  "params": [],
12834
12825
  "returnDescription": "An integer representing the the number of bytes available in the device registry.",
@@ -13440,7 +13431,7 @@
13440
13431
  "name": "getParent",
13441
13432
  "params": [],
13442
13433
  "returnDescription": "The parent node; otherwise, \"invalid\".",
13443
- "returnType": "dynamic"
13434
+ "returnType": "roSGNode"
13444
13435
  },
13445
13436
  {
13446
13437
  "description": "Returns an array with every existing node without a parent created by the currently running channel.",
@@ -13460,7 +13451,7 @@
13460
13451
  "name": "getScene",
13461
13452
  "params": [],
13462
13453
  "returnDescription": "The node's root Scene.",
13463
- "returnType": "dynamic"
13454
+ "returnType": "roSGNode"
13464
13455
  },
13465
13456
  {
13466
13457
  "description": "Inserts a previously-created child node at the position index in the subject node list of children, so that this is the position that the new child node is traversed during render.",
@@ -13873,7 +13864,7 @@
13873
13864
  "returnType": "Boolean"
13874
13865
  },
13875
13866
  {
13876
- "description": "**OVERLOADED METHOD**\n\nCalls a function when a field of the subject node changes. The function called must be in the scope of the current component.\n\n or \n\nThis overloaded form sends an [roSGNodeEvent](https://developer.roku.com/docs/references/brightscript/components/rosgnode.md\"roSGNodeEvent\") message to the [roMessagePort](https://developer.roku.com/docs/references/brightscript/components/romessageport.md\"roMessagePort\") identified by port when the subject node field identified by fieldName changes value.",
13867
+ "description": "Calls a function when a field of the subject node changes. The function called must be in the scope of the current component.",
13877
13868
  "name": "observeField",
13878
13869
  "params": [
13879
13870
  {
@@ -13885,10 +13876,10 @@
13885
13876
  },
13886
13877
  {
13887
13878
  "default": null,
13888
- "description": "The name of the method to be executed when the value of the field changes. OR The [roMessagePort](https://developer.roku.com/docs/references/brightscript/components/romessageport.md\"roMessagePort\") to receive a [roSGNodeEvent](https://developer.roku.com/docs/references/brightscript/components/rosgnode.md\"roSGNodeEvent\") message when the value of the field changes.",
13879
+ "description": "The name of the method to be executed when the value of the field changes.",
13889
13880
  "isRequired": true,
13890
- "name": "functionNameOrPort",
13891
- "type": "String or Object"
13881
+ "name": "functionName",
13882
+ "type": "String"
13892
13883
  },
13893
13884
  {
13894
13885
  "default": null,
@@ -13902,7 +13893,36 @@
13902
13893
  "returnType": "Boolean"
13903
13894
  },
13904
13895
  {
13905
- "description": "**OVERLOADED METHOD**\n\nSets up a connection between the observed node's field and the current component from which this call is made. This method is similar to the [observeField()](https://developer.roku.com/docs/references/brightscript/interfaces/ifsgnodefield.mdobservefieldfieldname-as-string-functionname-as-string-as-boolean \"observeField(fieldName as String, functionName as String)\") method.",
13896
+ "description": "This overloaded form sends an [roSGNodeEvent](https://developer.roku.com/docs/references/brightscript/components/rosgnode.md\"roSGNodeEvent\") message to the [roMessagePort](https://developer.roku.com/docs/references/brightscript/components/romessageport.md\"roMessagePort\") identified by port when the subject node field identified by fieldName changes value.",
13897
+ "name": "observeField",
13898
+ "params": [
13899
+ {
13900
+ "default": null,
13901
+ "description": "The name of the field to be monitored.",
13902
+ "isRequired": true,
13903
+ "name": "fieldName",
13904
+ "type": "String"
13905
+ },
13906
+ {
13907
+ "default": null,
13908
+ "description": "The [roMessagePort](https://developer.roku.com/docs/references/brightscript/components/romessageport.md\"roMessagePort\") to receive a [roSGNodeEvent](https://developer.roku.com/docs/references/brightscript/components/rosgnode.md\"roSGNodeEvent\") message when the value of the field changes.",
13909
+ "isRequired": true,
13910
+ "name": "port",
13911
+ "type": "Object"
13912
+ },
13913
+ {
13914
+ "default": null,
13915
+ "description": "Optional. Names of \"context\" field values to be reported via getInfo() when the monitored field changes.",
13916
+ "isRequired": false,
13917
+ "name": "infoFields",
13918
+ "type": "Object"
13919
+ }
13920
+ ],
13921
+ "returnDescription": "A flag indicating whether this operation was successful.",
13922
+ "returnType": "Boolean"
13923
+ },
13924
+ {
13925
+ "description": "Sets up a connection between the observed node's field and the current component from which this call is made. This method is similar to the [observeField()](https://developer.roku.com/docs/references/brightscript/interfaces/ifsgnodefield.mdobservefieldfieldname-as-string-functionname-as-string-as-boolean \"observeField(fieldName as String, functionName as String)\") method.",
13906
13926
  "name": "observeFieldScoped",
13907
13927
  "params": [
13908
13928
  {
@@ -13914,10 +13934,39 @@
13914
13934
  },
13915
13935
  {
13916
13936
  "default": null,
13917
- "description": "The name of the method to be executed when the value of the field changes. OR The [roMessagePort](https://developer.roku.com/docs/references/brightscript/components/romessageport.md\"roMessagePort\") to receive a [roSGNodeEvent](https://developer.roku.com/docs/references/brightscript/components/rosgnode.md\"roSGNodeEvent\") message when the value of the field changes.",
13937
+ "description": "The name of the method to be executed when the value of the field changes.",
13918
13938
  "isRequired": true,
13919
- "name": "functionNameOrPort",
13920
- "type": "String or Object"
13939
+ "name": "functionName",
13940
+ "type": "String"
13941
+ },
13942
+ {
13943
+ "default": null,
13944
+ "description": "Optional. Names of \"context\" field values to be reported via getInfo() when the monitored field changes.",
13945
+ "isRequired": false,
13946
+ "name": "infoFields",
13947
+ "type": "Object"
13948
+ }
13949
+ ],
13950
+ "returnDescription": "A flag indicating whether this operation was successful.",
13951
+ "returnType": "Boolean"
13952
+ },
13953
+ {
13954
+ "description": "Sets up a connection between the observed node's field and the current component from which this call is made. This method is similar to the [observeField()](https://developer.roku.com/docs/references/brightscript/interfaces/ifsgnodefield.mdobservefieldfieldname-as-string-functionname-as-string-as-boolean \"observeField(fieldName as String, functionName as String)\") method.",
13955
+ "name": "observeFieldScoped",
13956
+ "params": [
13957
+ {
13958
+ "default": null,
13959
+ "description": "The name of the field to be monitored.",
13960
+ "isRequired": true,
13961
+ "name": "fieldName",
13962
+ "type": "String"
13963
+ },
13964
+ {
13965
+ "default": null,
13966
+ "description": "The [roMessagePort](https://developer.roku.com/docs/references/brightscript/components/romessageport.md\"roMessagePort\") to receive a [roSGNodeEvent](https://developer.roku.com/docs/references/brightscript/components/rosgnode.md\"roSGNodeEvent\") message when the value of the field changes.",
13967
+ "isRequired": true,
13968
+ "name": "port",
13969
+ "type": "Object"
13921
13970
  },
13922
13971
  {
13923
13972
  "default": null,
@@ -14183,21 +14232,21 @@
14183
14232
  "name": "getGlobalNode",
14184
14233
  "params": [],
14185
14234
  "returnDescription": "A global reference object.",
14186
- "returnType": "dynamic"
14235
+ "returnType": "roSGNode"
14187
14236
  },
14188
14237
  {
14189
14238
  "description": "Returns the roMessagePort object for the SceneGraph scene.",
14190
14239
  "name": "GetMessagePort",
14191
14240
  "params": [],
14192
14241
  "returnDescription": "The roMessagePort object.",
14193
- "returnType": "dynamic"
14242
+ "returnType": "roMessagePort"
14194
14243
  },
14195
14244
  {
14196
14245
  "description": "The roSGScene object associated with the screen.",
14197
14246
  "name": "GetScene",
14198
14247
  "params": [],
14199
14248
  "returnDescription": "Typically, the scene created in main.brs by a roSGScreen.CreateScene() call.",
14200
- "returnType": "dynamic"
14249
+ "returnType": "roSGNode"
14201
14250
  },
14202
14251
  {
14203
14252
  "description": "Specifies the roMessagePort object for the roSGScreen object",
@@ -15544,20 +15593,30 @@
15544
15593
  "returnType": "String"
15545
15594
  },
15546
15595
  {
15547
- "description": "**OVERLOADED METHOD**\n\n",
15548
15596
  "name": "EndsWith",
15549
15597
  "params": [
15550
15598
  {
15551
15599
  "default": null,
15552
- "description": "",
15600
+ "isRequired": true,
15601
+ "name": "matchString",
15602
+ "type": "String"
15603
+ }
15604
+ ],
15605
+ "returnDescription": "A flag indicating whether a matching substring was found.",
15606
+ "returnType": "Boolean"
15607
+ },
15608
+ {
15609
+ "name": "EndsWith",
15610
+ "params": [
15611
+ {
15612
+ "default": null,
15553
15613
  "isRequired": true,
15554
15614
  "name": "matchString",
15555
15615
  "type": "String"
15556
15616
  },
15557
15617
  {
15558
15618
  "default": null,
15559
- "description": "",
15560
- "isRequired": false,
15619
+ "isRequired": true,
15561
15620
  "name": "length",
15562
15621
  "type": "Integer"
15563
15622
  }
@@ -15580,25 +15639,40 @@
15580
15639
  "returnType": "String"
15581
15640
  },
15582
15641
  {
15583
- "description": "**OVERLOADED METHOD**\n\nReturns the zero-based index of the first occurrence of substring in the string. If the substring does not occur in the string, this method returns -1\n\n or \n\nReturns the zero-based index of the first occurrence of substring in the string, starting at the specified zero-based start\\_index. If the substring does not occur in the string after start\\_index, returns -1",
15642
+ "description": "Returns the zero-based index of the first occurrence of substring in the string. If the substring does not occur in the string, this method returns -1",
15584
15643
  "name": "Instr",
15585
15644
  "params": [
15586
15645
  {
15587
15646
  "default": null,
15588
- "description": "The substring within the roString object to be returned. OR The position in the roString object from which to start looking for and returning the **substring**.",
15647
+ "description": "The substring within the roString object to be returned.",
15589
15648
  "isRequired": true,
15590
- "name": "substringOrStart_index",
15591
- "type": "String or Integer"
15649
+ "name": "substring",
15650
+ "type": "String"
15651
+ }
15652
+ ],
15653
+ "returnDescription": "The index of the first instance of the substring within the string.",
15654
+ "returnType": "Integer"
15655
+ },
15656
+ {
15657
+ "description": "Returns the zero-based index of the first occurrence of substring in the string, starting at the specified zero-based start\\_index. If the substring does not occur in the string after start\\_index, returns -1",
15658
+ "name": "Instr",
15659
+ "params": [
15660
+ {
15661
+ "default": null,
15662
+ "description": "The position in the roString object from which to start looking for and returning the **substring**.",
15663
+ "isRequired": true,
15664
+ "name": "start_index",
15665
+ "type": "Integer"
15592
15666
  },
15593
15667
  {
15594
15668
  "default": null,
15595
15669
  "description": "The substring within the roString object to be found.",
15596
- "isRequired": false,
15670
+ "isRequired": true,
15597
15671
  "name": "substring",
15598
15672
  "type": "String"
15599
15673
  }
15600
15674
  ],
15601
- "returnDescription": "The index of the first instance of the substring within the string.\n\n or \n\nThe index of the first instance of the substring within the string, based on the specified starting position.",
15675
+ "returnDescription": "The index of the first instance of the substring within the string, based on the specified starting position.",
15602
15676
  "returnType": "Integer"
15603
15677
  },
15604
15678
  {
@@ -15624,44 +15698,37 @@
15624
15698
  "returnType": "Integer"
15625
15699
  },
15626
15700
  {
15627
- "description": "**OVERLOADED METHOD**\n\nReturns a string consisting of the last characters of the string, starting at the zero-based start\\_index.\n\n or \n\nReturns a string consisting of num\\_chars characters of the string, starting at the zero-based start\\_index. If there are fewer than num\\_chars in the string after start\\_index, returns the remaining characters in the string.",
15701
+ "description": "Returns a string consisting of the last characters of the string, starting at the zero-based start\\_index.",
15628
15702
  "name": "Mid",
15629
15703
  "params": [
15630
15704
  {
15631
15705
  "default": null,
15632
- "description": "The position in the roString object from which to return the remaining characters. OR The position in the roString object from which to return the number of characters specified by num\\_chars.",
15706
+ "description": "The position in the roString object from which to return the remaining characters.",
15633
15707
  "isRequired": true,
15634
15708
  "name": "start_index",
15635
15709
  "type": "Integer"
15636
- },
15637
- {
15638
- "default": null,
15639
- "description": "The number of characters in the remaining part of the roString object to be retrieved.",
15640
- "isRequired": false,
15641
- "name": "num_chars",
15642
- "type": "Integer"
15643
15710
  }
15644
15711
  ],
15645
- "returnDescription": "The string generated by the method.\n\n or \n\n",
15712
+ "returnDescription": "The string generated by the method.",
15646
15713
  "returnType": "String"
15647
15714
  },
15648
15715
  {
15649
- "description": "Returns a copy of the string with all instances of **fromStr** replaced with **toStr**. If **fromStr** is empty the return value is the same as the source string.",
15650
- "name": "Replace",
15716
+ "description": "Returns a string consisting of num\\_chars characters of the string, starting at the zero-based start\\_index. If there are fewer than num\\_chars in the string after start\\_index, returns the remaining characters in the string.",
15717
+ "name": "Mid",
15651
15718
  "params": [
15652
15719
  {
15653
15720
  "default": null,
15654
- "description": "The string of characters within the roString object to be replaced.",
15721
+ "description": "The position in the roString object from which to return the number of characters specified by num\\_chars.",
15655
15722
  "isRequired": true,
15656
- "name": "fromStr",
15657
- "type": "String"
15723
+ "name": "start_index",
15724
+ "type": "Integer"
15658
15725
  },
15659
15726
  {
15660
15727
  "default": null,
15661
- "description": "The string of characters that will replace all instances of the **from** string.",
15728
+ "description": "The number of characters in the remaining part of the roString object to be retrieved.",
15662
15729
  "isRequired": true,
15663
- "name": "toStr",
15664
- "type": "String"
15730
+ "name": "num_chars",
15731
+ "type": "Integer"
15665
15732
  }
15666
15733
  ],
15667
15734
  "returnType": "String"
@@ -15718,20 +15785,30 @@
15718
15785
  "returnType": "Object"
15719
15786
  },
15720
15787
  {
15721
- "description": "**OVERLOADED METHOD**\n\n",
15722
15788
  "name": "StartsWith",
15723
15789
  "params": [
15724
15790
  {
15725
15791
  "default": null,
15726
- "description": "",
15792
+ "isRequired": true,
15793
+ "name": "matchString",
15794
+ "type": "String"
15795
+ }
15796
+ ],
15797
+ "returnDescription": "A flag indicating whether a matching substring was found.",
15798
+ "returnType": "Boolean"
15799
+ },
15800
+ {
15801
+ "name": "StartsWith",
15802
+ "params": [
15803
+ {
15804
+ "default": null,
15727
15805
  "isRequired": true,
15728
15806
  "name": "matchString",
15729
15807
  "type": "String"
15730
15808
  },
15731
15809
  {
15732
15810
  "default": null,
15733
- "description": "",
15734
- "isRequired": false,
15811
+ "isRequired": true,
15735
15812
  "name": "matchPos",
15736
15813
  "type": "Integer"
15737
15814
  }
@@ -16468,13 +16545,6 @@
16468
16545
  "returnDescription": "The URL.",
16469
16546
  "returnType": "String"
16470
16547
  },
16471
- {
16472
- "description": "Returns the user agent of the device, which can then be passed into server-side ad requests.",
16473
- "name": "GetUserAgent",
16474
- "params": [],
16475
- "returnDescription": "The device user agent, which has the following syntax: \"Roku/DVP-major.minor (major.minor.revision.build-plid)\". For example, Roku/DVP‑12.0 (12.0.0.4171‑29).",
16476
- "returnType": "String"
16477
- },
16478
16548
  {
16479
16549
  "description": "Synchronously performs an HTTP HEAD request and returns an [roUrlTransfer](https://developer.roku.com/docs/references/brightscript/interfaces/ifurltransfer.md\"roUrlTransfer\") object.",
16480
16550
  "name": "Head",
@@ -17318,16 +17388,6 @@
17318
17388
  }
17319
17389
  ],
17320
17390
  "methods": [
17321
- {
17322
- "name": "isDownloadSegmentInfo",
17323
- "params": [],
17324
- "returnType": "Boolean"
17325
- },
17326
- {
17327
- "name": "isFormatDetected",
17328
- "params": [],
17329
- "returnType": "Boolean"
17330
- },
17331
17391
  {
17332
17392
  "name": "isFullResult",
17333
17393
  "params": [],
@@ -17363,21 +17423,11 @@
17363
17423
  "params": [],
17364
17424
  "returnType": "Boolean"
17365
17425
  },
17366
- {
17367
- "name": "isSegmentDownloadStarted",
17368
- "params": [],
17369
- "returnType": "Boolean"
17370
- },
17371
17426
  {
17372
17427
  "name": "isStatusMessage",
17373
17428
  "params": [],
17374
17429
  "returnType": "Boolean"
17375
17430
  },
17376
- {
17377
- "name": "isStreamSegmentInfo",
17378
- "params": [],
17379
- "returnType": "Boolean"
17380
- },
17381
17431
  {
17382
17432
  "name": "isTimedMetaData",
17383
17433
  "params": [],