# @suaveplan/bitpacker-strategies - Built-in packing strategies for @suaveplan/bitpacker ## Summary Built-in packing strategies for `@suaveplan/bitpacker`. Provides strategies for numbers, strings, booleans, objects, arrays, enums, optional fields, oneOf unions, varints, dates, maps, sets, bit arrays, blobs, bitsets, conditionals, versions, definitions, and custom types. ## Documentation tree - [otel](./src/otel/instruments.md) — _(no submodules)_ - [instruments](./src/otel/instruments.md) — _(no submodules)_ - [register-default-strategies](./src/register-default-strategies/register-default-strategies.md) — **Path:** `bitpacker-strategies/src/register-default-strategies.ts` **Export:** See source for details. - [register-default-strategies](./src/register-default-strategies/register-default-strategies.md) — **Path:** `bitpacker-strategies/src/register-default-strategies.ts` **Export:** See source for details. - [register-default-strategies.schema](./src/register-default-strategies.schema/register-default-strategies.schema.md) — Zod schema for the `manager` argument of `registerDefaultStrategies`. Validates that an external caller hands the funct… - [register-default-strategies.schema](./src/register-default-strategies.schema/register-default-strategies.schema.md) — Zod schema for the `manager` argument of `registerDefaultStrategies`. Validates that an external caller hands the funct… - [register-schemas](./src/register-schemas/register-schemas.md) — Idempotent integration with `@suaveplan/schema-registry` for the `@suaveplan/bitpacker-strategies` package. Exposes a s… - [register-schemas](./src/register-schemas/register-schemas.md) — Idempotent integration with `@suaveplan/schema-registry` for the `@suaveplan/bitpacker-strategies` package. Exposes a s… - [array](./src/strategies/array/array.md) — _(no submodules)_ - [array](./src/strategies/array/array.md) — _(no submodules)_ - [array-config](./src/strategies/array-config/array-config.md) — Packs/unpacks arrays described by an explicit configuration object. - [array-config](./src/strategies/array-config/array-config.md) — Packs/unpacks arrays described by an explicit configuration object. - [array-notation](./src/strategies/array-notation/array-notation.md) — Packs/unpacks arrays described by a string notation. - [array-notation](./src/strategies/array-notation/array-notation.md) — Packs/unpacks arrays described by a string notation. - [array-schema](./src/strategies/array-schema/array-schema.md) — Packs/unpacks fixed-length tuple schemas. - [array-schema](./src/strategies/array-schema/array-schema.md) — Packs/unpacks fixed-length tuple schemas. - [bigint](./src/strategies/bigint/bigint.md) — _(no submodules)_ - [bigint](./src/strategies/bigint/bigint.md) — _(no submodules)_ - [bigint-array](./src/strategies/bigint-array/bigint-array.md) — Packs/unpacks arrays of 64-bit BigInt values. - [bigint-array](./src/strategies/bigint-array/bigint-array.md) — Packs/unpacks arrays of 64-bit BigInt values. - [bitarray](./src/strategies/bitarray/bitarray.md) — _(no submodules)_ - [bitarray](./src/strategies/bitarray/bitarray.md) — _(no submodules)_ - [bitset](./src/strategies/bitset/bitset.md) — _(no submodules)_ - [bitset](./src/strategies/bitset/bitset.md) — _(no submodules)_ - [blob](./src/strategies/blob/blob.md) — _(no submodules)_ - [blob](./src/strategies/blob/blob.md) — _(no submodules)_ - [boolean](./src/strategies/boolean/boolean.md) — _(no submodules)_ - [boolean](./src/strategies/boolean/boolean.md) — _(no submodules)_ - [conditional](./src/strategies/conditional/conditional.md) — _(no submodules)_ - [conditional](./src/strategies/conditional/conditional.md) — _(no submodules)_ - [customType](./src/strategies/customType/customType.md) — _(no submodules)_ - [customType](./src/strategies/customType/customType.md) — _(no submodules)_ - [datetime](./src/strategies/datetime/datetime.md) — _(no submodules)_ - [datetime](./src/strategies/datetime/datetime.md) — _(no submodules)_ - [defs](./src/strategies/defs/defs.md) — _(no submodules)_ - [defs](./src/strategies/defs/defs.md) — _(no submodules)_ - [enum](./src/strategies/enum/enum.md) — _(no submodules)_ - [enum](./src/strategies/enum/enum.md) — _(no submodules)_ - [map](./src/strategies/map/map.md) — _(no submodules)_ - [map](./src/strategies/map/map.md) — _(no submodules)_ - [null](./src/strategies/null/null.md) — _(no submodules)_ - [null](./src/strategies/null/null.md) — _(no submodules)_ - [number](./src/strategies/number/number.md) — _(no submodules)_ - [number](./src/strategies/number/number.md) — _(no submodules)_ - [object](./src/strategies/object/object.md) — _(no submodules)_ - [object](./src/strategies/object/object.md) — _(no submodules)_ - [oneOf](./src/strategies/oneOf/oneOf.md) — _(no submodules)_ - [oneOf](./src/strategies/oneOf/oneOf.md) — _(no submodules)_ - [optional](./src/strategies/optional/optional.md) — _(no submodules)_ - [optional](./src/strategies/optional/optional.md) — _(no submodules)_ - [optional-marker](./src/strategies/optional-marker/optional-marker.md) — Packs/unpacks optional values using an explicit marker object. - [optional-marker](./src/strategies/optional-marker/optional-marker.md) — Packs/unpacks optional values using an explicit marker object. - [optional-suffix](./src/strategies/optional-suffix/optional-suffix.md) — Packs/unpacks optional primitive schemas using a `?` suffix. - [optional-suffix](./src/strategies/optional-suffix/optional-suffix.md) — Packs/unpacks optional primitive schemas using a `?` suffix. - [set](./src/strategies/set/set.md) — _(no submodules)_ - [set](./src/strategies/set/set.md) — _(no submodules)_ - [string](./src/strategies/string/string.md) — _(no submodules)_ - [string](./src/strategies/string/string.md) — _(no submodules)_ - [union](./src/strategies/union/union.md) — _(no submodules)_ - [union](./src/strategies/union/union.md) — _(no submodules)_ - [varint](./src/strategies/varint/varint.md) — _(no submodules)_ - [varint](./src/strategies/varint/varint.md) — _(no submodules)_ - [version](./src/strategies/version/version.md) — _(no submodules)_ - [version](./src/strategies/version/version.md) — _(no submodules)_ - [index](./src/index.md) — **Path:** `bitpacker-strategies/src/index.ts` **Export:** See source for details. - [instruments](./src/otel/instruments.md) — _(no submodules)_- [array](./src/strategies/array/array.md) — _(no submodules)_- [array](./src/strategies/array/array.md) — _(no submodules)_- [array-config](./src/strategies/array-config/array-config.md) — Packs/unpacks arrays described by an explicit configuration object. - [array-config](./src/strategies/array-config/array-config.md) — Packs/unpacks arrays described by an explicit configuration object. - [array-notation](./src/strategies/array-notation/array-notation.md) — Packs/unpacks arrays described by a string notation. - [array-notation](./src/strategies/array-notation/array-notation.md) — Packs/unpacks arrays described by a string notation. - [array-schema](./src/strategies/array-schema/array-schema.md) — Packs/unpacks fixed-length tuple schemas. - [array-schema](./src/strategies/array-schema/array-schema.md) — Packs/unpacks fixed-length tuple schemas. - [bigint](./src/strategies/bigint/bigint.md) — _(no submodules)_- [bigint](./src/strategies/bigint/bigint.md) — _(no submodules)_- [bigint-array](./src/strategies/bigint-array/bigint-array.md) — Packs/unpacks arrays of 64-bit BigInt values. - [bigint-array](./src/strategies/bigint-array/bigint-array.md) — Packs/unpacks arrays of 64-bit BigInt values. - [bitarray](./src/strategies/bitarray/bitarray.md) — _(no submodules)_- [bitarray](./src/strategies/bitarray/bitarray.md) — _(no submodules)_- [bitset](./src/strategies/bitset/bitset.md) — _(no submodules)_- [bitset](./src/strategies/bitset/bitset.md) — _(no submodules)_- [blob](./src/strategies/blob/blob.md) — _(no submodules)_- [blob](./src/strategies/blob/blob.md) — _(no submodules)_- [boolean](./src/strategies/boolean/boolean.md) — _(no submodules)_- [boolean](./src/strategies/boolean/boolean.md) — _(no submodules)_- [conditional](./src/strategies/conditional/conditional.md) — _(no submodules)_- [conditional](./src/strategies/conditional/conditional.md) — _(no submodules)_- [customType](./src/strategies/customType/customType.md) — _(no submodules)_- [customType](./src/strategies/customType/customType.md) — _(no submodules)_- [datetime](./src/strategies/datetime/datetime.md) — _(no submodules)_- [datetime](./src/strategies/datetime/datetime.md) — _(no submodules)_- [defs](./src/strategies/defs/defs.md) — _(no submodules)_- [defs](./src/strategies/defs/defs.md) — _(no submodules)_- [enum](./src/strategies/enum/enum.md) — _(no submodules)_- [enum](./src/strategies/enum/enum.md) — _(no submodules)_- [map](./src/strategies/map/map.md) — _(no submodules)_- [map](./src/strategies/map/map.md) — _(no submodules)_- [null](./src/strategies/null/null.md) — _(no submodules)_- [null](./src/strategies/null/null.md) — _(no submodules)_- [number](./src/strategies/number/number.md) — _(no submodules)_- [number](./src/strategies/number/number.md) — _(no submodules)_- [object](./src/strategies/object/object.md) — _(no submodules)_- [object](./src/strategies/object/object.md) — _(no submodules)_- [oneOf](./src/strategies/oneOf/oneOf.md) — _(no submodules)_- [oneOf](./src/strategies/oneOf/oneOf.md) — _(no submodules)_- [optional](./src/strategies/optional/optional.md) — _(no submodules)_- [optional](./src/strategies/optional/optional.md) — _(no submodules)_- [optional-marker](./src/strategies/optional-marker/optional-marker.md) — Packs/unpacks optional values using an explicit marker object. - [optional-marker](./src/strategies/optional-marker/optional-marker.md) — Packs/unpacks optional values using an explicit marker object. - [optional-suffix](./src/strategies/optional-suffix/optional-suffix.md) — Packs/unpacks optional primitive schemas using a `?` suffix. - [optional-suffix](./src/strategies/optional-suffix/optional-suffix.md) — Packs/unpacks optional primitive schemas using a `?` suffix. - [set](./src/strategies/set/set.md) — _(no submodules)_- [set](./src/strategies/set/set.md) — _(no submodules)_- [string](./src/strategies/string/string.md) — _(no submodules)_- [string](./src/strategies/string/string.md) — _(no submodules)_- [union](./src/strategies/union/union.md) — _(no submodules)_- [union](./src/strategies/union/union.md) — _(no submodules)_- [varint](./src/strategies/varint/varint.md) — _(no submodules)_- [varint](./src/strategies/varint/varint.md) — _(no submodules)_- [version](./src/strategies/version/version.md) — _(no submodules)_- [version](./src/strategies/version/version.md) — _(no submodules)_- [index](./src/index.md) — **Path:** `bitpacker-strategies/src/index.ts` **Export:** See source for details. - [register-default-strategies](./src/register-default-strategies.md) — **Path:** `bitpacker-strategies/src/register-default-strategies.ts` **Export:** See source for details. - [register-default-strategies.schema](./src/register-default-strategies.schema.md) — Zod schema for the `manager` argument of `registerDefaultStrategies`. Validates that an external caller hands the funct… - [register-schemas](./src/register-schemas.md) — Idempotent integration with `@suaveplan/schema-registry` for the `@suaveplan/bitpacker-strategies` package. Exposes a s… - [instruments](./src/otel/instruments.md) — _(no submodules)_- [array](./src/strategies/array/array.md) — _(no submodules)_- [array](./src/strategies/array/array.md) — _(no submodules)_- [array-config](./src/strategies/array-config/array-config.md) — Packs/unpacks arrays described by an explicit configuration object. - [array-config](./src/strategies/array-config/array-config.md) — Packs/unpacks arrays described by an explicit configuration object. - [array-notation](./src/strategies/array-notation/array-notation.md) — Packs/unpacks arrays described by a string notation. - [array-notation](./src/strategies/array-notation/array-notation.md) — Packs/unpacks arrays described by a string notation. - [array-schema](./src/strategies/array-schema/array-schema.md) — Packs/unpacks fixed-length tuple schemas. - [array-schema](./src/strategies/array-schema/array-schema.md) — Packs/unpacks fixed-length tuple schemas. - [bigint](./src/strategies/bigint/bigint.md) — _(no submodules)_- [bigint](./src/strategies/bigint/bigint.md) — _(no submodules)_- [bigint-array](./src/strategies/bigint-array/bigint-array.md) — Packs/unpacks arrays of 64-bit BigInt values. - [bigint-array](./src/strategies/bigint-array/bigint-array.md) — Packs/unpacks arrays of 64-bit BigInt values. - [bitarray](./src/strategies/bitarray/bitarray.md) — _(no submodules)_- [bitarray](./src/strategies/bitarray/bitarray.md) — _(no submodules)_- [bitset](./src/strategies/bitset/bitset.md) — _(no submodules)_- [bitset](./src/strategies/bitset/bitset.md) — _(no submodules)_- [blob](./src/strategies/blob/blob.md) — _(no submodules)_- [blob](./src/strategies/blob/blob.md) — _(no submodules)_- [boolean](./src/strategies/boolean/boolean.md) — _(no submodules)_- [boolean](./src/strategies/boolean/boolean.md) — _(no submodules)_- [conditional](./src/strategies/conditional/conditional.md) — _(no submodules)_- [conditional](./src/strategies/conditional/conditional.md) — _(no submodules)_- [customType](./src/strategies/customType/customType.md) — _(no submodules)_- [customType](./src/strategies/customType/customType.md) — _(no submodules)_- [datetime](./src/strategies/datetime/datetime.md) — _(no submodules)_- [datetime](./src/strategies/datetime/datetime.md) — _(no submodules)_- [defs](./src/strategies/defs/defs.md) — _(no submodules)_- [defs](./src/strategies/defs/defs.md) — _(no submodules)_- [enum](./src/strategies/enum/enum.md) — _(no submodules)_- [enum](./src/strategies/enum/enum.md) — _(no submodules)_- [map](./src/strategies/map/map.md) — _(no submodules)_- [map](./src/strategies/map/map.md) — _(no submodules)_- [null](./src/strategies/null/null.md) — _(no submodules)_- [null](./src/strategies/null/null.md) — _(no submodules)_- [number](./src/strategies/number/number.md) — _(no submodules)_- [number](./src/strategies/number/number.md) — _(no submodules)_- [object](./src/strategies/object/object.md) — _(no submodules)_- [object](./src/strategies/object/object.md) — _(no submodules)_- [oneOf](./src/strategies/oneOf/oneOf.md) — _(no submodules)_- [oneOf](./src/strategies/oneOf/oneOf.md) — _(no submodules)_- [optional](./src/strategies/optional/optional.md) — _(no submodules)_- [optional](./src/strategies/optional/optional.md) — _(no submodules)_- [optional-marker](./src/strategies/optional-marker/optional-marker.md) — Packs/unpacks optional values using an explicit marker object. - [optional-marker](./src/strategies/optional-marker/optional-marker.md) — Packs/unpacks optional values using an explicit marker object. - [optional-suffix](./src/strategies/optional-suffix/optional-suffix.md) — Packs/unpacks optional primitive schemas using a `?` suffix. - [optional-suffix](./src/strategies/optional-suffix/optional-suffix.md) — Packs/unpacks optional primitive schemas using a `?` suffix. - [set](./src/strategies/set/set.md) — _(no submodules)_- [set](./src/strategies/set/set.md) — _(no submodules)_- [string](./src/strategies/string/string.md) — _(no submodules)_- [string](./src/strategies/string/string.md) — _(no submodules)_- [union](./src/strategies/union/union.md) — _(no submodules)_- [union](./src/strategies/union/union.md) — _(no submodules)_- [varint](./src/strategies/varint/varint.md) — _(no submodules)_- [varint](./src/strategies/varint/varint.md) — _(no submodules)_- [version](./src/strategies/version/version.md) — _(no submodules)_- [version](./src/strategies/version/version.md) — _(no submodules)_- [index](./src/index.md) — **Path:** `bitpacker-strategies/src/index.ts` **Export:** See source for details. - [register-default-strategies](./src/register-default-strategies.md) — **Path:** `bitpacker-strategies/src/register-default-strategies.ts` **Export:** See source for details. - [register-default-strategies.schema](./src/register-default-strategies.schema.md) — Zod schema for the `manager` argument of `registerDefaultStrategies`. Validates that an external caller hands the funct… - [register-schemas](./src/register-schemas.md) — Idempotent integration with `@suaveplan/schema-registry` for the `@suaveplan/bitpacker-strategies` package. Exposes a s… - [instruments](./src/otel/instruments.md) — _(no submodules)_- [array](./src/strategies/array/array.md) — _(no submodules)_- [array](./src/strategies/array/array.md) — _(no submodules)_- [array-config](./src/strategies/array-config/array-config.md) — Packs/unpacks arrays described by an explicit configuration object. - [array-config](./src/strategies/array-config/array-config.md) — Packs/unpacks arrays described by an explicit configuration object. - [array-notation](./src/strategies/array-notation/array-notation.md) — Packs/unpacks arrays described by a string notation. - [array-notation](./src/strategies/array-notation/array-notation.md) — Packs/unpacks arrays described by a string notation. - [array-schema](./src/strategies/array-schema/array-schema.md) — Packs/unpacks fixed-length tuple schemas. - [array-schema](./src/strategies/array-schema/array-schema.md) — Packs/unpacks fixed-length tuple schemas. - [bigint](./src/strategies/bigint/bigint.md) — _(no submodules)_- [bigint](./src/strategies/bigint/bigint.md) — _(no submodules)_- [bigint-array](./src/strategies/bigint-array/bigint-array.md) — Packs/unpacks arrays of 64-bit BigInt values. - [bigint-array](./src/strategies/bigint-array/bigint-array.md) — Packs/unpacks arrays of 64-bit BigInt values. - [bitarray](./src/strategies/bitarray/bitarray.md) — _(no submodules)_- [bitarray](./src/strategies/bitarray/bitarray.md) — _(no submodules)_- [bitset](./src/strategies/bitset/bitset.md) — _(no submodules)_- [bitset](./src/strategies/bitset/bitset.md) — _(no submodules)_- [blob](./src/strategies/blob/blob.md) — _(no submodules)_- [blob](./src/strategies/blob/blob.md) — _(no submodules)_- [boolean](./src/strategies/boolean/boolean.md) — _(no submodules)_- [boolean](./src/strategies/boolean/boolean.md) — _(no submodules)_- [conditional](./src/strategies/conditional/conditional.md) — _(no submodules)_- [conditional](./src/strategies/conditional/conditional.md) — _(no submodules)_- [customType](./src/strategies/customType/customType.md) — _(no submodules)_- [customType](./src/strategies/customType/customType.md) — _(no submodules)_- [datetime](./src/strategies/datetime/datetime.md) — _(no submodules)_- [datetime](./src/strategies/datetime/datetime.md) — _(no submodules)_- [defs](./src/strategies/defs/defs.md) — _(no submodules)_- [defs](./src/strategies/defs/defs.md) — _(no submodules)_- [enum](./src/strategies/enum/enum.md) — _(no submodules)_- [enum](./src/strategies/enum/enum.md) — _(no submodules)_- [map](./src/strategies/map/map.md) — _(no submodules)_- [map](./src/strategies/map/map.md) — _(no submodules)_- [null](./src/strategies/null/null.md) — _(no submodules)_- [null](./src/strategies/null/null.md) — _(no submodules)_- [number](./src/strategies/number/number.md) — _(no submodules)_- [number](./src/strategies/number/number.md) — _(no submodules)_- [object](./src/strategies/object/object.md) — _(no submodules)_- [object](./src/strategies/object/object.md) — _(no submodules)_- [oneOf](./src/strategies/oneOf/oneOf.md) — _(no submodules)_- [oneOf](./src/strategies/oneOf/oneOf.md) — _(no submodules)_- [optional](./src/strategies/optional/optional.md) — _(no submodules)_- [optional](./src/strategies/optional/optional.md) — _(no submodules)_- [optional-marker](./src/strategies/optional-marker/optional-marker.md) — Packs/unpacks optional values using an explicit marker object. - [optional-marker](./src/strategies/optional-marker/optional-marker.md) — Packs/unpacks optional values using an explicit marker object. - [optional-suffix](./src/strategies/optional-suffix/optional-suffix.md) — Packs/unpacks optional primitive schemas using a `?` suffix. - [optional-suffix](./src/strategies/optional-suffix/optional-suffix.md) — Packs/unpacks optional primitive schemas using a `?` suffix. - [set](./src/strategies/set/set.md) — _(no submodules)_- [set](./src/strategies/set/set.md) — _(no submodules)_- [string](./src/strategies/string/string.md) — _(no submodules)_- [string](./src/strategies/string/string.md) — _(no submodules)_- [union](./src/strategies/union/union.md) — _(no submodules)_- [union](./src/strategies/union/union.md) — _(no submodules)_- [varint](./src/strategies/varint/varint.md) — _(no submodules)_- [varint](./src/strategies/varint/varint.md) — _(no submodules)_- [version](./src/strategies/version/version.md) — _(no submodules)_- [version](./src/strategies/version/version.md) — _(no submodules)_- [index](./src/index.md) — **Path:** `bitpacker-strategies/src/index.ts` **Export:** See source for details. - [register-default-strategies](./src/register-default-strategies.md) — **Path:** `bitpacker-strategies/src/register-default-strategies.ts` **Export:** See source for details. - [register-default-strategies.schema](./src/register-default-strategies.schema.md) — Zod schema for the `manager` argument of `registerDefaultStrategies`. Validates that an external caller hands the funct… - [register-schemas](./src/register-schemas.md) — Idempotent integration with `@suaveplan/schema-registry` for the `@suaveplan/bitpacker-strategies` package. Exposes a s… - [instruments](./src/otel/instruments.md) — _(no submodules)_- [array](./src/strategies/array/array.md) — _(no submodules)_ - [array](./src/strategies/array/array.md) — _(no submodules)_- [array-config](./src/strategies/array-config/array-config.md) — Packs/unpacks arrays described by an explicit configuration object. - [array-config](./src/strategies/array-config/array-config.md) — Packs/unpacks arrays described by an explicit configuration object. - [array-notation](./src/strategies/array-notation/array-notation.md) — Packs/unpacks arrays described by a string notation. - [array-notation](./src/strategies/array-notation/array-notation.md) — Packs/unpacks arrays described by a string notation. - [array-schema](./src/strategies/array-schema/array-schema.md) — Packs/unpacks fixed-length tuple schemas. - [array-schema](./src/strategies/array-schema/array-schema.md) — Packs/unpacks fixed-length tuple schemas. - [bigint](./src/strategies/bigint/bigint.md) — _(no submodules)_ - [bigint](./src/strategies/bigint/bigint.md) — _(no submodules)_- [bigint-array](./src/strategies/bigint-array/bigint-array.md) — Packs/unpacks arrays of 64-bit BigInt values. - [bigint-array](./src/strategies/bigint-array/bigint-array.md) — Packs/unpacks arrays of 64-bit BigInt values. - [bitarray](./src/strategies/bitarray/bitarray.md) — _(no submodules)_ - [bitarray](./src/strategies/bitarray/bitarray.md) — _(no submodules)_- [bitset](./src/strategies/bitset/bitset.md) — _(no submodules)_ - [bitset](./src/strategies/bitset/bitset.md) — _(no submodules)_- [blob](./src/strategies/blob/blob.md) — _(no submodules)_ - [blob](./src/strategies/blob/blob.md) — _(no submodules)_- [boolean](./src/strategies/boolean/boolean.md) — _(no submodules)_ - [boolean](./src/strategies/boolean/boolean.md) — _(no submodules)_- [conditional](./src/strategies/conditional/conditional.md) — _(no submodules)_ - [conditional](./src/strategies/conditional/conditional.md) — _(no submodules)_- [customType](./src/strategies/customType/customType.md) — _(no submodules)_ - [customType](./src/strategies/customType/customType.md) — _(no submodules)_- [datetime](./src/strategies/datetime/datetime.md) — _(no submodules)_ - [datetime](./src/strategies/datetime/datetime.md) — _(no submodules)_- [defs](./src/strategies/defs/defs.md) — _(no submodules)_ - [defs](./src/strategies/defs/defs.md) — _(no submodules)_- [enum](./src/strategies/enum/enum.md) — _(no submodules)_ - [enum](./src/strategies/enum/enum.md) — _(no submodules)_- [map](./src/strategies/map/map.md) — _(no submodules)_ - [map](./src/strategies/map/map.md) — _(no submodules)_- [null](./src/strategies/null/null.md) — _(no submodules)_ - [null](./src/strategies/null/null.md) — _(no submodules)_- [number](./src/strategies/number/number.md) — _(no submodules)_ - [number](./src/strategies/number/number.md) — _(no submodules)_- [object](./src/strategies/object/object.md) — _(no submodules)_ - [object](./src/strategies/object/object.md) — _(no submodules)_- [oneOf](./src/strategies/oneOf/oneOf.md) — _(no submodules)_ - [oneOf](./src/strategies/oneOf/oneOf.md) — _(no submodules)_- [optional](./src/strategies/optional/optional.md) — _(no submodules)_ - [optional](./src/strategies/optional/optional.md) — _(no submodules)_- [optional-marker](./src/strategies/optional-marker/optional-marker.md) — Packs/unpacks optional values using an explicit marker object. - [optional-marker](./src/strategies/optional-marker/optional-marker.md) — Packs/unpacks optional values using an explicit marker object. - [optional-suffix](./src/strategies/optional-suffix/optional-suffix.md) — Packs/unpacks optional primitive schemas using a `?` suffix. - [optional-suffix](./src/strategies/optional-suffix/optional-suffix.md) — Packs/unpacks optional primitive schemas using a `?` suffix. - [set](./src/strategies/set/set.md) — _(no submodules)_ - [set](./src/strategies/set/set.md) — _(no submodules)_- [string](./src/strategies/string/string.md) — _(no submodules)_ - [string](./src/strategies/string/string.md) — _(no submodules)_- [union](./src/strategies/union/union.md) — _(no submodules)_ - [union](./src/strategies/union/union.md) — _(no submodules)_- [varint](./src/strategies/varint/varint.md) — _(no submodules)_ - [varint](./src/strategies/varint/varint.md) — _(no submodules)_- [version](./src/strategies/version/version.md) — _(no submodules)_ - [version](./src/strategies/version/version.md) — _(no submodules)_- [index](./src/index.md) — **Path:** `bitpacker-strategies/src/index.ts` **Export:** See source for details. - [register-default-strategies](./src/register-default-strategies.md) — **Path:** `bitpacker-strategies/src/register-default-strategies.ts` **Export:** See source for details. - [register-default-strategies.schema](./src/register-default-strategies.schema.md) — Zod schema for the `manager` argument of `registerDefaultStrategies`. Validates that an external caller hands the funct… - [register-schemas](./src/register-schemas.md) — Idempotent integration with `@suaveplan/schema-registry` for the `@suaveplan/bitpacker-strategies` package. Exposes a s… ## Install ```bash bun add @suaveplan/bitpacker-strategies ``` ## Usage ```typescript import { BitPacker } from "@suaveplan/bitpacker"; import { registerDefaultStrategies } from "@suaveplan/bitpacker-strategies"; const bp = new BitPacker(); registerDefaultStrategies(bp.strategyManager); // Pack a number (unsigned 8-bit) const packed = bp.pack(42, 255); const unpacked = bp.unpack(packed, 255); ``` ## Strategies | Strategy | Schema | Example | |----------|--------|---------| | `NumberPackingStrategy` | `number` | `255` (uint8), `-127` (signed), `4.2` (fixed-point) | | `StringPackingStrategy` | `string` | `"8"` (fixed 8 chars), `"-16"` (variable length) | | `BooleanPackingStrategy` | `boolean` | `true` / `false` | | `NullPackingStrategy` | `null` | `null` | | `BigIntPackingStrategy` | `bigint` | `"bigint-i64"`, `"bigint-u64"` | | `ObjectPackingStrategy` | `object` | `{ x: 255, y: "-16" }` | | `ArrayPackingStrategy` | `array` | `[255]` | | `EnumPackingStrategy` | `enum` | `"enum:a\|b\|c"` | | `OptionalPackingStrategy` | `optional` | `"8?"` | | `OneOfPackingStrategy` | `oneOf` | `{ _bp: "oneOf", schemas: [...] }` | | `VarIntPackingStrategy` | `varint` | `"varint"`, `"varint-signed"` | | `DateTimePackingStrategy` | `datetime` | `"timestamp"`, `"timespan-ms"` | | `MapPackingStrategy` | `map` | `"map"` | | `SetPackingStrategy` | `set` | `"set"` | | `BitArrayPackingStrategy` | `bitarray` | `{ _bp: "bitarray", length: 8 }` | | `BlobPackingStrategy` | `blob` | `{ _bp: "blob", maxLength: 1024 }` | | `BitsetPackingStrategy` | `bitset` | `"bitset-8"` | | `ConditionalPackingStrategy` | `conditional` | `{ _bp: "conditional", condition, then, else }` | | `VersionPackingStrategy` | `version` | `{ _bp: "version", versions: [...] }` | | `DefsPackingStrategy` | `defs` | `{ _bp: "defs", definitions: {...} }` | | `CustomTypePackingStrategy` | `custom` | `{ _bp: { schema: ... } }` | ## Custom Strategy ```typescript class MyStrategy implements PackingStrategy { canHandle(schema: BitPackerSchema): boolean { return schema === "my-type"; } pack(data: unknown, schema: BitPackerSchema, context: PackingContext): void { // write to context.writer } unpack(schema: BitPackerSchema, context: PackingContext): unknown { // read from context.reader } } bp.strategyManager.register(new MyStrategy()); ```