brighterscript 0.66.0-alpha.1 → 0.66.0-alpha.10

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 (380) hide show
  1. package/CHANGELOG.md +215 -10
  2. package/README.md +13 -3
  3. package/bsconfig.schema.json +15 -0
  4. package/dist/ActionPipeline.d.ts +10 -0
  5. package/dist/ActionPipeline.js +40 -0
  6. package/dist/ActionPipeline.js.map +1 -0
  7. package/dist/AstValidationSegmenter.d.ts +25 -0
  8. package/dist/AstValidationSegmenter.js +150 -0
  9. package/dist/AstValidationSegmenter.js.map +1 -0
  10. package/dist/BsConfig.d.ts +13 -4
  11. package/dist/BusyStatusTracker.d.ts +31 -0
  12. package/dist/BusyStatusTracker.js +83 -0
  13. package/dist/BusyStatusTracker.js.map +1 -0
  14. package/dist/Cache.js +3 -3
  15. package/dist/Cache.js.map +1 -1
  16. package/dist/CacheVerifier.d.ts +0 -1
  17. package/dist/CodeActionUtil.d.ts +2 -2
  18. package/dist/CommentFlagProcessor.d.ts +4 -3
  19. package/dist/CommentFlagProcessor.js.map +1 -1
  20. package/dist/DiagnosticCollection.js +8 -5
  21. package/dist/DiagnosticCollection.js.map +1 -1
  22. package/dist/DiagnosticMessages.d.ts +34 -4
  23. package/dist/DiagnosticMessages.js +59 -4
  24. package/dist/DiagnosticMessages.js.map +1 -1
  25. package/dist/FunctionScope.d.ts +1 -1
  26. package/dist/LanguageServer.d.ts +23 -1
  27. package/dist/LanguageServer.js +139 -57
  28. package/dist/LanguageServer.js.map +1 -1
  29. package/dist/Logger.d.ts +3 -2
  30. package/dist/Logger.js +10 -2
  31. package/dist/Logger.js.map +1 -1
  32. package/dist/PluginInterface.d.ts +11 -2
  33. package/dist/PluginInterface.js +69 -10
  34. package/dist/PluginInterface.js.map +1 -1
  35. package/dist/Program.d.ts +138 -49
  36. package/dist/Program.js +637 -349
  37. package/dist/Program.js.map +1 -1
  38. package/dist/ProgramBuilder.d.ts +10 -4
  39. package/dist/ProgramBuilder.js +76 -74
  40. package/dist/ProgramBuilder.js.map +1 -1
  41. package/dist/Scope.d.ts +52 -49
  42. package/dist/Scope.js +298 -274
  43. package/dist/Scope.js.map +1 -1
  44. package/dist/SymbolTable.d.ts +35 -14
  45. package/dist/SymbolTable.js +90 -29
  46. package/dist/SymbolTable.js.map +1 -1
  47. package/dist/Throttler.d.ts +12 -0
  48. package/dist/Throttler.js +39 -0
  49. package/dist/Throttler.js.map +1 -1
  50. package/dist/XmlScope.d.ts +7 -4
  51. package/dist/XmlScope.js +52 -12
  52. package/dist/XmlScope.js.map +1 -1
  53. package/dist/astUtils/{AstEditor.d.ts → Editor.d.ts} +6 -1
  54. package/dist/astUtils/{AstEditor.js → Editor.js} +9 -3
  55. package/dist/astUtils/Editor.js.map +1 -0
  56. package/dist/astUtils/{AstEditor.spec.js → Editor.spec.js} +10 -6
  57. package/dist/astUtils/Editor.spec.js.map +1 -0
  58. package/dist/astUtils/creators.d.ts +3 -1
  59. package/dist/astUtils/creators.js +14 -4
  60. package/dist/astUtils/creators.js.map +1 -1
  61. package/dist/astUtils/reflection.d.ts +37 -9
  62. package/dist/astUtils/reflection.js +83 -14
  63. package/dist/astUtils/reflection.js.map +1 -1
  64. package/dist/astUtils/reflection.spec.js +87 -5
  65. package/dist/astUtils/reflection.spec.js.map +1 -1
  66. package/dist/astUtils/visitors.d.ts +14 -3
  67. package/dist/astUtils/visitors.js +22 -2
  68. package/dist/astUtils/visitors.js.map +1 -1
  69. package/dist/astUtils/visitors.spec.js +58 -7
  70. package/dist/astUtils/visitors.spec.js.map +1 -1
  71. package/dist/bscPlugin/BscPlugin.d.ts +10 -2
  72. package/dist/bscPlugin/BscPlugin.js +24 -4
  73. package/dist/bscPlugin/BscPlugin.js.map +1 -1
  74. package/dist/bscPlugin/CallExpressionInfo.d.ts +3 -3
  75. package/dist/bscPlugin/CallExpressionInfo.js.map +1 -1
  76. package/dist/bscPlugin/FileWriter.d.ts +6 -0
  77. package/dist/bscPlugin/FileWriter.js +24 -0
  78. package/dist/bscPlugin/FileWriter.js.map +1 -0
  79. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js +8 -8
  80. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js.map +1 -1
  81. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js +4 -4
  82. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js.map +1 -1
  83. package/dist/bscPlugin/completions/CompletionsProcessor.d.ts +50 -1
  84. package/dist/bscPlugin/completions/CompletionsProcessor.js +442 -23
  85. package/dist/bscPlugin/completions/CompletionsProcessor.js.map +1 -1
  86. package/dist/bscPlugin/completions/CompletionsProcessor.spec.js +1737 -0
  87. package/dist/bscPlugin/completions/CompletionsProcessor.spec.js.map +1 -0
  88. package/dist/bscPlugin/fileProviders/FileProvider.d.ts +9 -0
  89. package/dist/bscPlugin/fileProviders/FileProvider.js +51 -0
  90. package/dist/bscPlugin/fileProviders/FileProvider.js.map +1 -0
  91. package/dist/bscPlugin/hover/HoverProcessor.d.ts +7 -3
  92. package/dist/bscPlugin/hover/HoverProcessor.js +133 -103
  93. package/dist/bscPlugin/hover/HoverProcessor.js.map +1 -1
  94. package/dist/bscPlugin/hover/HoverProcessor.spec.js +241 -29
  95. package/dist/bscPlugin/hover/HoverProcessor.spec.js.map +1 -1
  96. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.d.ts +1 -0
  97. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js +43 -0
  98. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js.map +1 -1
  99. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js +22 -0
  100. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js.map +1 -1
  101. package/dist/bscPlugin/serialize/BslibInjector.spec.js +19 -0
  102. package/dist/bscPlugin/serialize/BslibInjector.spec.js.map +1 -0
  103. package/dist/bscPlugin/serialize/BslibManager.d.ts +9 -0
  104. package/dist/bscPlugin/serialize/BslibManager.js +40 -0
  105. package/dist/bscPlugin/serialize/BslibManager.js.map +1 -0
  106. package/dist/bscPlugin/serialize/FileSerializer.d.ts +9 -0
  107. package/dist/bscPlugin/serialize/FileSerializer.js +72 -0
  108. package/dist/bscPlugin/serialize/FileSerializer.js.map +1 -0
  109. package/dist/bscPlugin/transpile/{BrsFilePreTranspileProcessor.d.ts → BrsFileTranspileProcessor.d.ts} +4 -2
  110. package/dist/bscPlugin/transpile/{BrsFilePreTranspileProcessor.js → BrsFileTranspileProcessor.js} +29 -5
  111. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.js.map +1 -0
  112. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.d.ts +1 -0
  113. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.js +41 -0
  114. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.js.map +1 -0
  115. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.d.ts +2 -2
  116. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.js.map +1 -1
  117. package/dist/bscPlugin/validation/BrsFileValidator.d.ts +0 -4
  118. package/dist/bscPlugin/validation/BrsFileValidator.js +34 -29
  119. package/dist/bscPlugin/validation/BrsFileValidator.js.map +1 -1
  120. package/dist/bscPlugin/validation/BrsFileValidator.spec.js +1 -1
  121. package/dist/bscPlugin/validation/BrsFileValidator.spec.js.map +1 -1
  122. package/dist/bscPlugin/validation/ScopeValidator.d.ts +28 -7
  123. package/dist/bscPlugin/validation/ScopeValidator.js +393 -205
  124. package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -1
  125. package/dist/bscPlugin/validation/ScopeValidator.spec.d.ts +1 -0
  126. package/dist/bscPlugin/validation/ScopeValidator.spec.js +2038 -0
  127. package/dist/bscPlugin/validation/ScopeValidator.spec.js.map +1 -0
  128. package/dist/bscPlugin/validation/XmlFileValidator.js +2 -2
  129. package/dist/bscPlugin/validation/XmlFileValidator.js.map +1 -1
  130. package/dist/cli.js +104 -13
  131. package/dist/cli.js.map +1 -1
  132. package/dist/deferred.d.ts +3 -3
  133. package/dist/deferred.js.map +1 -1
  134. package/dist/diagnosticUtils.d.ts +8 -2
  135. package/dist/diagnosticUtils.js +45 -16
  136. package/dist/diagnosticUtils.js.map +1 -1
  137. package/dist/examples/plugins/removePrint.js +1 -1
  138. package/dist/examples/plugins/removePrint.js.map +1 -1
  139. package/dist/files/AssetFile.d.ts +26 -0
  140. package/dist/files/AssetFile.js +26 -0
  141. package/dist/files/AssetFile.js.map +1 -0
  142. package/dist/files/BrsFile.Class.spec.js +383 -56
  143. package/dist/files/BrsFile.Class.spec.js.map +1 -1
  144. package/dist/files/BrsFile.d.ts +73 -46
  145. package/dist/files/BrsFile.js +370 -534
  146. package/dist/files/BrsFile.js.map +1 -1
  147. package/dist/files/BrsFile.spec.js +1139 -682
  148. package/dist/files/BrsFile.spec.js.map +1 -1
  149. package/dist/files/Factory.d.ts +25 -0
  150. package/dist/files/Factory.js +22 -0
  151. package/dist/files/Factory.js.map +1 -0
  152. package/dist/files/File.d.ts +106 -0
  153. package/dist/files/File.js +16 -0
  154. package/dist/files/File.js.map +1 -0
  155. package/dist/files/LazyFileData.d.ts +20 -0
  156. package/dist/files/LazyFileData.js +54 -0
  157. package/dist/files/LazyFileData.js.map +1 -0
  158. package/dist/files/LazyFileData.spec.d.ts +1 -0
  159. package/dist/files/LazyFileData.spec.js +27 -0
  160. package/dist/files/LazyFileData.spec.js.map +1 -0
  161. package/dist/files/XmlFile.d.ts +56 -23
  162. package/dist/files/XmlFile.js +88 -60
  163. package/dist/files/XmlFile.js.map +1 -1
  164. package/dist/files/XmlFile.spec.js +64 -93
  165. package/dist/files/XmlFile.spec.js.map +1 -1
  166. package/dist/files/tests/imports.spec.js +21 -8
  167. package/dist/files/tests/imports.spec.js.map +1 -1
  168. package/dist/files/tests/optionalChaning.spec.js +14 -14
  169. package/dist/files/tests/optionalChaning.spec.js.map +1 -1
  170. package/dist/globalCallables.js +88 -84
  171. package/dist/globalCallables.js.map +1 -1
  172. package/dist/index.d.ts +9 -1
  173. package/dist/index.js +9 -1
  174. package/dist/index.js.map +1 -1
  175. package/dist/interfaces.d.ts +389 -94
  176. package/dist/interfaces.js +13 -2
  177. package/dist/interfaces.js.map +1 -1
  178. package/dist/lexer/Lexer.d.ts +12 -0
  179. package/dist/lexer/Lexer.js +28 -8
  180. package/dist/lexer/Lexer.js.map +1 -1
  181. package/dist/lexer/Lexer.spec.js +40 -0
  182. package/dist/lexer/Lexer.spec.js.map +1 -1
  183. package/dist/lexer/Token.d.ts +4 -0
  184. package/dist/lexer/Token.js.map +1 -1
  185. package/dist/lexer/TokenKind.d.ts +5 -0
  186. package/dist/lexer/TokenKind.js +14 -2
  187. package/dist/lexer/TokenKind.js.map +1 -1
  188. package/dist/parser/AstNode.d.ts +9 -2
  189. package/dist/parser/AstNode.js +16 -0
  190. package/dist/parser/AstNode.js.map +1 -1
  191. package/dist/parser/BrsTranspileState.d.ts +3 -2
  192. package/dist/parser/BrsTranspileState.js +3 -2
  193. package/dist/parser/BrsTranspileState.js.map +1 -1
  194. package/dist/parser/Expression.d.ts +21 -5
  195. package/dist/parser/Expression.js +128 -35
  196. package/dist/parser/Expression.js.map +1 -1
  197. package/dist/parser/Parser.Class.spec.js +103 -1
  198. package/dist/parser/Parser.Class.spec.js.map +1 -1
  199. package/dist/parser/Parser.d.ts +7 -0
  200. package/dist/parser/Parser.js +117 -21
  201. package/dist/parser/Parser.js.map +1 -1
  202. package/dist/parser/Parser.spec.js +557 -5
  203. package/dist/parser/Parser.spec.js.map +1 -1
  204. package/dist/parser/SGParser.d.ts +4 -4
  205. package/dist/parser/SGParser.js +3 -3
  206. package/dist/parser/SGParser.js.map +1 -1
  207. package/dist/parser/SGParser.spec.js +2 -2
  208. package/dist/parser/SGParser.spec.js.map +1 -1
  209. package/dist/parser/SGTypes.d.ts +2 -2
  210. package/dist/parser/Statement.d.ts +37 -12
  211. package/dist/parser/Statement.js +153 -46
  212. package/dist/parser/Statement.js.map +1 -1
  213. package/dist/parser/tests/Parser.spec.js +2 -1
  214. package/dist/parser/tests/Parser.spec.js.map +1 -1
  215. package/dist/parser/tests/controlFlow/For.spec.js +16 -8
  216. package/dist/parser/tests/controlFlow/For.spec.js.map +1 -1
  217. package/dist/parser/tests/controlFlow/ForEach.spec.js +12 -6
  218. package/dist/parser/tests/controlFlow/ForEach.spec.js.map +1 -1
  219. package/dist/parser/tests/controlFlow/While.spec.js +8 -4
  220. package/dist/parser/tests/controlFlow/While.spec.js.map +1 -1
  221. package/dist/parser/tests/expression/Call.spec.js +4 -4
  222. package/dist/parser/tests/expression/Call.spec.js.map +1 -1
  223. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js +29 -29
  224. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js.map +1 -1
  225. package/dist/parser/tests/expression/RegexLiteralExpression.spec.js +10 -10
  226. package/dist/parser/tests/expression/RegexLiteralExpression.spec.js.map +1 -1
  227. package/dist/parser/tests/expression/SourceLiteralExpression.spec.js +24 -24
  228. package/dist/parser/tests/expression/SourceLiteralExpression.spec.js.map +1 -1
  229. package/dist/parser/tests/expression/TemplateStringExpression.spec.js +75 -36
  230. package/dist/parser/tests/expression/TemplateStringExpression.spec.js.map +1 -1
  231. package/dist/parser/tests/expression/TernaryExpression.spec.js +36 -36
  232. package/dist/parser/tests/expression/TernaryExpression.spec.js.map +1 -1
  233. package/dist/parser/tests/expression/UnaryExpression.spec.d.ts +1 -0
  234. package/dist/parser/tests/expression/UnaryExpression.spec.js +52 -0
  235. package/dist/parser/tests/expression/UnaryExpression.spec.js.map +1 -0
  236. package/dist/parser/tests/statement/ConstStatement.spec.js +71 -22
  237. package/dist/parser/tests/statement/ConstStatement.spec.js.map +1 -1
  238. package/dist/parser/tests/statement/Continue.spec.js +2 -2
  239. package/dist/parser/tests/statement/Continue.spec.js.map +1 -1
  240. package/dist/parser/tests/statement/Enum.spec.js +38 -285
  241. package/dist/parser/tests/statement/Enum.spec.js.map +1 -1
  242. package/dist/parser/tests/statement/For.spec.js +6 -6
  243. package/dist/parser/tests/statement/For.spec.js.map +1 -1
  244. package/dist/parser/tests/statement/ForEach.spec.js +4 -4
  245. package/dist/parser/tests/statement/ForEach.spec.js.map +1 -1
  246. package/dist/parser/tests/statement/InterfaceStatement.spec.js +26 -10
  247. package/dist/parser/tests/statement/InterfaceStatement.spec.js.map +1 -1
  248. package/dist/parser/tests/statement/PrintStatement.spec.js +16 -13
  249. package/dist/parser/tests/statement/PrintStatement.spec.js.map +1 -1
  250. package/dist/parser/tests/statement/ReturnStatement.spec.js +5 -3
  251. package/dist/parser/tests/statement/ReturnStatement.spec.js.map +1 -1
  252. package/dist/parser/tests/statement/Set.spec.js +26 -13
  253. package/dist/parser/tests/statement/Set.spec.js.map +1 -1
  254. package/dist/preprocessor/Manifest.d.ts +1 -1
  255. package/dist/preprocessor/Manifest.js +2 -2
  256. package/dist/preprocessor/Manifest.js.map +1 -1
  257. package/dist/roku-types/data.json +243 -293
  258. package/dist/roku-types/index.d.ts +17 -38
  259. package/dist/types/ArrayType.d.ts +4 -1
  260. package/dist/types/ArrayType.js +46 -6
  261. package/dist/types/ArrayType.js.map +1 -1
  262. package/dist/types/ArrayType.spec.js +32 -3
  263. package/dist/types/ArrayType.spec.js.map +1 -1
  264. package/dist/types/AssociativeArrayType.d.ts +11 -0
  265. package/dist/types/AssociativeArrayType.js +52 -0
  266. package/dist/types/AssociativeArrayType.js.map +1 -0
  267. package/dist/types/BaseFunctionType.d.ts +9 -0
  268. package/dist/types/BaseFunctionType.js +25 -0
  269. package/dist/types/BaseFunctionType.js.map +1 -0
  270. package/dist/types/BooleanType.d.ts +2 -1
  271. package/dist/types/BooleanType.js +8 -2
  272. package/dist/types/BooleanType.js.map +1 -1
  273. package/dist/types/BscType.d.ts +10 -6
  274. package/dist/types/BscType.js +69 -16
  275. package/dist/types/BscType.js.map +1 -1
  276. package/dist/types/BscTypeKind.d.ts +3 -0
  277. package/dist/types/BscTypeKind.js +3 -0
  278. package/dist/types/BscTypeKind.js.map +1 -1
  279. package/dist/types/BuiltInInterfaceAdder.d.ts +23 -0
  280. package/dist/types/BuiltInInterfaceAdder.js +157 -0
  281. package/dist/types/BuiltInInterfaceAdder.js.map +1 -0
  282. package/dist/types/BuiltInInterfaceAdder.spec.d.ts +1 -0
  283. package/dist/types/BuiltInInterfaceAdder.spec.js +116 -0
  284. package/dist/types/BuiltInInterfaceAdder.spec.js.map +1 -0
  285. package/dist/types/ClassType.d.ts +10 -4
  286. package/dist/types/ClassType.js +32 -5
  287. package/dist/types/ClassType.js.map +1 -1
  288. package/dist/types/ClassType.spec.js +5 -3
  289. package/dist/types/ClassType.spec.js.map +1 -1
  290. package/dist/types/ComponentType.d.ts +26 -0
  291. package/dist/types/ComponentType.js +83 -0
  292. package/dist/types/ComponentType.js.map +1 -0
  293. package/dist/types/DoubleType.d.ts +2 -1
  294. package/dist/types/DoubleType.js +9 -2
  295. package/dist/types/DoubleType.js.map +1 -1
  296. package/dist/types/DynamicType.d.ts +2 -2
  297. package/dist/types/DynamicType.js +3 -1
  298. package/dist/types/DynamicType.js.map +1 -1
  299. package/dist/types/EnumType.d.ts +24 -6
  300. package/dist/types/EnumType.js +29 -7
  301. package/dist/types/EnumType.js.map +1 -1
  302. package/dist/types/FloatType.d.ts +2 -1
  303. package/dist/types/FloatType.js +9 -2
  304. package/dist/types/FloatType.js.map +1 -1
  305. package/dist/types/FunctionType.d.ts +8 -20
  306. package/dist/types/FunctionType.js +17 -45
  307. package/dist/types/FunctionType.js.map +1 -1
  308. package/dist/types/InheritableType.d.ts +7 -4
  309. package/dist/types/InheritableType.js +67 -3
  310. package/dist/types/InheritableType.js.map +1 -1
  311. package/dist/types/IntegerType.d.ts +2 -1
  312. package/dist/types/IntegerType.js +9 -2
  313. package/dist/types/IntegerType.js.map +1 -1
  314. package/dist/types/InterfaceType.d.ts +6 -4
  315. package/dist/types/InterfaceType.js +8 -11
  316. package/dist/types/InterfaceType.js.map +1 -1
  317. package/dist/types/InterfaceType.spec.js +30 -2
  318. package/dist/types/InterfaceType.spec.js.map +1 -1
  319. package/dist/types/InvalidType.d.ts +2 -1
  320. package/dist/types/InvalidType.js +7 -1
  321. package/dist/types/InvalidType.js.map +1 -1
  322. package/dist/types/LongIntegerType.d.ts +2 -1
  323. package/dist/types/LongIntegerType.js +9 -2
  324. package/dist/types/LongIntegerType.js.map +1 -1
  325. package/dist/types/NamespaceType.d.ts +2 -1
  326. package/dist/types/NamespaceType.js +3 -0
  327. package/dist/types/NamespaceType.js.map +1 -1
  328. package/dist/types/ObjectType.d.ts +2 -2
  329. package/dist/types/ObjectType.js +5 -10
  330. package/dist/types/ObjectType.js.map +1 -1
  331. package/dist/types/ReferenceType.d.ts +15 -3
  332. package/dist/types/ReferenceType.js +173 -24
  333. package/dist/types/ReferenceType.js.map +1 -1
  334. package/dist/types/ReferenceType.spec.js +21 -6
  335. package/dist/types/ReferenceType.spec.js.map +1 -1
  336. package/dist/types/StringType.d.ts +2 -1
  337. package/dist/types/StringType.js +9 -2
  338. package/dist/types/StringType.js.map +1 -1
  339. package/dist/types/TypedFunctionType.d.ts +33 -0
  340. package/dist/types/TypedFunctionType.js +106 -0
  341. package/dist/types/TypedFunctionType.js.map +1 -0
  342. package/dist/types/TypedFunctionType.spec.d.ts +1 -0
  343. package/dist/types/TypedFunctionType.spec.js +122 -0
  344. package/dist/types/TypedFunctionType.spec.js.map +1 -0
  345. package/dist/types/UninitializedType.d.ts +2 -1
  346. package/dist/types/UninitializedType.js +1 -1
  347. package/dist/types/UninitializedType.js.map +1 -1
  348. package/dist/types/UnionType.d.ts +4 -2
  349. package/dist/types/UnionType.js +36 -4
  350. package/dist/types/UnionType.js.map +1 -1
  351. package/dist/types/UnionType.spec.js +46 -19
  352. package/dist/types/UnionType.spec.js.map +1 -1
  353. package/dist/types/VoidType.d.ts +2 -1
  354. package/dist/types/VoidType.js +7 -2
  355. package/dist/types/VoidType.js.map +1 -1
  356. package/dist/types/helper.spec.js +15 -0
  357. package/dist/types/helper.spec.js.map +1 -1
  358. package/dist/types/helpers.d.ts +5 -0
  359. package/dist/types/helpers.js +50 -3
  360. package/dist/types/helpers.js.map +1 -1
  361. package/dist/types/index.d.ts +1 -1
  362. package/dist/types/index.js +1 -1
  363. package/dist/types/index.js.map +1 -1
  364. package/dist/util.d.ts +71 -15
  365. package/dist/util.js +578 -150
  366. package/dist/util.js.map +1 -1
  367. package/dist/validators/ClassValidator.d.ts +0 -1
  368. package/dist/validators/ClassValidator.js +0 -22
  369. package/dist/validators/ClassValidator.js.map +1 -1
  370. package/package.json +3 -2
  371. package/dist/astUtils/AstEditor.js.map +0 -1
  372. package/dist/astUtils/AstEditor.spec.js.map +0 -1
  373. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js.map +0 -1
  374. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.js +0 -31
  375. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.js.map +0 -1
  376. package/dist/types/FunctionType.spec.js +0 -23
  377. package/dist/types/FunctionType.spec.js.map +0 -1
  378. /package/dist/astUtils/{AstEditor.spec.d.ts → Editor.spec.d.ts} +0 -0
  379. /package/dist/bscPlugin/{transpile/BrsFilePreTranspileProcessor.spec.d.ts → completions/CompletionsProcessor.spec.d.ts} +0 -0
  380. /package/dist/{types/FunctionType.spec.d.ts → bscPlugin/serialize/BslibInjector.spec.d.ts} +0 -0
