@dstanesc/o-o-o-o-o-o-o
Version:
O-O-O-O-O-O-O is a collection of content addressed persistent data structures
36 lines (33 loc) • 858 B
text/typescript
interface Chunker {
chunk: (buffer: Uint8Array) => Uint32Array
}
const chunkerFactory = (
targetSize: number,
compute_chunks_provider: (
source: Uint8Array,
min_size: number,
avg_size: number,
max_size: number
) => Uint32Array
): Chunker => {
const sizeRange = (
avg: number
): { minSize: number; avgSize: number; maxSize: number } => {
return {
minSize: Math.floor(avg / 2),
avgSize: avg,
maxSize: avg * 2,
}
}
const chunk = (buffer: Uint8Array): Uint32Array => {
const { minSize, avgSize, maxSize } = sizeRange(targetSize)
return compute_chunks_provider(
buffer,
minSize,
avgSize,
maxSize
).subarray(1)
}
return { chunk }
}
export { chunkerFactory }