diff --git a/scripts/scrape-roku-docs.ts b/scripts/scrape-roku-docs.ts index a8081a882..f32b588d2 100644 --- a/scripts/scrape-roku-docs.ts +++ b/scripts/scrape-roku-docs.ts @@ -31,7 +31,8 @@ const foundTypesTranslation = { 'object (string array)': 'object', 'robytearray object': 'roByteArray', 'rolist of roassociativearray items': 'roList', - 'roassociative array': 'roAssociativeArray' + 'roassociative array': 'roAssociativeArray', + 'uri string': 'uri' }; const turndownService = new TurndownService({ @@ -887,6 +888,9 @@ class Runner { if (!opts?.allowSpaces) { result = result?.split(' ')?.[0]; } + if (foundTypesTranslation[result.toLowerCase()]) { + result = foundTypesTranslation[result.toLowerCase()]; + } return result; } diff --git a/src/roku-types/data.json b/src/roku-types/data.json index 10423cd98..87cc2bd4c 100644 --- a/src/roku-types/data.json +++ b/src/roku-types/data.json @@ -1,5 +1,5 @@ { - "generatedDate": "2025-04-24T15:48:08.626Z", + "generatedDate": "2025-08-28T16:32:09.734Z", "nodes": { "animation": { "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.", @@ -576,7 +576,7 @@ { "accessPermission": "READ_ONLY", "default": "{ }", - "description": "Information about the audio segment that is currently streaming. This is only meaningful for segmented audio transports, such as DASH and HLS. The associative array has the following entries:\n\n| Key | Type | Value |\n| --- | --- | --- |\n| segBitrateBps | integer | Bitrate of the segment in bits per second |\n| segSequence | integer | The sequence number of the segment in the audio |\n| segStart | time | The start time of the segment from the start of the audio, specified in seconds |\n| segUrl | string | URL of the segment |", + "description": "Information about the audio segment that is currently streaming. This is only meaningful for segmented audio transports, such as DASH and HLS. The associative array has the following entries:\n\n| Key | Type | Value |\n| --- | --- | --- |\n| segBitrateBps | integer | Bitrate of the segment in bits per second |\n| segSequence | integer | The sequence number of the segment in the audio |\n| segStart | time | The start time of the segment from the start of the audio, specified in seconds |\n| segUrl | string | URL of the segment |\n| segTypeStr | string | The type of data in the segment: \"unknown\", \"mux\", \"audio\", \"video\", or \"captions\". |\n| hdrModeStr | string | The HDR format of the content, which may be one of the following values: * \"invalid\" * \"unknown\" * \"none\" * \"hdr10\" * \"dolby\\_vision\" * \"hlg10\" * \"hdr10\" * \"sl-hdr2\" |", "name": "streamingSegment", "type": "associative array" }, @@ -766,12 +766,19 @@ "name": "minWidth", "type": "float" }, + { + "accessPermission": "READ_WRITE", + "default": "false", + "description": "Enables auto-scrolling to ensure text that is larger than initially expected fits within the button (for example, when the text is translated to other languages).", + "name": "scrollable", + "type": "boolean" + }, { "accessPermission": "READ_WRITE", "default": "false", "description": "Controls whether the focus \"footprint\" bitmap is displayed when the button does not have the key focus. Since the default value of the showFocusFootprint field is false, the \"footprint\" bitmap is not displayed by default", "name": "showFocusFootprint", - "type": "Boolean" + "type": "boolean" }, { "accessPermission": "READ_WRITE", @@ -977,7 +984,7 @@ { "accessPermission": "READ_WRITE", "default": "invalid", - "description": "Contains the order to be filled when the \\[\\*\\*doOrder\\*\\*\\](#doorder) command is executed. This ContentNode contains one child ContentNode for each of the items to be purchased. The child ContentNode must contain the following fields:\n\n| Field | Type | Description |\n| --- | --- | --- |\n| code | string | Identifies the product to be purchased, as entered in the **Product Identifier** field on the [In-App Product page in the Developer Dashboard](https://developer.roku.com/products) when the product was created. See [Creating an order](#creating-an-order) for more information. |\n| qty | string | The quantity of the item to be purchased, which is typically 1 for most in-app products. This is only typically more than 1 if the product is a \"packet\" of identical items (such as game points, number of viewings permitted of some item of content, and so on). |\n| action | string | **For upgrades/downgrades only**. Set this to \"Upgrade\" or \"Downgrade\" to change the subscription plan from a previous purchase (for example, `myOrder.action = \"Upgrade\"`). The required values are case-sensitive; do not pass \"upgrade\" or \"downgrade\". See [On-device upgrade and downgrade](/docs/developer-program/roku-pay/implementation/on-device-upgrade-downgrade.md) for more information. |\n\nTo clear an order, set the \\*\\*order\\*\\* field to \"invalid\".", + "description": "Contains the order to be filled when the \\[\\*\\*doOrder\\*\\*\\](#doorder) command is executed. This ContentNode contains one child ContentNode for each of the items to be purchased. The child ContentNode must contain the following fields:\n\n| Field | Type | Description |\n| --- | --- | --- |\n| code | string | Identifies the product to be purchased, as entered in the **Product Identifier** field on the [In-App Product page in the Developer Dashboard](https://developer.roku.com/products) when the product was created. See [Creating an order](#creating-an-order) for more information. |\n| qty | Integer | The quantity of the item to be purchased, which is typically 1 for most in-app products. This is only typically more than 1 if the product is a \"packet\" of identical items (such as game points, number of viewings permitted of some item of content, and so on). |\n\nTo clear an order, set the \\*\\*order\\*\\* field to \"invalid\". \\*\\*For upgrades/downgrades only\\*\\*. You need to include an \\*\\*action\\*\\* field to specify a subscription plan change.\n\n| Field | Type | Access Permission | Description |\n| --- | --- | --- | --- |\n| action | string | READ\\_WRITE | Set this to \"Upgrade\" or \"Downgrade\" to change the subscription plan from a previous purchase (for example, `myOrder.action = \"Upgrade\"`). The required values are case-sensitive; do not pass \"upgrade\" or \"downgrade\". See [On-device upgrade and downgrade](/docs/developer-program/roku-pay/implementation/on-device-upgrade-downgrade.md) for more information. |", "name": "order", "type": "ContentNode" }, @@ -1393,7 +1400,7 @@ { "accessPermission": "READ_WRITE", "default": "not specified", - "description": "URL for FHD content artwork", + "description": "YesterdayURL for FHD content artwork", "name": "FHDPosterUrl", "type": "String" }, @@ -1614,6 +1621,13 @@ "name": "priceDisplay", "type": "string" }, + { + "accessPermission": "READ_WRITE", + "default": "not specified", + "description": "An opaque, unique identifier for the content the app is playing. Each movie, episode, or other content in the app should have a different program ID value. This identifier is used to debug content-specific playback issues. Roku will reference this programID in playback error reports, allowing developers to identify the content that failed to play.", + "name": "ProgramID", + "type": "String" + }, { "accessPermission": "READ_WRITE", "default": "not specified", @@ -2440,7 +2454,7 @@ "url": "https://developer.roku.com/docs/references/scenegraph/animation-nodes/floatfieldinterpolator.md" }, "font": { - "description": "Extends [**Node**](https://developer.roku.com/docs/references/scenegraph/node.md\n\nThe Font node class specifies the font to be used by a Label node, or any other nodes that render text.\n\nNodes that use fonts include a field that stores a Font node. The font to use is specified by creating a Font node, and setting its uri and size fields.\n\nThe uri field can be set to any TrueType/OpenType font file. For example, to specify a font in XML markup:\n\n```\n\n```\n\nA default system font can also be specified, such as in the following:\n\n```\n