@@ -1,5 +1,5 @@
1
1
  {
2
- "generatedDate": "2022-11-02T15:29:46.390Z",
2
+ "generatedDate": "2023-11-24T19:45:56.208Z",
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 _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. |",
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. |",
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.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.",
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.",
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.\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>",
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>",
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-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.",
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.",
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-defintion-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-definition-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 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\\](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. |",
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 defintion file": {
1714
+ "key definition 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 Defintion File",
1720
- "url": "https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/key-defintion-file.md"
1719
+ "name": "Key Definition File",
1720
+ "url": "https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/key-definition-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,13 +1816,6 @@
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
- },
1826
1819
  {
1827
1820
  "accessPermission": "READ_WRITE",
1828
1821
  "default": "false",
@@ -1865,6 +1858,13 @@
1865
1858
  "name": "color",
1866
1859
  "type": "color"
1867
1860
  },
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| 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. |",
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. |",
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.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.",
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.",
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.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\")",
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\")",
2536
2536
  "events": [],
2537
2537
  "extends": {
2538
2538
  "name": "ArrayGrid",
@@ -2924,6 +2924,23 @@
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
+ ],
2927
2944
  "name": "Node",
2928
2945
  "url": "https://developer.roku.com/docs/references/scenegraph/node.md"
2929
2946
  },
