Declaraciones públicas de zig/src/contract.zig (spire-zig (SDK consumido)).
apps/docs/generated/zig/spire.jsonPágina generada desde
spire@spire-0.2.0-XvnrRek1BgCX4Bh8miuITCQgkn0FqeQrYYE3goFfDcQd (zig/src/root.zig). No se edita a mano:bun run docs:genla regenera ybun run docs:checkfalla 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.Violationtype · línea 25
pub const Violation = structPrimera restricción incumplida: ruta JSON Pointer y regla del schema. Va al audit; nunca lleva el valor.
contract.DEFAULT_MAX_BYTESconst · línea 30
pub const DEFAULT_MAX_BYTES: u32 = 64 * 1024Sin ///.
contract.assertContractfn · línea 33
pub fn assertContract(comptime C: type) voidFalla al compilar si C no es un contrato completo y coherente.
contract.strLenfn · línea 65
pub fn strLen(s: []const u8) usizeSin ///.
contract.checkStringfn · línea 70
pub fn checkString(s: []const u8, comptime path: []const u8, min: ?usize, max: ?usize) ?ViolationSin ///.
contract.checkNumberfn · línea 77
pub fn checkNumber(comptime T: type, v: T, comptime path: []const u8, min: ?T, max: ?T) ?ViolationSin ///.
contract.checkItemsfn · línea 83
pub fn checkItems(len: usize, comptime path: []const u8, min: ?usize, max: ?usize) ?ViolationSin ///.
contract.checkEnumfn · línea 89
pub fn checkEnum(s: []const u8, comptime path: []const u8, comptime allowed: []const []const u8) ?ViolationSin ///.
contract.checkCharClassfn · línea 97
pub fn checkCharClass(s: []const u8, comptime path: []const u8, comptime class: []const u8, min: usize, max: ?usize) ?ViolationSubconjunto 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.