brighterscript 0.66.0-alpha.6 → 0.66.0-alpha.7

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 (244) hide show
  1. package/CHANGELOG.md +52 -10
  2. package/README.md +16 -0
  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/BsConfig.d.ts +15 -1
  8. package/dist/CommentFlagProcessor.d.ts +4 -3
  9. package/dist/CommentFlagProcessor.js.map +1 -1
  10. package/dist/DiagnosticMessages.d.ts +2 -0
  11. package/dist/DiagnosticMessages.js +25 -13
  12. package/dist/DiagnosticMessages.js.map +1 -1
  13. package/dist/LanguageServer.js.map +1 -1
  14. package/dist/PluginInterface.d.ts +11 -2
  15. package/dist/PluginInterface.js +69 -10
  16. package/dist/PluginInterface.js.map +1 -1
  17. package/dist/Program.d.ts +84 -37
  18. package/dist/Program.js +390 -267
  19. package/dist/Program.js.map +1 -1
  20. package/dist/ProgramBuilder.d.ts +10 -4
  21. package/dist/ProgramBuilder.js +44 -54
  22. package/dist/ProgramBuilder.js.map +1 -1
  23. package/dist/Scope.d.ts +13 -13
  24. package/dist/Scope.js +28 -26
  25. package/dist/Scope.js.map +1 -1
  26. package/dist/XmlScope.d.ts +5 -4
  27. package/dist/XmlScope.js +11 -10
  28. package/dist/XmlScope.js.map +1 -1
  29. package/dist/astUtils/{AstEditor.d.ts → Editor.d.ts} +6 -1
  30. package/dist/astUtils/{AstEditor.js → Editor.js} +9 -3
  31. package/dist/astUtils/Editor.js.map +1 -0
  32. package/dist/astUtils/{AstEditor.spec.js → Editor.spec.js} +10 -6
  33. package/dist/astUtils/Editor.spec.js.map +1 -0
  34. package/dist/astUtils/reflection.d.ts +9 -4
  35. package/dist/astUtils/reflection.js +23 -7
  36. package/dist/astUtils/reflection.js.map +1 -1
  37. package/dist/astUtils/reflection.spec.js +2 -2
  38. package/dist/astUtils/reflection.spec.js.map +1 -1
  39. package/dist/astUtils/visitors.d.ts +3 -3
  40. package/dist/astUtils/visitors.spec.js +7 -7
  41. package/dist/astUtils/visitors.spec.js.map +1 -1
  42. package/dist/bscPlugin/BscPlugin.d.ts +10 -2
  43. package/dist/bscPlugin/BscPlugin.js +24 -4
  44. package/dist/bscPlugin/BscPlugin.js.map +1 -1
  45. package/dist/bscPlugin/FileWriter.d.ts +6 -0
  46. package/dist/bscPlugin/FileWriter.js +24 -0
  47. package/dist/bscPlugin/FileWriter.js.map +1 -0
  48. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js +8 -8
  49. package/dist/bscPlugin/codeActions/CodeActionsProcessor.js.map +1 -1
  50. package/dist/bscPlugin/codeActions/CodeActionsProcessor.spec.js.map +1 -1
  51. package/dist/bscPlugin/completions/CompletionsProcessor.d.ts +5 -0
  52. package/dist/bscPlugin/completions/CompletionsProcessor.js +38 -15
  53. package/dist/bscPlugin/completions/CompletionsProcessor.js.map +1 -1
  54. package/dist/bscPlugin/completions/CompletionsProcessor.spec.js +65 -3
  55. package/dist/bscPlugin/completions/CompletionsProcessor.spec.js.map +1 -1
  56. package/dist/bscPlugin/fileProviders/FileProvider.d.ts +9 -0
  57. package/dist/bscPlugin/fileProviders/FileProvider.js +51 -0
  58. package/dist/bscPlugin/fileProviders/FileProvider.js.map +1 -0
  59. package/dist/bscPlugin/hover/HoverProcessor.d.ts +1 -7
  60. package/dist/bscPlugin/hover/HoverProcessor.js +1 -7
  61. package/dist/bscPlugin/hover/HoverProcessor.js.map +1 -1
  62. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.d.ts +1 -0
  63. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js +43 -0
  64. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.js.map +1 -1
  65. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js +22 -0
  66. package/dist/bscPlugin/semanticTokens/BrsFileSemanticTokensProcessor.spec.js.map +1 -1
  67. package/dist/bscPlugin/serialize/BslibInjector.spec.js +19 -0
  68. package/dist/bscPlugin/serialize/BslibInjector.spec.js.map +1 -0
  69. package/dist/bscPlugin/serialize/BslibManager.d.ts +9 -0
  70. package/dist/bscPlugin/serialize/BslibManager.js +40 -0
  71. package/dist/bscPlugin/serialize/BslibManager.js.map +1 -0
  72. package/dist/bscPlugin/serialize/FileSerializer.d.ts +9 -0
  73. package/dist/bscPlugin/serialize/FileSerializer.js +72 -0
  74. package/dist/bscPlugin/serialize/FileSerializer.js.map +1 -0
  75. package/dist/bscPlugin/transpile/{BrsFilePreTranspileProcessor.d.ts → BrsFileTranspileProcessor.d.ts} +4 -2
  76. package/dist/bscPlugin/transpile/{BrsFilePreTranspileProcessor.js → BrsFileTranspileProcessor.js} +25 -4
  77. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.js.map +1 -0
  78. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.d.ts +1 -0
  79. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.js +41 -0
  80. package/dist/bscPlugin/transpile/BrsFileTranspileProcessor.spec.js.map +1 -0
  81. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.d.ts +2 -2
  82. package/dist/bscPlugin/transpile/XmlFilePreTranspileProcessor.js.map +1 -1
  83. package/dist/bscPlugin/validation/ScopeValidator.js +24 -15
  84. package/dist/bscPlugin/validation/ScopeValidator.js.map +1 -1
  85. package/dist/bscPlugin/validation/ScopeValidator.spec.js +326 -0
  86. package/dist/bscPlugin/validation/ScopeValidator.spec.js.map +1 -1
  87. package/dist/bscPlugin/validation/XmlFileValidator.js +2 -2
  88. package/dist/bscPlugin/validation/XmlFileValidator.js.map +1 -1
  89. package/dist/cli.js +1 -0
  90. package/dist/cli.js.map +1 -1
  91. package/dist/deferred.d.ts +2 -2
  92. package/dist/deferred.js.map +1 -1
  93. package/dist/diagnosticUtils.d.ts +1 -0
  94. package/dist/diagnosticUtils.js +4 -3
  95. package/dist/diagnosticUtils.js.map +1 -1
  96. package/dist/examples/plugins/removePrint.js +1 -1
  97. package/dist/examples/plugins/removePrint.js.map +1 -1
  98. package/dist/files/AssetFile.d.ts +26 -0
  99. package/dist/files/AssetFile.js +26 -0
  100. package/dist/files/AssetFile.js.map +1 -0
  101. package/dist/files/BrsFile.Class.spec.js +40 -40
  102. package/dist/files/BrsFile.Class.spec.js.map +1 -1
  103. package/dist/files/BrsFile.d.ts +42 -15
  104. package/dist/files/BrsFile.js +120 -78
  105. package/dist/files/BrsFile.js.map +1 -1
  106. package/dist/files/BrsFile.spec.js +266 -167
  107. package/dist/files/BrsFile.spec.js.map +1 -1
  108. package/dist/files/Factory.d.ts +25 -0
  109. package/dist/files/Factory.js +22 -0
  110. package/dist/files/Factory.js.map +1 -0
  111. package/dist/files/File.d.ts +106 -0
  112. package/dist/files/File.js +16 -0
  113. package/dist/files/File.js.map +1 -0
  114. package/dist/files/LazyFileData.d.ts +20 -0
  115. package/dist/files/LazyFileData.js +54 -0
  116. package/dist/files/LazyFileData.js.map +1 -0
  117. package/dist/files/LazyFileData.spec.d.ts +1 -0
  118. package/dist/files/LazyFileData.spec.js +27 -0
  119. package/dist/files/LazyFileData.spec.js.map +1 -0
  120. package/dist/files/XmlFile.d.ts +55 -17
  121. package/dist/files/XmlFile.js +88 -47
  122. package/dist/files/XmlFile.js.map +1 -1
  123. package/dist/files/XmlFile.spec.js +64 -57
  124. package/dist/files/XmlFile.spec.js.map +1 -1
  125. package/dist/files/tests/imports.spec.js +21 -8
  126. package/dist/files/tests/imports.spec.js.map +1 -1
  127. package/dist/files/tests/optionalChaning.spec.js +14 -14
  128. package/dist/files/tests/optionalChaning.spec.js.map +1 -1
  129. package/dist/globalCallables.js +1 -1
  130. package/dist/globalCallables.js.map +1 -1
  131. package/dist/index.d.ts +4 -1
  132. package/dist/index.js +4 -1
  133. package/dist/index.js.map +1 -1
  134. package/dist/interfaces.d.ts +312 -84
  135. package/dist/interfaces.js.map +1 -1
  136. package/dist/lexer/Lexer.js +1 -1
  137. package/dist/lexer/TokenKind.js +0 -1
  138. package/dist/lexer/TokenKind.js.map +1 -1
  139. package/dist/parser/AstNode.d.ts +2 -2
  140. package/dist/parser/AstNode.js +1 -1
  141. package/dist/parser/AstNode.js.map +1 -1
  142. package/dist/parser/BrsTranspileState.d.ts +3 -2
  143. package/dist/parser/BrsTranspileState.js +3 -2
  144. package/dist/parser/BrsTranspileState.js.map +1 -1
  145. package/dist/parser/Expression.d.ts +1 -1
  146. package/dist/parser/Expression.js +3 -9
  147. package/dist/parser/Expression.js.map +1 -1
  148. package/dist/parser/Parser.js +3 -0
  149. package/dist/parser/Parser.js.map +1 -1
  150. package/dist/parser/Parser.spec.js +15 -1
  151. package/dist/parser/Parser.spec.js.map +1 -1
  152. package/dist/parser/SGParser.d.ts +2 -2
  153. package/dist/parser/SGParser.js +3 -3
  154. package/dist/parser/SGParser.js.map +1 -1
  155. package/dist/parser/SGParser.spec.js +2 -2
  156. package/dist/parser/SGParser.spec.js.map +1 -1
  157. package/dist/parser/SGTypes.d.ts +1 -1
  158. package/dist/parser/Statement.d.ts +3 -2
  159. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js +10 -10
  160. package/dist/parser/tests/expression/NullCoalescenceExpression.spec.js.map +1 -1
  161. package/dist/parser/tests/expression/RegexLiteralExpression.spec.js +10 -10
  162. package/dist/parser/tests/expression/RegexLiteralExpression.spec.js.map +1 -1
  163. package/dist/parser/tests/expression/SourceLiteralExpression.spec.js +24 -24
  164. package/dist/parser/tests/expression/SourceLiteralExpression.spec.js.map +1 -1
  165. package/dist/parser/tests/expression/TemplateStringExpression.spec.js +64 -36
  166. package/dist/parser/tests/expression/TemplateStringExpression.spec.js.map +1 -1
  167. package/dist/parser/tests/expression/TernaryExpression.spec.js +34 -34
  168. package/dist/parser/tests/expression/TernaryExpression.spec.js.map +1 -1
  169. package/dist/parser/tests/statement/ConstStatement.spec.js +16 -16
  170. package/dist/parser/tests/statement/ConstStatement.spec.js.map +1 -1
  171. package/dist/parser/tests/statement/Continue.spec.js +2 -2
  172. package/dist/parser/tests/statement/Continue.spec.js.map +1 -1
  173. package/dist/parser/tests/statement/Enum.spec.js +26 -26
  174. package/dist/parser/tests/statement/Enum.spec.js.map +1 -1
  175. package/dist/parser/tests/statement/For.spec.js +6 -6
  176. package/dist/parser/tests/statement/For.spec.js.map +1 -1
  177. package/dist/parser/tests/statement/ForEach.spec.js +4 -4
  178. package/dist/parser/tests/statement/ForEach.spec.js.map +1 -1
  179. package/dist/parser/tests/statement/InterfaceStatement.spec.js +12 -12
  180. package/dist/parser/tests/statement/InterfaceStatement.spec.js.map +1 -1
  181. package/dist/parser/tests/statement/PrintStatement.spec.js +10 -10
  182. package/dist/parser/tests/statement/PrintStatement.spec.js.map +1 -1
  183. package/dist/preprocessor/Manifest.d.ts +1 -1
  184. package/dist/preprocessor/Manifest.js +2 -2
  185. package/dist/preprocessor/Manifest.js.map +1 -1
  186. package/dist/roku-types/data.json +81 -143
  187. package/dist/roku-types/index.d.ts +15 -11
  188. package/dist/types/ArrayType.d.ts +1 -1
  189. package/dist/types/ArrayType.js +4 -0
  190. package/dist/types/ArrayType.js.map +1 -1
  191. package/dist/types/ArrayType.spec.js +1 -1
  192. package/dist/types/ArrayType.spec.js.map +1 -1
  193. package/dist/types/AssociativeArrayType.d.ts +1 -1
  194. package/dist/types/AssociativeArrayType.js +1 -1
  195. package/dist/types/AssociativeArrayType.js.map +1 -1
  196. package/dist/types/BooleanType.js +2 -1
  197. package/dist/types/BooleanType.js.map +1 -1
  198. package/dist/types/BscType.js +2 -0
  199. package/dist/types/BscType.js.map +1 -1
  200. package/dist/types/BuiltInInterfaceAdder.d.ts +3 -0
  201. package/dist/types/BuiltInInterfaceAdder.js +32 -13
  202. package/dist/types/BuiltInInterfaceAdder.js.map +1 -1
  203. package/dist/types/ComponentType.js +3 -0
  204. package/dist/types/ComponentType.js.map +1 -1
  205. package/dist/types/DoubleType.js +3 -1
  206. package/dist/types/DoubleType.js.map +1 -1
  207. package/dist/types/FloatType.js +3 -1
  208. package/dist/types/FloatType.js.map +1 -1
  209. package/dist/types/IntegerType.js +3 -1
  210. package/dist/types/IntegerType.js.map +1 -1
  211. package/dist/types/InterfaceType.d.ts +1 -1
  212. package/dist/types/InterfaceType.js +1 -8
  213. package/dist/types/InterfaceType.js.map +1 -1
  214. package/dist/types/InterfaceType.spec.js +23 -0
  215. package/dist/types/InterfaceType.spec.js.map +1 -1
  216. package/dist/types/LongIntegerType.js +3 -1
  217. package/dist/types/LongIntegerType.js.map +1 -1
  218. package/dist/types/ObjectType.d.ts +1 -1
  219. package/dist/types/StringType.js +2 -2
  220. package/dist/types/StringType.js.map +1 -1
  221. package/dist/types/TypedFunctionType.d.ts +6 -1
  222. package/dist/types/TypedFunctionType.js +45 -15
  223. package/dist/types/TypedFunctionType.js.map +1 -1
  224. package/dist/types/TypedFunctionType.spec.js +99 -0
  225. package/dist/types/TypedFunctionType.spec.js.map +1 -1
  226. package/dist/types/UnionType.js +7 -0
  227. package/dist/types/UnionType.js.map +1 -1
  228. package/dist/types/helper.spec.js +15 -0
  229. package/dist/types/helper.spec.js.map +1 -1
  230. package/dist/types/helpers.d.ts +3 -0
  231. package/dist/types/helpers.js +29 -1
  232. package/dist/types/helpers.js.map +1 -1
  233. package/dist/util.d.ts +11 -5
  234. package/dist/util.js +79 -40
  235. package/dist/util.js.map +1 -1
  236. package/dist/validators/ClassValidator.js.map +1 -1
  237. package/package.json +1 -1
  238. package/dist/astUtils/AstEditor.js.map +0 -1
  239. package/dist/astUtils/AstEditor.spec.js.map +0 -1
  240. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.js.map +0 -1
  241. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.js +0 -31
  242. package/dist/bscPlugin/transpile/BrsFilePreTranspileProcessor.spec.js.map +0 -1
  243. /package/dist/astUtils/{AstEditor.spec.d.ts → Editor.spec.d.ts} +0 -0
  244. /package/dist/bscPlugin/{transpile/BrsFilePreTranspileProcessor.spec.d.ts → serialize/BslibInjector.spec.d.ts} +0 -0
