Offload functions to worker threads with shared memory primitives for Node.js.
Something went wrong. Try again.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647import type { Loadable } from './loadable.ts';
const SHARED = Symbol.for('moroutine.shared');
/** A fixed-size shared byte buffer backed by SharedArrayBuffer. */export class Bytes implements Loadable<Readonly<Uint8Array>> { readonly size: number; readonly view: Uint8Array;
static byteAlignment = 1;
constructor(size: number, buffer?: SharedArrayBuffer, byteOffset?: number) { this.size = size; const buf = buffer ?? new SharedArrayBuffer(size); const offset = byteOffset ?? 0; this.view = new Uint8Array(buf, offset, size); }
/** * Returns a readonly view of the buffer. No copy — mutations via `view` are visible. * @returns A readonly typed array view into the shared buffer. */ load(): Readonly<Uint8Array> { return this.view as Readonly<Uint8Array>; }
/** * Writes data into the buffer. Must be exact length. * @param value - A Uint8Array whose length must equal the buffer's size. */ store(value: Uint8Array): void { if (value.length !== this.size) { throw new RangeError(`Expected Uint8Array of length ${this.size}, got ${value.length}`); } this.view.set(value); }
[SHARED](): { tag: string; buffer: SharedArrayBuffer; byteOffset: number; size: number } { return { tag: 'Bytes', buffer: this.view.buffer as SharedArrayBuffer, byteOffset: this.view.byteOffset, size: this.size, }; }}