Skip to main content

stream

The stream library allows a stream-like interface abstraction on top of buffers. This is useful for reading or writing buffers without having to keep track of the current offset position.

This library is specifically tailored around fixed-length buffers.

-- Create an empty stream and write some data:
local s = stream.create(4)
stream.writeu8(s, 10)
stream.writeu8(s, 25)
stream.writeu8(s, 2)
stream.writeu8(s, 43)

-- Grab the buffer if needed:
local buf = stream.buffer(s)

-- Create a stream from an existing buffer:
local s = stream.from(buf)
print(stream.readu8()) -- 10
print(stream.readu8()) -- 25
print(stream.readu8()) -- 2
print(stream.readu8()) -- 43

-- Move the cursor:
stream.seek(s, 1)
print(stream.readu8()) -- 25

Functions​

create​

stream.create(size: number) → Stream

Create a stream around a new buffer with the given size in bytes.

This is equivalent to stream.frombuffer(buffer.create(size)).

frombuffer​

stream.frombuffer(buf: buffer) → Stream

Create a stream around an existing buffer.

fromstring​

stream.fromstring(str: string) → Stream

Create a stream from an existing string.

This is equivalent to stream.frombuffer(buffer.fromstring(size)).

readu8​

stream.readu8(s: Stream) → number

readi8​

stream.readi8(s: Stream) → number

readu16​

stream.readu16(s: Stream) → number

readi16​

stream.readi16(s: Stream) → number

readu32​

stream.readu32(s: Stream) → number

readi32​

stream.readi32(s: Stream) → number

readf32​

stream.readf32(s: Stream) → number

readf64​

stream.readf64(s: Stream) → number

readstring​

stream.readstring(
s: Stream,
count: number
) → string

readlstring​

stream.readlstring(s: Stream) → string

Reads a string previously written using stream.writelstring. This function assumes that the length of the string is written at the beginning as a u32 int.

readvector​

stream.readvector(s: Stream) → vector

Equivalent to stream.readvectorf32.

readvectorf32​

stream.readvectorf32(s: Stream) → vector

readvectoru32​

stream.readvectoru32(s: Stream) → vector

readvectori32​

stream.readvectori32(s: Stream) → vector

readvectoru16​

stream.readvectoru16(s: Stream) → vector

readvectori16​

stream.readvectori16(s: Stream) → vector

readvectoru8​

stream.readvectoru8(s: Stream) → vector

readvectori8​

stream.readvectori8(s: Stream) → vector

writeu8​

stream.writeu8(
s: Stream,
n: number
) → ()

writei8​

stream.writei8(
s: Stream,
n: number
) → ()

writeu16​

stream.writeu16(
s: Stream,
n: number
) → ()

writei16​

stream.writei16(
s: Stream,
n: number
) → ()

writeu32​

stream.writeu32(
s: Stream,
n: number
) → ()

writei32​

stream.writei32(
s: Stream,
n: number
) → ()

writef32​

stream.writef32(
s: Stream,
n: number
) → ()

writef64​

stream.writef64(
s: Stream,
n: number
) → ()

writestring​

stream.writestring(
s: Stream,
str: string,
count: number?
) → ()

writelstring​

stream.writelstring(
s: Stream,
str: string,
count: number?
) → ()

writevector​

stream.writevector(
s: Stream,
v: vector
) → ()

Equivalent to stream.writevectorf32.

writevectorf32​

stream.writevectorf32(
s: Stream,
v: vector
) → ()

writevectoru32​

stream.writevectoru32(
s: Stream,
v: vector
) → ()

writevectori32​

stream.writevectori32(
s: Stream,
v: vector
) → ()

writevectoru16​

stream.writevectoru16(
s: Stream,
v: vector
) → ()

writevectori16​

stream.writevectori16(
s: Stream,
v: vector
) → ()

writevectoru8​

stream.writevectoru8(
s: Stream,
v: vector
) → ()

writevectori8​

stream.writevectori8(
s: Stream,
v: vector
) → ()

len​

stream.len(s: Stream) → number

Returns the length of the backing buffer.

pos​

stream.pos(s: Stream) → number

