WORKFLOW_SERIALIZE
A symbol used to define custom serialization for user-defined class instances. The static method should accept an instance and return serializable data.
Usage
import { WORKFLOW_SERIALIZE, WORKFLOW_DESERIALIZE } from "@workflow/serde";
class Point {
constructor(public x: number, public y: number) {}
static [WORKFLOW_SERIALIZE](instance: Point) {
return { x: instance.x, y: instance.y };
}
static [WORKFLOW_DESERIALIZE](data: { x: number; y: number }) {
return new Point(data.x, data.y);
}
}API Signature
static [WORKFLOW_SERIALIZE](instance: T): SerializableDataParameters
| Name | Type | Description |
|---|---|---|
instance | T | The class instance to serialize. |
Returns
The method should return serializable data. This can be:
- Primitives (
string,number,boolean,null,undefined,bigint) - Plain objects with serializable values
- Arrays of serializable values
- Built-in serializable types (
Date,Map,Set,RegExp,URL, etc.) - Other custom classes that implement serialization
Requirements
The method must be implemented as a static method on the class. Instance methods are not supported.
- Both
WORKFLOW_SERIALIZEandWORKFLOW_DESERIALIZEmust be implemented together - The returned data must itself be serializable
- The SWC compiler plugin automatically detects and registers classes that implement these symbols
This method runs inside the workflow context and is subject to the same constraints as "use workflow" functions:
- No Node.js-specific APIs (like
fs,path,crypto, etc.) - No non-deterministic operations (like
Math.random()orDate.now()) - No external network calls
Keep this method simple and focused on extracting data from the instance.