3.3 KiB
Register Schemas — @suaveplan/bitpacker-strategies
(no submodules)
Purpose
Idempotent integration with @suaveplan/schema-registry for the @suaveplan/bitpacker-strategies package. Exposes a single registerBitPackerStrategiesSchemas(registry) function that converts the package's only public boundary schema (packingStrategyManagerSchema) into JSON Schema form and registers it under the canonical subject bitpacker:@suaveplan/bitpacker-strategies at version 1.
This package's strategies are parameterless, so the only registered surface is the boundary check on registerDefaultStrategies(manager) — the strategy classes themselves are validated by @suaveplan/bitpacker's packingStrategySchema. Mirroring the cross-package shape avoids duplicating those schemas here.
Features
BITPACKER_STRATEGIES_SUBJECTconstant —"bitpacker:@suaveplan/bitpacker-strategies"BITPACKER_STRATEGIES_SCHEMA_VERSIONconstant —1registerBitPackerStrategiesSchemas(registry)— idempotent registration
Usage: Basic Example
import { createRegistry } from "@suaveplan/schema-registry";
import {
BITPACKER_STRATEGIES_SUBJECT,
registerBitPackerStrategiesSchemas,
} from "@suaveplan/bitpacker-strategies/register-schemas";
const registry = createRegistry();
registerBitPackerStrategiesSchemas(registry);
console.log(registry.getLatest(BITPACKER_STRATEGIES_SUBJECT).version); // 1
Usage: Advanced Example
import { createRegistry, SchemaRegistry } from "@suaveplan/schema-registry";
import { registerBitPackerSchemas } from "@suaveplan/bitpacker/register-schemas";
import { registerBitPackerStrategiesSchemas } from "@suaveplan/bitpacker-strategies/register-schemas";
function bootstrapAll(registry: SchemaRegistry) {
registerBitPackerSchemas(registry);
registerBitPackerStrategiesSchemas(registry);
}
const registry = createRegistry();
bootstrapAll(registry);
bootstrapAll(registry); // safe: idempotent
API Reference
BITPACKER_STRATEGIES_SUBJECT: "bitpacker:@suaveplan/bitpacker-strategies"
Const string. The exact subject under which the package's schemas are registered.
BITPACKER_STRATEGIES_SCHEMA_VERSION: 1
Const number. The version under which the package's schemas are registered.
registerBitPackerStrategiesSchemas(registry: SchemaRegistry): void
Idempotent registration. If the subject is already present in registry.listSubjects(), returns without writing. Otherwise registers the packingStrategyManager payload with { namespace, package } metadata.
Implementation Notes
- Single-key payload. This package's only boundary schema is
packingStrategyManagerSchema. The payload object keeps a single key (packingStrategyManager) for parity with the larger families' payloads, so a downstream consumer can pick the schema by name. - Idempotency via
listSubjects()check. Same pattern as the core package — a membership test is sufficient to keepversion: 1stable across re-imports. unrepresentable: "any". The strategy-manager schema usesz.customfor theinstanceofcheck; without this option,z.toJSONSchemathrows. Coercing to{}is fine because consumers reading the JSON-Schema payload are typically asking "what does this package register?" not "validate me against this schema at runtime."