@@ -3236,7 +3253,7 @@
3236
3253
  {
3237
3254
  "accessPermission": "READ_WRITE",
3238
3255
  "default": "noScale",
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. |",
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. |",
3240
3257
  "name": "loadDisplayMode",
3241
3258
  "type": "option string"
3242
3259
  },
@@ -4094,27 +4111,6 @@
4094
4111
  "name": "RowList",
4095
4112
  "url": "https://developer.roku.com/docs/references/scenegraph/list-and-grid-nodes/rowlist.md"
4096
4113
  },
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
- },
4118
4114
  "scene": {
4119
4115
  "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.",
4120
4116
  "events": [],
@@ -4133,7 +4129,7 @@
4133
4129
  {
4134
4130
  "accessPermission": "READ_WRITE",
4135
4131
  "default": "0x000000FF",
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 = \"\"",
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 = \"\"",
4137
4133
  "name": "backgroundColor",
4138
4134
  "type": "color"
4139
4135
  },
@@ -4158,11 +4154,18 @@
4158
4154
  "name": "dialog",
4159
4155
  "type": "Node"
4160
4156
  },
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
+ },
4161
4164
  {
4162
4165
  "accessPermission": "READ_WRITE",
4163
4166
  "default": "not set",
4164
4167
  "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. |",
4165
- "name": "palete",
4168
+ "name": "palette",
4166
4169
  "type": "RSGPalette node"
4167
4170
  }
