UNPKG

workflow

Version:

Workflow SDK - Build durable, resilient, and observable workflows

70 lines (50 loc) • 2 kB
--- title: WORKFLOW_DESERIALIZE --- A symbol used to define custom deserialization for user-defined class instances. The static method should accept serialized data and return a new class instance. ## Usage ```typescript lineNumbers 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 {/* @skip-typecheck: type-only signature snippet, not compilable code */} ```typescript static [WORKFLOW_DESERIALIZE](data: SerializableData): T ``` ### Parameters <TSDoc definition={` interface Parameters { /** * The serialized data to reconstruct into a class instance. * This is the same data that was returned by WORKFLOW_SERIALIZE. */ data: SerializableData; } export default Parameters;`} /> ### Returns The method should return a new instance of the class, reconstructed from the serialized data. ## Requirements <Callout type="warn"> The method must be implemented as a **static** method on the class. Instance methods are not supported. </Callout> - Both `WORKFLOW_SERIALIZE` and `WORKFLOW_DESERIALIZE` must be implemented together - The method receives the exact data that was returned by `WORKFLOW_SERIALIZE` - If `WORKFLOW_SERIALIZE` returns complex types (like `Map` or `Date`), they will be properly deserialized before being passed to this method <Callout type="warn"> 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()` or `Date.now()`) - No external network calls Keep this method simple and focused on reconstructing the instance from the provided data. </Callout>