Something went wrong. Try again.
Offload functions to worker threads with shared memory primitives for Node.js.
Something went wrong. Try again.
1234567891011121314151617181920212223242526272829interface Slabbable<T> { readonly byteSize: number; readonly byteAlignment: number; new (buffer: SharedArrayBuffer, byteOffset: number): T;}
type SlabInstances<T extends Slabbable<any>[]> = { [K in keyof T]: T[K] extends Slabbable<infer I> ? I : never;};
function align(offset: number, alignment: number): number { const remainder = offset % alignment; return remainder === 0 ? offset : offset + (alignment - remainder);}
export function slab<T extends Slabbable<any>[]>(...classes: T): SlabInstances<T> { const offsets: number[] = []; let cursor = 0; for (const cls of classes) { cursor = align(cursor, cls.byteAlignment); offsets.push(cursor); cursor += cls.byteSize; }
const buffer = new SharedArrayBuffer(cursor); const instances = classes.map((cls, i) => new cls(buffer, offsets[i])); return instances as SlabInstances<T>;}