Server.DecodeResult
luastra/serverServer.DecodeResult is a discriminated union covering successful output and bounded failure. Branching on success narrows the value to the correct exported record and makes error handling explicit.
Before you use it
Add luastra/server to this module's dependencies in luastra.json, then import it with require("luastra/server"). Declare rpc.call in luastra.json and configure a declared backend operation with a deployed trusted handler. Application code should prefer its generated operation function and decoder.
How it fits
The type describes request options, v2 limits, nullable values, public errors, or the tagged envelope-decoding result.
When to use it
Use Server.DecodeResult at the boundary where untrusted or versioned input is decoded. Branch on result.success before reading value or error so both outcomes remain explicit and type-safe.
Fields or definition
| Parameter | Type / values | Description |
|---|---|---|
| definition | DecodeSuccess | DecodeFailure | Exact alias, union, or callable contract represented by Server.DecodeResult. |
Error codes
This is the complete closed vocabulary emitted by the named operation in this Source SDK contract.
| Code | When it occurs |
|---|---|
| invalid_size | The wire payload is empty, not a string, or larger than 4096 bytes. |
| invalid_version | The wire payload does not declare protocol version v=1. |
| malformed | A field token is missing its name/value separator. |
| invalid_field | A field name, value encoding, or duplicate field is invalid. |
| too_many_fields | The wire payload contains more than 128 fields. |
SDK type flow
Produced by
What happens next
A checked request, result, limit, nullable-value, or public-error annotation.
Failures and fixes
Handle transport failure, envelope decode failure, and domain validation failure separately. The static web build does not deploy trusted backend handlers, credentials, or production operations for you.
Availability
Public-source alpha API in 0.5.0-alpha; production backend deployment remains application-owned.
Exact declaration
export type DecodeResult = DecodeSuccess | DecodeFailure