← Bounded paged collections

Collection.Ticket

luastra/collection

Collection.Ticket is an exported, statically checked data contract of luastra/collection. Its exact declaration documents the fields or alternatives accepted at the module boundary and is erased after Luau analysis.

Before you use it

Add luastra/collection to this module's dependencies in luastra.json, then import it with require("luastra/collection"). Choose a stable bounded key for every item and explicit maxItems, maxPages, and maxPageItems values appropriate to the screen. Provider cursors remain application state and must never be used as UI node IDs.

How it fits

Collection types describe pages, directions, tickets, bounded snapshots, results, and the state controller contract.

When to use it

Use Collection.Ticket when annotating values that cross the public luastra/collection boundary or when exporting helpers built on that module. The type documents the exact checked shape and prevents unrelated tables from being substituted accidentally.

Fields or definition

ParameterType / valuesDescription
requestIdnumberChecked requestId field of Collection.Ticket; its exact admitted type is number.
generationnumberChecked generation field of Collection.Ticket; its exact admitted type is number.
directionDirectionChecked direction field of Collection.Ticket; its exact admitted type is Direction.
cursorstring?Checked cursor field of Collection.Ticket; its exact admitted type is string?.

What happens next

A checked page-window annotation for cursor-based ordered data.

Failures and fixes

Duplicate or malformed keys, oversized pages, repeated cursors, stale tickets, or invalid bounds are rejected without silently corrupting order. Edge failures remain separate so the existing window stays usable while the user retries only the failed direction.

Availability

Public-source alpha collection API in 0.5.0-alpha; fetching and viewport triggers remain explicit application and host concerns.

Exact declaration

export type Ticket = {
    requestId: number,
    generation: number,
    direction: Direction,
    cursor: string?,
}

Complete inventory

View all pages in Bounded paged collections
← Previous: Collection.PageNext: Collection.Options →