UNPKG

@xylabs/threads

Version:

Web workers & worker threads as simple as a function call

27 lines 1.73 kB
/** A serializer that can convert between a message format and an input type. */ export interface Serializer<Msg = JsonSerializable, Input = any> { deserialize(message: Msg): Input; serialize(input: Input): Msg; } /** A serializer implementation that receives a fallback (default) serializer for chaining. */ export interface SerializerImplementation<Msg = JsonSerializable, Input = any> { deserialize(message: Msg, defaultDeserialize: (msg: Msg) => Input): Input; serialize(input: Input, defaultSerialize: (inp: Input) => Msg): Msg; } /** * Extend a base serializer with an additional serializer implementation, creating a chain. * @param extend - The base serializer to extend. * @param implementation - The new serializer implementation that wraps the base. * @returns A new serializer combining both behaviors. */ export declare function extendSerializer<MessageType, InputType = any>(extend: Serializer<MessageType, InputType>, implementation: SerializerImplementation<MessageType, InputType>): Serializer<MessageType, InputType>; type JsonSerializablePrimitive = string | number | boolean | null; type JsonSerializableObject = { [key: string]: JsonSerializablePrimitive | JsonSerializablePrimitive[] | JsonSerializableObject | JsonSerializableObject[] | undefined; }; /** A JSON-compatible value that can be serialized for worker message passing. */ export type JsonSerializable = JsonSerializablePrimitive | JsonSerializablePrimitive[] | JsonSerializableObject | JsonSerializableObject[]; /** Default serializer that handles Error instances and passes other values through. */ export declare const DefaultSerializer: Serializer<JsonSerializable>; export {}; //# sourceMappingURL=serializers.d.ts.map