4168
4171
  ],
@@ -4453,7 +4456,7 @@
4453
4456
  "url": "https://developer.roku.com/docs/references/scenegraph/renderable-nodes/simplelabel.md"
4454
4457
  },
4455
4458
  "soundeffect": {
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)",
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)",
4457
4460
  "events": [],
4458
4461
  "extends": {
4459
4462
  "name": "Node",
@@ -4579,13 +4582,6 @@
4579
4582
  "name": "buttons",
4580
4583
  "type": "array of strings"
4581
4584
  },
4582
- {
4583
- "accessPermission": "Access Permission",
4584
- "default": "Default",
4585
- "description": "Description",
4586
- "name": "Field",
4587
- "type": "Type"
4588
- },
4589
4585
  {
4590
4586
  "accessPermission": "READ_WRITE",
4591
4587
  "default": "\"generic\"",
@@ -5254,6 +5250,13 @@
5254
5250
  "url": "https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/group.md"
5255
5251
  },
5256
5252
  "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
+ },
5257
5260
  {
5258
5261
  "accessPermission": "WRITE_ONLY",
5259
5262
  "default": "0",
@@ -5303,6 +5306,13 @@
5303
5306
  "name": "duration",
5304
5307
  "type": "Time"
5305
5308
  },
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
+ },
5306
5316
  {
5307
5317
  "accessPermission": "READ_WRITE",
5308
5318
  "default": "",
@@ -5338,6 +5348,13 @@
5338
5348
  "name": "jumpToItem",
5339
5349
  "type": "integer"
5340
5350
  },
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
+ },
5341
5358
  {
5342
5359
  "accessPermission": "READ_WRITE",
5343
5360
  "default": "false",
@@ -5675,6 +5692,13 @@
5675
5692
  "url": "https://developer.roku.com/docs/references/scenegraph/layout-group-nodes/group.md"
5676
5693
  },
