# @suaveplan/bitpacker-schema - Schema registry, validation, and versioning for @suaveplan/bitpacker ## Summary Schema registry and validation for bitpacker. ## Documentation tree - [matching](./src/matching/matching.md) — _(no submodules)_ - [matching](./src/matching/matching.md) — _(no submodules)_ - [migration](./src/migration/migration.md) — _(no submodules)_ - [migration](./src/migration/migration.md) — _(no submodules)_ - [registry](./src/registry/registry.md) — _(no submodules)_ - default-clock — _(no submod… - [defaults](./src/registry/defaults/default-clock.md) — _(no submodules)_ - [default-clock](./src/registry/defaults/default-clock.md) — _(no submodules)_ - [factories](./src/registry/factories/factories.md) — _(no submodules)_ - [factories](./src/registry/factories/factories.md) — _(no submodules)_ - [in-memory](./src/registry/storage/in-memory/in-memory.md) — _(no submodules)_ - [in-memory](./src/registry/storage/in-memory/in-memory.md) — _(no submodules)_ - [local-storage](./src/registry/storage/local-storage/local-storage.md) — _(no submodules)_ - [local-storage](./src/registry/storage/local-storage/local-storage.md) — _(no submodules)_ - [registry](./src/registry/registry.md) — _(no submodules)_ - default-clock — _(no submod… - [validation](./src/validation/validation.md) — _(no submodules)_ - [validation](./src/validation/validation.md) — _(no submodules)_ - [versioning](./src/versioning/versioning.md) — _(no submodules)_ - [versioning](./src/versioning/versioning.md) — _(no submodules)_ - [visualization](./src/visualization/visualization.md) — _(no submodules)_ - [visualization](./src/visualization/visualization.md) — _(no submodules)_ - [index](./src/index.md) — **Path:** `bitpacker-schema/src/index.ts` **Export:** See source for details. - [matching](./src/matching/matching.md) — _(no submodules)_- [migration](./src/migration/migration.md) — _(no submodules)_- [migration](./src/migration/migration.md) — _(no submodules)_- [registry](./src/registry/registry.md) — _(no submodules)_- [defaults](./src/registry/defaults/default-clock.md) — _(no submodules)_- [default-clock](./src/registry/defaults/default-clock.md) — _(no submodules)_- [factories](./src/registry/factories/factories.md) — _(no submodules)_- [factories](./src/registry/factories/factories.md) — _(no submodules)_- [in-memory](./src/registry/storage/in-memory/in-memory.md) — _(no submodules)_- [in-memory](./src/registry/storage/in-memory/in-memory.md) — _(no submodules)_- [local-storage](./src/registry/storage/local-storage/local-storage.md) — _(no submodules)_- [local-storage](./src/registry/storage/local-storage/local-storage.md) — _(no submodules)_- [registry](./src/registry/registry.md) — _(no submodules)_- [validation](./src/validation/validation.md) — _(no submodules)_- [validation](./src/validation/validation.md) — _(no submodules)_- [versioning](./src/versioning/versioning.md) — _(no submodules)_- [versioning](./src/versioning/versioning.md) — _(no submodules)_- [visualization](./src/visualization/visualization.md) — _(no submodules)_- [visualization](./src/visualization/visualization.md) — _(no submodules)_- [index](./src/index.md) — **Path:** `bitpacker-schema/src/index.ts` **Export:** See source for details. - [matching](./src/matching/matching.md) — _(no submodules)_- [migration](./src/migration/migration.md) — _(no submodules)_- [migration](./src/migration/migration.md) — _(no submodules)_- [registry](./src/registry/registry.md) — _(no submodules)_- default-clock — _(no submodules)_- [default-clock](./src/registry/defaults/default-clock.md) — _(no submodules)_- [factories](./src/registry/factories/factories.md) — _(no submodules)_- [factories](./src/registry/factories/factories.md) — _(no submodules)_- [in-memory](./src/registry/storage/in-memory/in-memory.md) — _(no submodules)_- [in-memory](./src/registry/storage/in-memory/in-memory.md) — _(no submodules)_- [local-storage](./src/registry/storage/local-storage/local-storage.md) — _(no submodules)_- [local-storage](./src/registry/storage/local-storage/local-storage.md) — _(no submodules)_- [registry](./src/registry/registry.md) — _(no submodules)_- default-clock — _(no submodules)_- [validation](./src/validation/validation.md) — _(no submodules)_- [versioning](./src/versioning/versioning.md) — _(no submodules)_- [versioning](./src/versioning/versioning.md) — _(no submodules)_- [visualization](./src/visualization/visualization.md) — _(no submodules)_- [visualization](./src/visualization/visualization.md) — _(no submodules)_- [index](./src/index.md) — **Path:** `bitpacker-schema/src/index.ts` **Export:** See source for details. - [matching](./src/matching/matching.md) — _(no submodules)_- [migration](./src/migration/migration.md) — _(no submodules)_- [migration](./src/migration/migration.md) — _(no submodules)_- [registry](./src/registry/registry.md) — _(no submodules)_- default-clock — _(no submo… - [defaults](./src/registry/defaults/default-clock.md) — _(no submodules)_- [default-clock](./src/registry/defaults/default-clock.md) — _(no submodules)_- [factories](./src/registry/factories/factories.md) — _(no submodules)_- [factories](./src/registry/factories/factories.md) — _(no submodules)_- [in-memory](./src/registry/storage/in-memory/in-memory.md) — _(no submodules)_- [in-memory](./src/registry/storage/in-memory/in-memory.md) — _(no submodules)_- [local-storage](./src/registry/storage/local-storage/local-storage.md) — _(no submodules)_- [local-storage](./src/registry/storage/local-storage/local-storage.md) — _(no submodules)_- [registry](./src/registry/registry.md) — _(no submodules)_- default-clock — _(no submo… - [validation](./src/validation/validation.md) — _(no submodules)_- [validation](./src/validation/validation.md) — _(no submodules)_- [versioning](./src/versioning/versioning.md) — _(no submodules)_- [versioning](./src/versioning/versioning.md) — _(no submodules)_- [visualization](./src/visualization/visualization.md) — _(no submodules)_- [visualization](./src/visualization/visualization.md) — _(no submodules)_- [index](./src/index.md) — **Path:** `bitpacker-schema/src/index.ts` **Export:** See source for details. - [matching](./src/matching/matching.md) — _(no submodules)_- [migration](./src/migration/migration.md) — _(no submodules)_ - [migration](./src/migration/migration.md) — _(no submodules)_- [registry](./src/registry/registry.md) — _(no submodules)_ - [defaults](./src/registry/defaults/default-clock.md) — _(no submodules)_ - [default-clock](./src/registry/defaults/default-clock.md) — _(no submodules)_ - [factories](./src/registry/factories/factories.md) — _(no submodules)_ - [factories](./src/registry/factories/factories.md) — _(no submodules)_ - [in-memory](./src/registry/storage/in-memory/in-memory.md) — _(no submodules)_ - [in-memory](./src/registry/storage/in-memory/in-memory.md) — _(no submodules)_ - [local-storage](./src/registry/storage/local-storage/local-storage.md) — _(no submodules)_ - [local-storage](./src/registry/storage/local-storage/local-storage.md) — _(no submodules)_ - [registry](./src/registry/registry.md) — _(no submodules)_- [validation](./src/validation/validation.md) — _(no submodules)_ - [validation](./src/validation/validation.md) — _(no submodules)_- [versioning](./src/versioning/versioning.md) — _(no submodules)_ - [versioning](./src/versioning/versioning.md) — _(no submodules)_- [visualization](./src/visualization/visualization.md) — _(no submodules)_ - [visualization](./src/visualization/visualization.md) — _(no submodules)_- [index](./src/index.md) — **Path:** `bitpacker-schema/src/index.ts` **Export:** See source for details. ## Install ```bash bun add @suaveplan/bitpacker-schema ``` ## Usage ```typescript import { SchemaRegistry, validateData, assertValid } from "@suaveplan/bitpacker-schema"; const registry = new SchemaRegistry(); registry.register("player", { x: 255, y: 255, health: 100 }); const schema = registry.resolve("player"); // returns the registered schema const names = registry.listNames(); // ["player"] // Validation const errors = validateData(42, 255); expect(errors).toHaveLength(0); const badErrors = validateData(300, 255); expect(badErrors.length).toBeGreaterThan(0); assertValid(42, 255); // ok assertValid(300, 255); // throws ValidationError ``` ## Modules - `src/registry.ts` — `SchemaRegistry`: name → schema mapping - `src/validation.ts` — `validateData`, `assertValid`: runtime schema validation