@@ -24,4 +24,4 @@ export declare function parseManifest(contents: string): Map<string, string>;
24
24
  * @returns a map of key to boolean value representing the `bs_const` attribute, or an empty map if
25
25
  * no `bs_const` attribute is found.
26
26
  */
27
- export declare function getBsConst(manifest: Manifest): Map<string, boolean>;
27
+ export declare function getBsConst(manifest: Manifest, toLowerKeys?: boolean): Map<string, boolean>;
@@ -55,7 +55,7 @@ exports.parseManifest = parseManifest;
55
55
  * @returns a map of key to boolean value representing the `bs_const` attribute, or an empty map if
56
56
  * no `bs_const` attribute is found.
57
57
  */
58
- function getBsConst(manifest) {
58
+ function getBsConst(manifest, toLowerKeys = true) {
59
59
  if (!manifest.has('bs_const')) {
60
60
  return new Map();
61
61
  }
@@ -77,7 +77,7 @@ function getBsConst(manifest) {
77
77
  return [keyValuePair.slice(0, equals), keyValuePair.slice(equals + 1)];
78
78
  })
79
79
  // remove leading/trailing whitespace from keys and values, and force everything to lower case
80
- .map(([key, value]) => [key.trim().toLowerCase(), value.trim().toLowerCase()])
80
+ .map(([key, value]) => [toLowerKeys ? key.trim().toLowerCase() : key.trim(), value.trim().toLowerCase()])
81
81
  // convert value to boolean or throw
82
82
  .map(([key, value]) => {
83
83
  if (value.toLowerCase() === 'true') {
@@ -1 +1 @@
1
- {"version":3,"file":"Manifest.js","sourceRoot":"","sources":["../../src/preprocessor/Manifest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Manifest.js","sourceRoot":"","sources":["../../src/preprocessor/Manifest.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  {
2
- "generatedDate": "2023-09-19T17:04:22.938Z",
2
+ "generatedDate": "2023-10-13T20:52:39.696Z",
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
  },
@@ -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",
@@ -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
  },
@@ -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
  }
@@ -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
  },
@@ -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",
@@ -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": [],
@@ -5927,7 +5958,7 @@
5927
5958
  "roappmemorymonitor": {
5928
5959
  "availableSince": "10.5",
5929
5960
  "constructors": [],
5930
- "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.",
5931
5962
  "events": [
5932
5963
  {
5933
5964
  "name": "roAppMemoryMonitorEvent",
@@ -6934,7 +6965,7 @@
6934
6965
  "returnType": "roRegistry"
6935
6966
  }
6936
6967
  ],
6937
- "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.",
6968
+ "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.",
6938
6969
  "events": [],
6939
6970
  "interfaces": [
6940
6971
  {
@@ -7715,6 +7746,13 @@
7715
7746
  "returnDescription": "A flag indicating whether memory alerts have been enabled.",
7716
7747
  "returnType": "Boolean"
7717
7748
  },
7749
+ {
7750
+ "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.",
7751
+ "name": "GetChannelAvailableMemory",
7752
+ "params": [],
7753
+ "returnDescription": "An integer indicating the estimated available memory remaining for the channel or the available memory for the device, whichever is lower.",
7754
+ "returnType": "dynamic"
7755
+ },
7718
7756
  {
7719
7757
  "description": "Returns the usage percentage of memory limit for the channel.",
7720
7758
  "name": "GetMemoryLimitPercent",
@@ -9510,7 +9548,7 @@
9510
9548
  "params": [
9511
9549
  {
9512
9550
  "default": null,
9513
- "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” (deprecated), “wma pro” (deprecated), “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",
9551
+ "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",
9514
9552
  "isRequired": true,
9515
9553
  "name": "audio_format",
9516
9554
  "type": "Object"
@@ -13868,7 +13906,7 @@
13868
13906
  "returnType": "Boolean"
13869
13907
  },
13870
13908
  {
13871
- "description": "Calls a function when a field of the subject node changes. The function called must be in the scope of the current component.",
13909
+ "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.",
13872
13910
  "name": "observeField",
13873
13911
  "params": [
13874
13912
  {
@@ -13880,68 +13918,10 @@
13880
13918
  },
13881
13919
  {
13882
13920
  "default": null,
13883
- "description": "The name of the method to be executed when the value of the field changes.",
13884
- "isRequired": true,
13885
- "name": "functionName",
13886
- "type": "String"
13887
- },
13888
- {
13889
- "default": null,
13890
- "description": "Optional. Names of \"context\" field values to be reported via getInfo() when the monitored field changes.",
13891
- "isRequired": false,
13892
- "name": "infoFields",
13893
- "type": "Object"
13894
- }
13895
- ],
13896
- "returnDescription": "A flag indicating whether this operation was successful.",
13897
- "returnType": "Boolean"
13898
- },
13899
- {
13900
- "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.",
13901
- "name": "observeField",
13902
- "params": [
13903
- {
13904
- "default": null,
13905
- "description": "The name of the field to be monitored.",
13906
- "isRequired": true,
13907
- "name": "fieldName",
13908
- "type": "String"
13909
- },
13910
- {
13911
- "default": null,
13912
- "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.",
13913
- "isRequired": true,
13914
- "name": "port",
13915
- "type": "Object"
13916
- },
13917
- {
13918
- "default": null,
13919
- "description": "Optional. Names of \"context\" field values to be reported via getInfo() when the monitored field changes.",
13920
- "isRequired": false,
13921
- "name": "infoFields",
13922
- "type": "Object"
13923
- }
13924
- ],
13925
- "returnDescription": "A flag indicating whether this operation was successful.",
13926
- "returnType": "Boolean"
13927
- },
13928
- {
13929
- "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.",
13930
- "name": "observeFieldScoped",
13931
- "params": [
13932
- {
13933
- "default": null,
13934
- "description": "The name of the field to be monitored.",
13935
- "isRequired": true,
13936
- "name": "fieldName",
13937
- "type": "String"
13938
- },
13939
- {
13940
- "default": null,
13941
- "description": "The name of the method to be executed when the value of the field changes.",
13921
+ "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.",
13942
13922
  "isRequired": true,
13943
- "name": "functionName",
13944
- "type": "String"
13923
+ "name": "functionNameOrPort",
13924
+ "type": "String or Object"
13945
13925
  },
13946
13926
  {
13947
13927
  "default": null,
@@ -13955,7 +13935,7 @@
13955
13935
  "returnType": "Boolean"
13956
13936
  },
13957
13937
  {
13958
- "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.",
13938
+ "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.",
13959
13939
  "name": "observeFieldScoped",
13960
13940
  "params": [
13961
13941
  {
@@ -13967,10 +13947,10 @@
13967
13947
  },
13968
13948
  {
13969
13949
  "default": null,
13970
- "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.",
13950
+ "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.",
13971
13951
  "isRequired": true,
13972
- "name": "port",
13973
- "type": "Object"
13952
+ "name": "functionNameOrPort",
13953
+ "type": "String or Object"
13974
13954
  },
13975
13955
  {
13976
13956
  "default": null,
@@ -15597,30 +15577,20 @@
15597
15577
  "returnType": "String"
15598
15578
  },
15599
15579
  {
15580
+ "description": "**OVERLOADED METHOD**\n\n",
15600
15581
  "name": "EndsWith",
15601
15582
  "params": [
15602
15583
  {
15603
15584
  "default": null,
15604
- "isRequired": true,
15605
- "name": "matchString",
15606
- "type": "String"
15607
- }
15608
- ],
15609
- "returnDescription": "A flag indicating whether a matching substring was found.",
15610
- "returnType": "Boolean"
15611
- },
15612
- {
15613
- "name": "EndsWith",
15614
- "params": [
15615
- {
15616
- "default": null,
15585
+ "description": "",
15617
15586
  "isRequired": true,
15618
15587
  "name": "matchString",
15619
15588
  "type": "String"
15620
15589
  },
15621
15590
  {
15622
15591
  "default": null,
15623
- "isRequired": true,
15592
+ "description": "",
15593
+ "isRequired": false,
15624
15594
  "name": "length",
15625
15595
  "type": "Integer"
15626
15596
  }
@@ -15643,40 +15613,25 @@
15643
15613
  "returnType": "String"
15644
15614
  },
15645
15615
  {
15646
- "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",
15616
+ "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",
15647
15617
  "name": "Instr",
15648
15618
  "params": [
15649
15619
  {
15650
15620
  "default": null,
15651
- "description": "The substring within the roString object to be returned.",
15621
+ "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**.",
15652
15622
  "isRequired": true,
15653
- "name": "substring",
15654
- "type": "String"
15655
- }
15656
- ],
15657
- "returnDescription": "The index of the first instance of the substring within the string.",
15658
- "returnType": "Integer"
15659
- },
15660
- {
15661
- "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",
15662
- "name": "Instr",
15663
- "params": [
15664
- {
15665
- "default": null,
15666
- "description": "The position in the roString object from which to start looking for and returning the **substring**.",
15667
- "isRequired": true,
15668
- "name": "start_index",
15669
- "type": "Integer"
15623
+ "name": "substringOrStart_index",
15624
+ "type": "String or Integer"
15670
15625
  },
15671
15626
  {
15672
15627
  "default": null,
15673
15628
  "description": "The substring within the roString object to be found.",
15674
- "isRequired": true,
15629
+ "isRequired": false,
15675
15630
  "name": "substring",
15676
15631
  "type": "String"
15677
15632
  }
15678
15633
  ],
15679
- "returnDescription": "The index of the first instance of the substring within the string, based on the specified starting position.",
15634
+ "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.",
15680
15635
  "returnType": "Integer"
15681
15636
  },
15682
15637
  {
@@ -15702,27 +15657,12 @@
15702
15657
  "returnType": "Integer"
15703
15658
  },
15704
15659
  {
15705
- "description": "Returns a string consisting of the last characters of the string, starting at the zero-based start\\_index.",
15660
+ "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.",
15706
15661
  "name": "Mid",
15707
15662
  "params": [
15708
15663
  {
15709
15664
  "default": null,
15710
- "description": "The position in the roString object from which to return the remaining characters.",
15711
- "isRequired": true,
15712
- "name": "start_index",
15713
- "type": "Integer"
15714
- }
15715
- ],
15716
- "returnDescription": "The string generated by the method.",
15717
- "returnType": "String"
15718
- },
15719
- {
15720
- "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.",
15721
- "name": "Mid",
15722
- "params": [
15723
- {
15724
- "default": null,
15725
- "description": "The position in the roString object from which to return the number of characters specified by num\\_chars.",
15665
+ "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.",
15726
15666
  "isRequired": true,
15727
15667
  "name": "start_index",
15728
15668
  "type": "Integer"
@@ -15730,11 +15670,12 @@
15730
15670
  {
15731
15671
  "default": null,
15732
15672
  "description": "The number of characters in the remaining part of the roString object to be retrieved.",
15733
- "isRequired": true,
15673
+ "isRequired": false,
15734
15674
  "name": "num_chars",
15735
15675
  "type": "Integer"
15736
15676
  }
15737
15677
  ],
15678
+ "returnDescription": "The string generated by the method.\n\n or \n\n",
15738
15679
  "returnType": "String"
15739
15680
  },
15740
15681
  {
@@ -15745,14 +15686,14 @@
15745
15686
  "default": null,
15746
15687
  "description": "The string of characters within the roString object to be replaced.",
15747
15688
  "isRequired": true,
15748
- "name": "from",
15689
+ "name": "fromStr",
15749
15690
  "type": "String"
15750
15691
  },
15751
15692
  {
15752
15693
  "default": null,
15753
15694
  "description": "The string of characters that will replace all instances of the **from** string.",
15754
15695
  "isRequired": true,
15755
- "name": "to",
15696
+ "name": "toStr",
15756
15697
  "type": "String"
15757
15698
  }
15758
15699
  ],
@@ -15810,30 +15751,20 @@
15810
15751
  "returnType": "Object"
15811
15752
  },
15812
15753
  {
15754
+ "description": "**OVERLOADED METHOD**\n\n",
15813
15755
  "name": "StartsWith",
15814
15756
  "params": [
15815
15757
  {
15816
15758
  "default": null,
15817
- "isRequired": true,
15818
- "name": "matchString",
15819
- "type": "String"
15820
- }
15821
- ],
15822
- "returnDescription": "A flag indicating whether a matching substring was found.",
15823
- "returnType": "Boolean"
15824
- },
15825
- {
15826
- "name": "StartsWith",
15827
- "params": [
15828
- {
15829
- "default": null,
15759
+ "description": "",
15830
15760
  "isRequired": true,
15831
15761
  "name": "matchString",
15832
15762
  "type": "String"
15833
15763
  },
15834
15764
  {
15835
15765
  "default": null,
15836
- "isRequired": true,
15766
+ "description": "",
15767
+ "isRequired": false,
15837
15768
  "name": "matchPos",
15838
15769
  "type": "Integer"
15839
15770
  }
@@ -16570,6 +16501,13 @@
16570
16501
  "returnDescription": "The URL.",
16571
16502
  "returnType": "String"
16572
16503
  },
16504
+ {
16505
+ "description": "Returns the user agent of the device, which can then be passed into server-side ad requests.",
16506
+ "name": "GetUserAgent",
16507
+ "params": [],
16508
+ "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).",
16509
+ "returnType": "String"
16510
+ },
16573
16511
  {
16574
16512
  "description": "Synchronously performs an HTTP HEAD request and returns an [roUrlTransfer](https://developer.roku.com/docs/references/brightscript/interfaces/ifurltransfer.md\"roUrlTransfer\") object.",
16575
16513
  "name": "Head",
@@ -641,6 +641,19 @@ export declare const nodes: {
641
641
  name: string;
642
642
  url: string;
643
643
  }[];
644
+ methods: {
645
+ description: string;
646
+ isVariadic: boolean;
647
+ name: string;
648
+ params: {
649
+ default: any;
650
+ description: string;
651
+ isRequired: boolean;
652
+ name: string;
653
+ type: string;
654
+ }[];
655
+ returnType: string;
656
+ }[];
644
657
  name: string;
645
658
  url: string;
646
659
  };
@@ -4802,17 +4815,6 @@ export declare const interfaces: {
4802
4815
  }[];
4803
4816
  returnType: string;
4804
4817
  returnDescription?: undefined;
4805
- } | {
4806
- name: string;
4807
- params: {
4808
- default: any;
4809
- isRequired: boolean;
4810
- name: string;
4811
- type: string;
4812
- }[];
4813
- returnDescription: string;
4814
- returnType: string;
4815
- description?: undefined;
4816
4818
  } | {
4817
4819
  description: string;
4818
4820
  name: string;
@@ -5452,6 +5454,7 @@ export interface BRSBaseMethodData extends PossiblyDeprecated {
5452
5454
  isRequired: boolean;
5453
5455
  type: string;
5454
5456
  }[];
5457
+ isVariadic?: boolean;
5455
5458
  returnType: string;
5456
5459
  }
5457
5460
  export interface BRSEventMethodData extends BRSBaseMethodData {
@@ -5480,6 +5483,7 @@ export interface SGNodeData extends BrightScriptDocLookup {
5480
5483
  events: BrightScriptDocLookup[];
5481
5484
  interfaces: BrightScriptDocLookup[];
5482
5485
  extends?: BrightScriptDocLookup;
5486
+ methods?: BRSInterfaceMethodData[];
5483
5487
  }
5484
5488
  export interface BRSComponentData extends BrightScriptDocLookup, PossiblyDeprecated {
5485
5489
  interfaces: BrightScriptDocLookup[];
@@ -1,4 +1,4 @@
1
- import type { TypeCompatibilityData } from '..';
1
+ import type { TypeCompatibilityData } from '../interfaces';
2
2
  import { BscType } from './BscType';
3
3
  import { BscTypeKind } from './BscTypeKind';
4
4
  export declare class ArrayType extends BscType {
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ArrayType = void 0;
4
+ const SymbolTable_1 = require("../SymbolTable");
4
5
  const reflection_1 = require("../astUtils/reflection");
5
6
  const BscType_1 = require("./BscType");
6
7
  const BscTypeKind_1 = require("./BscTypeKind");
@@ -39,6 +40,9 @@ class ArrayType extends BscType_1.BscType {
39
40
  else if ((0, reflection_1.isArrayType)(targetType)) {
40
41
  return this.defaultType.isTypeCompatible(targetType.defaultType, data);
41
42
  }
43
+ else if (this.checkCompatibilityBasedOnMembers(targetType, SymbolTable_1.SymbolTypeFlag.runtime, data)) {
44
+ return true;
45
+ }
42
46
  return false;
43
47
  }
44
48
  toString() {