5677
5694
  "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
+ },
5678
5702
  {
5679
5703
  "accessPermission": "READ_WRITE",
5680
5704
  "default": "NULL",
@@ -5720,14 +5744,14 @@
5720
5744
  {
5721
5745
  "accessPermission": "READ_ONLY",
5722
5746
  "default": "0",
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.",
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.",
5724
5748
  "name": "errorCode",
5725
5749
  "type": "integer"
5726
5750
  },
5727
5751
  {
5728
5752
  "accessPermission": "READ_ONLY",
5729
5753
  "default": "",
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 |",
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 |",
5731
5755
  "name": "errorInfo",
5732
5756
  "type": "roAssociativeArray"
5733
5757
  },
@@ -5741,7 +5765,7 @@
5741
5765
  {
5742
5766
  "accessPermission": "READ_ONLY",
5743
5767
  "default": "",
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). |",
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). |",
5745
5769
  "name": "errorStr",
5746
5770
  "type": "string"
5747
5771
  },
@@ -5790,7 +5814,7 @@
5790
5814
  {
5791
5815
  "accessPermission": "READ_WRITE",
5792
5816
  "default": "[]",
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. |",
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. |",
5794
5818
  "name": "playbackActionButtons (_Available since Roku OS 11.5_)",
5795
5819
  "type": "roArray of roAssociativeArrays"
5796
5820
  },
@@ -5828,6 +5852,13 @@
5828
5852
  "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. |",
5829
5853
  "name": "state",
5830
5854
  "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"
5831
5862
  }
5832
5863
  ],
5833
5864
  "interfaces": [],
@@ -5884,12 +5915,8 @@
5884
5915
  "url": "https://developer.roku.com/docs/references/scenegraph/dynamic-voice-keyboard-nodes/voice-text-edit-box.md"
5885
5916
  },
5886
5917
  "zoomrowlist": {
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.",
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.",
5888
5919
  "events": [],
5889
- "extends": {
5890
- "name": "ArrayGrid",
5891
- "url": "https://developer.roku.com/docs/references/scenegraph/abstract-nodes/arraygrid.md"
5892
- },
5893
5920
  "fields": [],
5894
5921
  "interfaces": [],
5895
5922
  "name": "ZoomRowList",
@@ -5931,7 +5958,7 @@
5931
5958
  "roappmemorymonitor": {
5932
5959
  "availableSince": "10.5",
5933
5960
  "constructors": [],
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).",
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.",
5935
5962
  "events": [
5936
5963
  {
5937
5964
  "name": "roAppMemoryMonitorEvent",
@@ -6058,7 +6085,7 @@
6058
6085
  "returnType": "roAudioPlayer"
6059
6086
  }
6060
6087
  ],
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```",
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```",
6062
6089
  "events": [
6063
6090
  {
6064
6091
  "name": "roAudioPlayerEvent",
@@ -6103,7 +6130,7 @@
6103
6130
  {
6104
6131
  "isRequired": true,
6105
6132
  "name": "param1",
6106
- "type": "string"
6133
+ "type": "dynamic"
6107
6134
  }
6108
6135
  ],
6109
6136
  "returnType": "roAudioResource"
@@ -6144,16 +6171,6 @@
6144
6171
  ],
6145
6172
  "returnType": "roBitmap"
6146
6173
  },
