Initial Commit

This commit is contained in:
2026-05-27 23:47:53 +01:00
parent fbc70f96e6
commit 9b28db724f
18103 changed files with 1600554 additions and 0 deletions

View File

@@ -0,0 +1,37 @@
import type {
BitPackerSchema,
PackingContext,
PackingStrategy,
} from "@suaveplan/bitpacker";
import { isOptionalSchema } from "@suaveplan/bitpacker";
export class OptionalPackingStrategy implements PackingStrategy {
canHandle(schema: BitPackerSchema): boolean {
return isOptionalSchema(schema);
}
pack(
data: unknown,
schema: BitPackerSchema,
context: PackingContext
): void {
const { _optional: inner } = schema as { _optional: BitPackerSchema };
const present = data !== undefined && data !== null;
context.writer.writeBool(present);
if (present) {
context.packValue(data, inner);
}
}
unpack(schema: BitPackerSchema, context: PackingContext): unknown {
const { _optional: inner } = schema as { _optional: BitPackerSchema };
const present = context.reader.readBool();
if (!present) {
return undefined;
}
return context.unpackValue(inner);
}
}