Transferable
Marks encoded worker message fields that should move through postMessage as transfer-list entries.
Worker messages still pass through schema encoding and structured clone, but schemas wrapped with schema can also report backing resources such as ArrayBuffer, ImageData.data.buffer, or MessagePort to a Collector. Worker platforms then pass the collected values as the transfer list for the same postMessage call, avoiding copies for large payloads and ports.
Accessors
Constructors
makeCollector
Effect that creates a fresh Collector service for accumulating transferables.
Signature
declare const makeCollector: Effect.Effect<Collector["Service"]>;makeCollectorUnsafe
Creates a mutable Collector service directly, exposing unsafe synchronous methods for reading, adding, and clearing collected transferables.
Signature
declare function makeCollectorUnsafe(): { readonly addAll: (_: Iterable<Transferable>) => Effect<void>; readonly addAllUnsafe: (_: Iterable<Transferable>) => void; readonly clear: Effect<Array<Transferable>>; readonly clearUnsafe: () => Array<Transferable>; readonly read: Effect<Array<Transferable>>; readonly readUnsafe: () => Array<Transferable>;};Getters
getterAddAll
Creates a schema getter that records transferables derived from a value in the current Collector while passing the value through unchanged.
Signature
declare function getterAddAll<A>(f: (_: A) => Iterable<Transferable>): Getter<A, A>;Schemas
Schema for transferring ImageData values with their pixel data buffer.
Signature
declare const ImageData: Transferable<Schema.declare<ImageData>>;MessagePort
Schema for transferring MessagePort values as transferable objects.
Signature
declare const MessagePort: Transferable<Schema.declare<MessagePort>>;Wraps a schema so encoding records transferables selected from the encoded value, enabling worker messages to populate a postMessage transfer list.
Signature
declare const schema: { <S extends Top>(f: (_: S["Encoded"]) => Iterable<Transferable>): (self: S) => Transferable<S>; <S extends Top>(self: S, f: (_: S["Encoded"]) => Iterable<Transferable>): Transferable<S>;};Transferable interface
Schema wrapper whose encode path can record transferables with a Collector while preserving the wrapped schema's decoded type.
Signature
interface Transferable<S extends Schema.Top> extends decodeTo< Schema.toType<S["Rebuild"]>, S["Rebuild"]> { constructor(_: never);}Uint8Array
Schema for transferring Uint8Array values with their backing buffer.
Signature
declare const Uint8Array: Transferable<Schema.instanceOf<globalThis.Uint8Array<ArrayBuffer>>>;Services
Service for collecting Transferable objects while encoding worker messages so they can be passed to postMessage transfer lists.
Signature
declare class Collector extends Shape< "effect/workers/Transferable/Collector", { readonly addAll: (_: Iterable<Transferable>) => Effect<void>; readonly addAllUnsafe: (_: Iterable<Transferable>) => void; readonly clear: Effect<Array<Transferable>>; readonly clearUnsafe: () => Array<Transferable>; readonly read: Effect<Array<Transferable>>; readonly readUnsafe: () => Array<Transferable>; }, this> { constructor(_: never);}
Adds transferables to the current
Collectorwhen one is present in the context, and does nothing otherwise.