nodeHelpers. QueueItem

Compile-time contract for a queue item AA (the return shape of createQueueItem below). BrighterScript interfaces ARE build-enforced wherever a value is TYPED as the interface (verified on this toolchain: a QueueItem-typed value raises cannot-find-name on an undeclared member and return-type-mismatch on a missing required member). createQueueItem itself returns as object, not as QueueItem: its result is used as a real roAssociativeArray (callers/tests call DoesExist/Count) and an interface return type strips those AA methods (see the return-type note on the function below). So the ENFORCED gate on the returned shape is the createQueueItem spec at tests/source/unit/utils/nodeHelpers.spec.bs; this interface is the single explicit source of truth for the shape, IDE autocomplete, and a build-checked contract for any local you DO type as nodeHelpers.QueueItem. Most members are optional: createQueueItem only copies them when the source carries them, so a bare/lean source yields a minimal item.

Properties
NameTypeDescription
backdropImageTagsobject

Always present: callers may .Count() the backdrop arrays without an isValid() guard.

parentBackdropImageTagsobject
parentBackdropItemIdstring
idstring

Identity + playback

typestring
titlestring
mediaSourceIdstring
runTimeTickslonginteger
namestring

Now-playing display contract: audio plays IN PLACE, so AudioPlayerView reads these straight ' off the queue item (video re-fetches on mount and doesn't need them).

artistsobject
albumArtiststring
albumNamestring
albumIdstring
albumPrimaryImageTagstring
primaryImageTagstring
seriesIdstring

Episode navigation (resume dialog)

seasonIdstring
playbackPositionTickslonginteger
channelNumberstring

Live TV

startingPointlonginteger

Set by callers after creation (quickplay / ItemDetails): playback selection + resume point. ' Write the pair through setResumeStart() / setExactStart(), never startingPoint alone.

startingPointIsExactboolean

True when startingPoint is a place the caller NAMED (a chapter, Play from the start, the ' position a reload saved) rather than a saved resume position. Only a resume position may be ' replaced by the one the loader reads for the version it chooses on a per-version server.

selectedAudioStreamIndexinteger
selectedSubtitleStreamIndexinteger
hasVersionInProgressboolean

True when SOME version of this item holds a playback position, which startingPoint alone ' cannot say: on a per-version server the item's own version can sit at 0 while an alternate ' is partway through. Read from the server's source ORDER, so it costs no request. It exists ' because "are we resuming?" is asked before the version is chosen. LoadVideoContentTask ' gates the Cinema Mode preroll on it, since a preroll in front of a resume is wrong.

startsFreshboolean

True for an item that starts from the beginning because the viewer did not choose to ' resume it: one the queue ARRIVES at (QueueManager.advanceTo), or the first item of a queue ' that does not resume, like Play All or shuffle (QueueManager.startCurrentFresh). Written ' only through startFresh(). The loader plays the viewer's explicit version pick when the ' item has it, else the best for the device, never the version holding a position.

followsIntroboolean

True on the copy of an item the Cinema Mode intro queues behind itself: moving on from ' the intro reaches the item the viewer launched, not a new one, so it keeps its start. ' QueueManager.advanceTo consumes it.