Returns the position of the stream's cursor.

copy​

stream.copy(
target: Stream,
source: Stream,
count: number
) → ()

Copy count bytes from source into target. The provided streams' cursors are incremented by count.

copytobuffer​

stream.copytobuffer(
target: buffer,
targetOffset: number,
source: Stream,
count: number
) → ()

Copy count bytes from the source stream into the target buffer. The source stream cursor is incremented by count.

copyfrombuffer​

stream.copyfrombuffer(
target: Stream,
source: buffer,
sourceOffset: number?,
count: number
) → ()

Copy count bytes from the source buffer (optionally offset by sourceOffset) into the target stream. The target stream cursor is incremented by count.

seek​

stream.seek(
s: Stream,
offset: number
) → ()

Moves the cursor relative to the beginning of the stream.

seekend​

stream.seekend(
s: Stream,
offset: number
) → ()

Moves the cursor backward relative to the end of the stream.

seekforward​

stream.seekforward(
s: Stream,
offset: number
) → ()

Moves the cursor forward relative to the current cursor position.

seekbackward​

stream.seekbackward(
s: Stream,
offset: number
) → ()

Moves the cursor backward relative to the current cursor position.

buffer​

stream.buffer(s: Stream) → buffer

Gets the backing buffer for the stream.

tostring​

stream.tostring(s: Stream) → string

Returns the backing buffer as a string.

atend​

stream.atend(s: Stream) → boolean

Returns true if the cursor is at the end of the stream.