6147
- {
6148
- "params": [
6149
- {
6150
- "isRequired": true,
6151
- "name": "param1",
6152
- "type": "string"
6153
- }
6154
- ],
6155
- "returnType": "roBitmap"
6156
- },
6157
6174
  {
6158
6175
  "params": [
6159
6176
  {
@@ -6564,7 +6581,7 @@
6564
6581
  },
6565
6582
  "rohdmistatus": {
6566
6583
  "constructors": [],
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.",
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.",
6568
6585
  "events": [],
6569
6586
  "interfaces": [
6570
6587
  {
@@ -6640,7 +6657,7 @@
6640
6657
  "returnType": "roInput"
6641
6658
  }
6642
6659
  ],
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```",
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```",
6644
6661
  "events": [
6645
6662
  {
6646
6663
  "name": "roInputEvent",
@@ -6819,7 +6836,7 @@
6819
6836
  {
6820
6837
  "isRequired": true,
6821
6838
  "name": "param1",
6822
- "type": "string"
6839
+ "type": "dynamic"
6823
6840
  }
6824
6841
  ],
6825
6842
  "returnType": "roPath"
@@ -6870,12 +6887,12 @@
6870
6887
  {
6871
6888
  "isRequired": true,
6872
6889
  "name": "param1",
6873
- "type": "string"
6890
+ "type": "dynamic"
6874
6891
  },
6875
6892
  {
6876
6893
  "isRequired": true,
6877
6894
  "name": "param2",
6878
- "type": "string"
6895
+ "type": "dynamic"
6879
6896
  }
6880
6897
  ],
6881
6898
  "returnType": "roRegex"
@@ -6933,6 +6950,10 @@
6933
6950
  "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)`",
6934
6951
  "events": [],
6935
6952
  "interfaces": [
6953
+ {
6954
+ "name": "ifDraw2D",
6955
+ "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifdraw2d.md"
6956
+ },
6936
6957
  {
6937
6958
  "name": "ifRegion",
6938
6959
  "url": "https://developer.roku.com/docs/references/brightscript/interfaces/ifregion.md"
@@ -6948,7 +6969,7 @@
6948
6969
  "returnType": "roRegistry"
6949
6970
  }
6950
6971
  ],
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.",
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.",
6952
6973
  "events": [],
6953
6974
  "interfaces": [
6954
6975
  {
@@ -6977,7 +6998,7 @@
6977
6998
  {
6978
6999
  "isRequired": true,
6979
7000
  "name": "param1",
6980
- "type": "string"
7001
+ "type": "dynamic"
6981
7002
  }
6982
7003
  ],
6983
7004
  "returnType": "roRegistrySection"
@@ -7037,17 +7058,17 @@
7037
7058
  {
7038
7059
  "isRequired": true,
7039
7060
  "name": "param1",
7040
- "type": "boolean"
7061
+ "type": "dynamic"
7041
7062
  },
7042
7063
  {
7043
7064
  "isRequired": true,
7044
7065
  "name": "param2",
7045
- "type": "integer"
7066
+ "type": "dynamic"
7046
7067
  },
7047
7068
  {
7048
7069
  "isRequired": true,
7049
7070
  "name": "param3",
7050
- "type": "integer"
7071
+ "type": "dynamic"
7051
7072
  }
7052
7073
  ],
7053
7074
  "returnType": "roScreen"
@@ -7057,7 +7078,7 @@
7057
7078
  {
7058
7079
  "isRequired": true,
7059
7080
  "name": "param1",
7060
- "type": "boolean"
7081
+ "type": "dynamic"
7061
7082
  }
7062
7083
  ],
7063
7084
  "returnType": "roScreen"
@@ -7067,7 +7088,7 @@
7067
7088
  "returnType": "roScreen"
7068
7089
  }
7069
7090
  ],
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```",
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:",
7071
7092
  "events": [
7072
7093
  {
7073
7094
  "name": "roUniversalControlEvent",
@@ -7102,7 +7123,7 @@
7102
7123
  {
7103
7124
  "isRequired": true,
7104
7125
  "name": "param1",
7105
- "type": "string"
7126
+ "type": "dynamic"
7106
7127
  }
7107
7128
  ],
7108
7129
  "returnType": "roSGNode"
@@ -7273,7 +7294,7 @@
7273
7294
  "returnType": "roSystemLog"
7274
7295
  }
7275
7296
  ],
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.",
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.",
7277
7298
  "events": [],
7278
7299
  "interfaces": [
7279
7300
  {
@@ -7357,7 +7378,7 @@
7357
7378
  {
7358
7379
  "isRequired": true,
7359
7380
  "name": "param1",
7360
- "type": "string"
7381
+ "type": "dynamic"
7361
7382
  }
7362
7383
  ],
7363
7384
  "returnType": "roTextureRequest"
@@ -7730,11 +7751,18 @@
7730
7751
  "returnType": "Boolean"
7731
7752
  },
7732
7753
  {
7733
- "description": "Returns the memory limit for the channel.",
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.",
7734
7762
  "name": "GetMemoryLimitPercent",
7735
7763
  "params": [],
7736
- "returnDescription": "The memory limit for the channel.",
7737
- "returnType": "Int"
7764
+ "returnDescription": "The usage percentage of memory limit for the channel.",
7765
+ "returnType": "dynamic"
7738
7766
  }
7739
7767
  ],
7740
7768
  "name": "ifAppMemoryMonitor",
@@ -8007,7 +8035,7 @@
8007
8035
  {
8008
8036
  "default": null,
8009
8037
  "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.",
8010
- "isRequired": true,
8038
+ "isRequired": false,
8011
8039
  "name": "flags",
8012
8040
  "type": "String"
8013
8041
  }
@@ -8028,7 +8056,7 @@
8028
8056
  {
8029
8057
  "default": null,
8030
8058
  "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.",
8031
- "isRequired": true,
8059
+ "isRequired": false,
8032
8060
  "name": "flags",
8033
8061
  "type": "String"
8034
8062
  }
@@ -8938,6 +8966,12 @@
8938
8966
  ],
8939
8967
  "returnType": "Void"
8940
8968
  },
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
+ },
8941
8975
  {
8942
8976
  "description": "Requests the list of In-Channel products that are linked to the running channel.",
8943
8977
  "name": "GetCatalog",
@@ -9265,6 +9299,21 @@
9265
9299
  "returnDescription": "A dateString corresponding to the specified format.",
9266
9300
  "returnType": "String"
9267
9301
  },
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
+ },
9268
9317
  {
9269
9318
  "description": "Returns the date/time in long-date format.",
9270
9319
  "name": "AsDateStringNoParam",
@@ -9279,6 +9328,21 @@
9279
9328
  "returnDescription": "Number of seconds as Integer.",
9280
9329
  "returnType": "Integer"
9281
9330
  },
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
+ },
9282
9346
  {
9283
9347
  "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\".",
9284
9348
  "name": "FromISO8601String",
@@ -9450,7 +9514,7 @@
9450
9514
  }
9451
9515
  ],
9452
9516
  "returnDescription": "An roByteArray containing the decrypted data.",
9453
- "returnType": "roByteArray"
9517
+ "returnType": "dynamic"
9454
9518
  },
9455
9519
  {
9456
9520
  "description": "Encrypts data on a device that is unique per device, channel, or model.",
@@ -9472,7 +9536,7 @@
9472
9536
  }
9473
9537
  ],
9474
9538
  "returnDescription": "An roByteArray containing the encrypted data.",
9475
- "returnType": "roByteArray"
9539
+ "returnType": "dynamic"
9476
9540
  }
9477
9541
  ],
9478
9542
  "name": "ifDeviceCrypto",
@@ -9494,7 +9558,7 @@
9494
9558
  "params": [
9495
9559
  {
9496
9560
  "default": null,
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",
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",
9498
9562
  "isRequired": true,
9499
9563
  "name": "audio_format",
9500
9564
  "type": "Object"
@@ -9800,7 +9864,7 @@
9800
9864
  "returnType": "String"
9801
9865
  },
9802
9866
  {
9803
- "description": "Checks the general memory levels of the channel.",
9867
+ "description": "Checks the general memory levels of the device.",
9804
9868
  "name": "GetGeneralMemoryLevel",
9805
9869
  "params": [],
9806
9870
  "returnDescription": "Returns the general memory levels of the channel, which may be one of the following values:",
@@ -9870,10 +9934,10 @@
9870
9934
  "returnType": "Object"
9871
9935
  },
9872
9936
  {
9873
- "description": "Checks the three-letter ISO 639-2 language terminology code of the preferred caption language set on the Roku device.",
9937
+ "description": "Checks the two-letter ISO 639-1 language terminology code of the preferred caption language set on the Roku device.",
9874
9938
  "name": "GetPreferredCaptionLanguage",
9875
9939
  "params": [],
9876
- "returnDescription": "The three-letter ISO 639-2 language terminology code, which may be one of the following values:",
9940
+ "returnDescription": "The two-letter ISO 639-1 language terminology code, which may be one of the following values:",
9877
9941
  "returnType": "String"
9878
9942
  },
9879
9943
  {
@@ -10286,50 +10350,7 @@
10286
10350
  "returnType": "Boolean"
10287
10351
  },
10288
10352
  {
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.",
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.",
10333
10354
  "name": "DrawScaledObject",
10334
10355
  "params": [
10335
10356
  {
@@ -10370,7 +10391,7 @@
10370
10391
  {
10371
10392
  "default": null,
10372
10393
  "description": "The RGBA color of the source object.",
10373
- "isRequired": true,
10394
+ "isRequired": false,
10374
10395
  "name": "rgba",
10375
10396
  "type": "Integer"
10376
10397
  }
@@ -11166,58 +11187,46 @@
11166
11187
  {
11167
11188
  "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",
11168
11189
  "name": "roFont",
11169
- "url": "https://developer.roku.com/docs/references/brightscript/components/rofont.md"
11190
+ "url": "https://developer.roku.com/docs/references/api-index/brightscript/components/rofont.md"
11170
11191
  }
11171
11192
  ],
11172
11193
  "methods": [
11173
11194
  {
11174
- "description": "Returns the number of pixels of the font ascent.",
11175
11195
  "name": "GetAscent",
11176
11196
  "params": [],
11177
- "returnDescription": "The number of pixels.",
11178
11197
  "returnType": "Integer"
11179
11198
  },
11180
11199
  {
11181
- "description": "Returns the number of pixels of the font descent.",
11182
11200
  "name": "GetDescent",
11183
11201
  "params": [],
11184
- "returnDescription": "The number of pixels.",
11185
11202
  "returnType": "Integer"
11186
11203
  },
11187
11204
  {
11188
- "description": "Returns the font maximum advance width in pixels.",
11189
11205
  "name": "GetMaxAdvance",
11190
11206
  "params": [],
11191
- "returnDescription": "The number of pixels.",
11192
11207
  "returnType": "Integer"
11193
11208
  },
11194
11209
  {
11195
- "description": "Returns the number of pixels from one line to the next when drawing with this font.",
11196
11210
  "name": "GetOneLineHeight",
11197
11211
  "params": [],
11198
- "returnDescription": "The number of pixels.",
11199
11212
  "returnType": "Integer"
11200
11213
  },
11201
11214
  {
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.",
11203
11215
  "name": "GetOneLineWidth",
11204
11216
  "params": [
11205
11217
  {
11206
11218
  "default": null,
11207
- "description": "The subject text.",
11208
11219
  "isRequired": true,
11209
11220
  "name": "text",
11210
11221
  "type": "String"
11211
11222
  },
11212
11223
  {
11213
11224
  "default": null,
11214
- "description": "Generally, the amount of pixels available for rendering on this line.",
11215
11225
  "isRequired": true,
11216
11226
  "name": "MaxWidth",
11217
11227
  "type": "Integer"
11218
11228
  }
11219
11229
  ],
11220
- "returnDescription": "The number of pixels. This will be less than provided MaxWidth.",
11221
11230
  "returnType": "Integer"
11222
11231
  }
11223
11232
  ],
@@ -11446,7 +11455,7 @@
11446
11455
  "ifhdmistatus": {
11447
11456
  "implementers": [
11448
11457
  {
11449
- "description": "The HDMI status component provides an interface to the current HDMI operational status",
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.",
11450
11459
  "name": "roHdmiStatus",
11451
11460
  "url": "https://developer.roku.com/docs/references/brightscript/components/rohdmistatus.md"
11452
11461
  }
@@ -11611,7 +11620,7 @@
11611
11620
  "params": [
11612
11621
  {
11613
11622
  "default": null,
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",
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",
11615
11624
  "isRequired": true,
11616
11625
  "name": "cookies",
11617
11626
  "type": "Object"
@@ -12819,7 +12828,7 @@
12819
12828
  "returnType": "Object"
12820
12829
  },
12821
12830
  {
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:",
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:",
12823
12832
  "name": "GetSpaceAvailable",
12824
12833
  "params": [],
12825
12834
  "returnDescription": "An integer representing the the number of bytes available in the device registry.",
@@ -13431,7 +13440,7 @@
13431
13440
  "name": "getParent",
13432
13441
  "params": [],
13433
13442
  "returnDescription": "The parent node; otherwise, \"invalid\".",
13434
- "returnType": "roSGNode"
13443
+ "returnType": "dynamic"
13435
13444
  },
13436
13445
  {
13437
13446
  "description": "Returns an array with every existing node without a parent created by the currently running channel.",
@@ -13451,7 +13460,7 @@
13451
13460
  "name": "getScene",
13452
13461
  "params": [],
13453
13462
  "returnDescription": "The node's root Scene.",
13454
- "returnType": "roSGNode"
13463
+ "returnType": "dynamic"
13455
13464
  },
13456
13465
  {
13457
13466
  "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.",
@@ -13864,7 +13873,7 @@
13864
13873
  "returnType": "Boolean"
13865
13874
  },
13866
13875
  {
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.",
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.",
13868
13877
  "name": "observeField",
13869
13878
  "params": [
13870
13879
  {
@@ -13876,10 +13885,10 @@
13876
13885
  },
13877
13886
  {
13878
13887
  "default": null,
13879
- "description": "The name of the method to be executed when the value of the field changes.",
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.",
13880
13889
  "isRequired": true,
13881
- "name": "functionName",
13882
- "type": "String"
13890
+ "name": "functionNameOrPort",
13891
+ "type": "String or Object"
13883
13892
  },
13884
13893
  {
13885
13894
  "default": null,
@@ -13893,36 +13902,7 @@
13893
13902
  "returnType": "Boolean"
13894
13903
  },
13895
13904
  {
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.",
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.",
13926
13906
  "name": "observeFieldScoped",
13927
13907
  "params": [
13928
13908
  {
@@ -13934,39 +13914,10 @@
13934
13914
  },
13935
13915
  {
13936
13916
  "default": null,
13937
- "description": "The name of the method to be executed when the value of the field changes.",
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.",
13938
13918
  "isRequired": true,
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"
13919
+ "name": "functionNameOrPort",
13920
+ "type": "String or Object"
13970
13921
  },
13971
13922
  {
13972
13923
  "default": null,
@@ -14232,21 +14183,21 @@
14232
14183
  "name": "getGlobalNode",
14233
14184
  "params": [],
14234
14185
  "returnDescription": "A global reference object.",
14235
- "returnType": "roSGNode"
14186
+ "returnType": "dynamic"
14236
14187
  },
14237
14188
  {
14238
14189
  "description": "Returns the roMessagePort object for the SceneGraph scene.",
14239
14190
  "name": "GetMessagePort",
14240
14191
  "params": [],
14241
14192
  "returnDescription": "The roMessagePort object.",
14242
- "returnType": "roMessagePort"
14193
+ "returnType": "dynamic"
14243
14194
  },
14244
14195
  {
14245
14196
  "description": "The roSGScene object associated with the screen.",
14246
14197
  "name": "GetScene",
14247
14198
  "params": [],
14248
14199
  "returnDescription": "Typically, the scene created in main.brs by a roSGScreen.CreateScene() call.",
14249
- "returnType": "roSGNode"
14200
+ "returnType": "dynamic"
14250
14201
  },
14251
14202
  {
14252
14203
  "description": "Specifies the roMessagePort object for the roSGScreen object",
@@ -15593,30 +15544,20 @@
15593
15544
  "returnType": "String"
15594
15545
  },
15595
15546
  {
15547
+ "description": "**OVERLOADED METHOD**\n\n",
15596
15548
  "name": "EndsWith",
15597
15549
  "params": [
15598
15550
  {
15599
15551
  "default": null,
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,
15552
+ "description": "",
15613
15553
  "isRequired": true,
15614
15554
  "name": "matchString",
15615
15555
  "type": "String"
15616
15556
  },
15617
15557
  {
15618
15558
  "default": null,
15619
- "isRequired": true,
15559
+ "description": "",
15560
+ "isRequired": false,
15620
15561
  "name": "length",
15621
15562
  "type": "Integer"
15622
15563
  }
@@ -15639,40 +15580,25 @@
15639
15580
  "returnType": "String"
15640
15581
  },
15641
15582
  {
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",
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",
15643
15584
  "name": "Instr",
15644
15585
  "params": [
15645
15586
  {
15646
15587
  "default": null,
15647
- "description": "The substring within the roString object to be returned.",
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**.",
15648
15589
  "isRequired": true,
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"
15590
+ "name": "substringOrStart_index",
15591
+ "type": "String or Integer"
15666
15592
  },
15667
15593
  {
15668
15594
  "default": null,
15669
15595
  "description": "The substring within the roString object to be found.",
15670
- "isRequired": true,
15596
+ "isRequired": false,
15671
15597
  "name": "substring",
15672
15598
  "type": "String"
15673
15599
  }
15674
15600
  ],
15675
- "returnDescription": "The index of the first instance of the substring within the string, based on the specified starting position.",
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.",
15676
15602
  "returnType": "Integer"
15677
15603
  },
15678
15604
  {
@@ -15698,37 +15624,44 @@
15698
15624
  "returnType": "Integer"
15699
15625
  },
15700
15626
  {
15701
- "description": "Returns a string consisting of the last characters of the string, starting at the zero-based start\\_index.",
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.",
15702
15628
  "name": "Mid",
15703
15629
  "params": [
15704
15630
  {
15705
15631
  "default": null,
15706
- "description": "The position in the roString object from which to return the remaining characters.",
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.",
15707
15633
  "isRequired": true,
15708
15634
  "name": "start_index",
15709
15635
  "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"
15710
15643
  }
15711
15644
  ],
15712
- "returnDescription": "The string generated by the method.",
15645
+ "returnDescription": "The string generated by the method.\n\n or \n\n",
15713
15646
  "returnType": "String"
15714
15647
  },
15715
15648
  {
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",
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",
15718
15651
  "params": [
15719
15652
  {
15720
15653
  "default": null,
15721
- "description": "The position in the roString object from which to return the number of characters specified by num\\_chars.",
15654
+ "description": "The string of characters within the roString object to be replaced.",
15722
15655
  "isRequired": true,
15723
- "name": "start_index",
15724
- "type": "Integer"
15656
+ "name": "fromStr",
15657
+ "type": "String"
15725
15658
  },
15726
15659
  {
15727
15660
  "default": null,
15728
- "description": "The number of characters in the remaining part of the roString object to be retrieved.",
15661
+ "description": "The string of characters that will replace all instances of the **from** string.",
15729
15662
  "isRequired": true,
15730
- "name": "num_chars",
15731
- "type": "Integer"
15663
+ "name": "toStr",
15664
+ "type": "String"
15732
15665
  }
15733
15666
  ],
15734
15667
  "returnType": "String"
@@ -15785,30 +15718,20 @@
15785
15718
  "returnType": "Object"
15786
15719
  },
15787
15720
  {
15721
+ "description": "**OVERLOADED METHOD**\n\n",
15788
15722
  "name": "StartsWith",
15789
15723
  "params": [
15790
15724
  {
15791
15725
  "default": null,
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,
15726
+ "description": "",
15805
15727
  "isRequired": true,
15806
15728
  "name": "matchString",
15807
15729
  "type": "String"
15808
15730
  },
15809
15731
  {
15810
15732
  "default": null,
15811
- "isRequired": true,
15733
+ "description": "",
15734
+ "isRequired": false,
15812
15735
  "name": "matchPos",
15813
15736
  "type": "Integer"
15814
15737
  }
@@ -16545,6 +16468,13 @@
16545
16468
  "returnDescription": "The URL.",
16546
16469
  "returnType": "String"
16547
16470
  },
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
+ },
16548
16478
  {
16549
16479
  "description": "Synchronously performs an HTTP HEAD request and returns an [roUrlTransfer](https://developer.roku.com/docs/references/brightscript/interfaces/ifurltransfer.md\"roUrlTransfer\") object.",
16550
16480
  "name": "Head",
@@ -17388,6 +17318,16 @@
17388
17318
  }
17389
17319
  ],
17390
17320
  "methods": [
17321
+ {
17322
+ "name": "isDownloadSegmentInfo",
17323
+ "params": [],
17324
+ "returnType": "Boolean"
17325
+ },
17326
+ {
17327
+ "name": "isFormatDetected",
17328
+ "params": [],
17329
+ "returnType": "Boolean"
17330
+ },
17391
17331
  {
17392
17332
  "name": "isFullResult",
17393
17333
  "params": [],
@@ -17423,11 +17363,21 @@
17423
17363
  "params": [],
17424
17364
  "returnType": "Boolean"
17425
17365
  },
17366
+ {
17367
+ "name": "isSegmentDownloadStarted",
17368
+ "params": [],
17369
+ "returnType": "Boolean"
17370
+ },
17426
17371
  {
17427
17372
  "name": "isStatusMessage",
17428
17373
  "params": [],
17429
17374
  "returnType": "Boolean"
17430
17375
  },
17376
+ {
17377
+ "name": "isStreamSegmentInfo",
17378
+ "params": [],
17379
+ "returnType": "Boolean"
17380
+ },
17431
17381
  {
17432
17382
  "name": "isTimedMetaData",
17433
17383
  "params": [],