Repository navigation
SafeShape v3.3.0
SafeShape 3.3.0
Checked output contracts, runtime improvements and English/Russian documentation across all eight packages.
What's new
describeOutputBound(schema)exposes a conservative upper bound on successful outputs.checkSchemaConnection(producer, consumer)checks live-schema connections against that bound. Unproven containment requires manual review; it does not invent a produced counterexample.- Explicit JSON Schema export with
{ side: "output", mode: "output-bound" }. Exact export remains the default. - Cached completed async discovery and immutable result reuse reduce runtime overhead while preserving diagnostics and Error behavior.
- Current guides, API references and package READMEs have Russian counterparts, with translation coverage and drift checks.
Upgrade
npm install safe-shape@3.3.0Update scoped SafeShape packages to 3.3.0 together. Node.js >=20.10 and ESM are required. No breaking public API, snapshot format or default behavior changes are intended.
English release notes · Русское описание релиза
Verification
286 package tests, type checks, build, examples, benchmarks, installed consumers, quality and migration checks passed. Both dependency audits reported zero known vulnerabilities. Final-commit CI passed on Node 20.10.0 and Node 24; both jobs' archives matched the locally qualified archives byte for byte.
The owner authorized publication with the disclosed incomplete independent developer walkthrough. Automated checks do not count as that human review. Performance improved in measured workloads; this release does not claim general performance parity with Zod.
По-русски
В 3.3.0 добавлены проверяемые границы выходных значений, проверка связей живых схем и явный экспорт верхней границы в JSON Schema. Оптимизирован runtime с сохранением диагностики; актуальные руководства и README всех пакетов доступны на русском.
При обновлении синхронизируйте версии всех используемых пакетов SafeShape. Существующие схемы и точные экспортёры не требуют миграции. Если включение выходной границы во вход потребителя не доказано, результат требует ручной проверки — это не доказательство несовместимого выхода.