Show raw api
{
    "functions": [
        {
            "name": "create",
            "desc": "Create a stream around a new buffer with the given size in bytes.\n\nThis is equivalent to `stream.frombuffer(buffer.create(size))`.",
            "params": [
                {
                    "name": "size",
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Stream\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 51,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "frombuffer",
            "desc": "Create a stream around an existing buffer.",
            "params": [
                {
                    "name": "buf",
                    "desc": "",
                    "lua_type": "buffer"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Stream\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 60,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "fromstring",
            "desc": "Create a stream from an existing string.\n\nThis is equivalent to `stream.frombuffer(buffer.fromstring(size))`.",
            "params": [
                {
                    "name": "str",
                    "desc": "",
                    "lua_type": "string"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Stream\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 75,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "readu8",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "number\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 90,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "readi8",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "number\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 99,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "readu16",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "number\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 108,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "readi16",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "number\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 117,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "readu32",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "number\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 126,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "readi32",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "number\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 135,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "readf32",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "number\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 144,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "readf64",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "number\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 153,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "readstring",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "count",
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "string\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 162,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "readlstring",
            "desc": "Reads a string previously written using `stream.writelstring`. This function\nassumes that the length of the string is written at the beginning as a u32 int.",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "string\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 174,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "readvector",
            "desc": "Equivalent to `stream.readvectorf32`.",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "vector\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 184,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "readvectorf32",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "vector\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 197,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "readvectoru32",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "vector\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 210,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "readvectori32",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "vector\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 223,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "readvectoru16",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "vector\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 236,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "readvectori16",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "vector\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 249,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "readvectoru8",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "vector\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 262,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "readvectori8",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "vector\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 275,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "writeu8",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "n",
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 291,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "writei8",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "n",
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 299,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "writeu16",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "n",
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 307,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "writei16",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "n",
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 315,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "writeu32",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "n",
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 323,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "writei32",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "n",
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 331,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "writef32",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "n",
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 339,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "writef64",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "n",
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 347,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "writestring",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "str",
                    "desc": "",
                    "lua_type": "string"
                },
                {
                    "name": "count",
                    "desc": "",
                    "lua_type": "number?"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 355,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "writelstring",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "str",
                    "desc": "",
                    "lua_type": "string"
                },
                {
                    "name": "count",
                    "desc": "",
                    "lua_type": "number?"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 363,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "writevector",
            "desc": "Equivalent to `stream.writevectorf32`.",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "v",
                    "desc": "",
                    "lua_type": "vector"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 373,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "writevectorf32",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "v",
                    "desc": "",
                    "lua_type": "vector"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 385,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "writevectoru32",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "v",
                    "desc": "",
                    "lua_type": "vector"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 397,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "writevectori32",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "v",
                    "desc": "",
                    "lua_type": "vector"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 409,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "writevectoru16",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "v",
                    "desc": "",
                    "lua_type": "vector"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 421,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "writevectori16",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "v",
                    "desc": "",
                    "lua_type": "vector"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 433,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "writevectoru8",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "v",
                    "desc": "",
                    "lua_type": "vector"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 445,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "writevectori8",
            "desc": "",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "v",
                    "desc": "",
                    "lua_type": "vector"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 457,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "len",
            "desc": "Returns the length of the backing buffer.",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "number\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 473,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "pos",
            "desc": "Returns the position of the stream's cursor.",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "number\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 482,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "copy",
            "desc": "Copy `count` bytes from `source` into `target`. The provided streams' cursors are\nincremented by `count`.",
            "params": [
                {
                    "name": "target",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "source",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "count",
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 492,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "copytobuffer",
            "desc": "Copy `count` bytes from the `source` stream into the `target` buffer. The `source` stream\ncursor is incremented by `count`.",
            "params": [
                {
                    "name": "target",
                    "desc": "",
                    "lua_type": "buffer"
                },
                {
                    "name": "targetOffset",
                    "desc": "",
                    "lua_type": "number"
                },
                {
                    "name": "source",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "count",
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 504,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "copyfrombuffer",
            "desc": "Copy `count` bytes from the `source` buffer (optionally offset by `sourceOffset`) into the\n`target` stream. The `target` stream cursor is incremented by `count`.",
            "params": [
                {
                    "name": "target",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "source",
                    "desc": "",
                    "lua_type": "buffer"
                },
                {
                    "name": "sourceOffset",
                    "desc": "",
                    "lua_type": "number?"
                },
                {
                    "name": "count",
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 515,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "seek",
            "desc": "Moves the cursor relative to the beginning of the stream.",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "offset",
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 525,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "seekend",
            "desc": "Moves the cursor backward relative to the end of the stream.",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "offset",
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 537,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "seekforward",
            "desc": "Moves the cursor forward relative to the current cursor position.",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "offset",
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 549,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "seekbackward",
            "desc": "Moves the cursor backward relative to the current cursor position.",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                },
                {
                    "name": "offset",
                    "desc": "",
                    "lua_type": "number"
                }
            ],
            "returns": [],
            "function_type": "static",
            "source": {
                "line": 561,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "buffer",
            "desc": "Gets the backing buffer for the stream.",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "buffer\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 573,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "tostring",
            "desc": "Returns the backing buffer as a string.",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "string\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 582,
                "path": "modules/stream/init.luau"
            }
        },
        {
            "name": "atend",
            "desc": "Returns `true` if the cursor is at the end of the stream.",
            "params": [
                {
                    "name": "s",
                    "desc": "",
                    "lua_type": "Stream"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "boolean\n"
                }
            ],
            "function_type": "static",
            "source": {
                "line": 591,
                "path": "modules/stream/init.luau"
            }
        }
    ],
    "properties": [],
    "types": [],
    "name": "stream",
    "desc": "The `stream` library allows a stream-like interface abstraction on top of buffers. This is useful\nfor reading or writing buffers without having to keep track of the current offset position.\n\nThis library is specifically tailored around fixed-length buffers.\n\n```lua\n-- Create an empty stream and write some data:\nlocal s = stream.create(4)\nstream.writeu8(s, 10)\nstream.writeu8(s, 25)\nstream.writeu8(s, 2)\nstream.writeu8(s, 43)\n\n-- Grab the buffer if needed:\nlocal buf = stream.buffer(s)\n\n-- Create a stream from an existing buffer:\nlocal s = stream.from(buf)\nprint(stream.readu8()) -- 10\nprint(stream.readu8()) -- 25\nprint(stream.readu8()) -- 2\nprint(stream.readu8()) -- 43\n\n-- Move the cursor:\nstream.seek(s, 1)\nprint(stream.readu8()) -- 25\n```",
    "source": {
        "line": 35,
        "path": "modules/stream/init.luau"
    }
}