Referencia Zigspire-zig (SDK consumido)

zig/src/contract.zig

Declaraciones públicas de zig/src/contract.zig (spire-zig (SDK consumido)).

ImplementadoSin versión del tren todavía· generada desde apps/docs/generated/zig/spire.json

Página generada desde spire@spire-0.2.0-XvnrRek1BgCX4Bh8miuITCQgkn0FqeQrYYE3goFfDcQd (zig/src/root.zig). No se edita a mano: bun run docs:gen la regenera y bun run docs:check falla si difiere.

Contratos: lo que el codegen (@spire/bus/codegen, desde el JSON Schema de @styx/api-contracts) emite para Zig, y las comprobaciones comptime que el router exige a cualquier contrato, generado o escrito a mano.

Un contrato es un struct con estas declaraciones:

pub const subject: []const u8 // "cmd.media.closeSession" pub const kind: envelope.Kind // .cmd / .qry / .evt pub const version: u16 // contractVersion del sobre pub const max_bytes: u32 // tope del payload (<= 1 MiB) pub const Request: type // struct con validate pub const Reply: type // struct con validate, o void en evt

Request/Reply declaran pub fn validate(self: *const @This()) ?Violation (restricciones del schema que el tipo Zig no expresa: longitudes, rangos, patrones, enums de strings) y pub const additional_properties: bool (TypeBox additionalProperties: false ⇒ los campos desconocidos son una violación, no se ignoran).

contract.Violation

type · línea 25

pub const Violation = struct

Primera restricción incumplida: ruta JSON Pointer y regla del schema. Va al audit; nunca lleva el valor.

contract.DEFAULT_MAX_BYTES

const · línea 30

pub const DEFAULT_MAX_BYTES: u32 = 64 * 1024

Sin ///.

contract.assertContract

fn · línea 33

pub fn assertContract(comptime C: type) void

Falla al compilar si C no es un contrato completo y coherente.

contract.strLen

fn · línea 65

pub fn strLen(s: []const u8) usize

Sin ///.

contract.checkString

fn · línea 70

pub fn checkString(s: []const u8, comptime path: []const u8, min: ?usize, max: ?usize) ?Violation

Sin ///.

contract.checkNumber

fn · línea 77

pub fn checkNumber(comptime T: type, v: T, comptime path: []const u8, min: ?T, max: ?T) ?Violation

Sin ///.

contract.checkItems

fn · línea 83

pub fn checkItems(len: usize, comptime path: []const u8, min: ?usize, max: ?usize) ?Violation

Sin ///.

contract.checkEnum

fn · línea 89

pub fn checkEnum(s: []const u8, comptime path: []const u8, comptime allowed: []const []const u8) ?Violation

Sin ///.

contract.checkCharClass

fn · línea 97

pub fn checkCharClass(s: []const u8, comptime path: []const u8, comptime class: []const u8, min: usize, max: ?usize) ?Violation

Subconjunto de pattern que el codegen sabe traducir sin motor de regex: ^[<clase>]{min,max}$ con clases ASCII (a-z, A-Z, 0-9, literales). El codegen rechaza cualquier otro patrón en vez de ignorarlo.