Skip to main content

Class: WorkflowStreamClient

workflowStreamsClient.WorkflowStreamClient

Constructors​

constructor​

• new WorkflowStreamClient(handle, options?): WorkflowStreamClient

Parameters​

NameType
handleWorkflowHandle<Workflow>
options?WorkflowStreamClientOptions

Returns​

WorkflowStreamClient

Methods​

[asyncDispose]​

▸ [asyncDispose](): Promise<void>

Dispose pattern: stop the flusher and drain remaining items.

Use via await using client = WorkflowStreamClient.create(...) so the scope exit guarantees a final drain. For tests or call sites that cannot use await using, invoke this method directly: await client[Symbol.asyncDispose]().

Returns​

Promise<void>


flush​

▸ flush(): Promise<void>

Flush buffered (and pending) items and wait for server confirmation.

Returns once the items buffered at call time have been signaled to the workflow and acknowledged by the server. Returns immediately if there is nothing to send.

In addition to the declarative forceFlush=true on publish and to the automatic flush on [Symbol.asyncDispose], use this when the caller needs proof that prior publications reached the server at a moment that does not naturally correspond to a specific event.

Safe to call concurrently with publish() and with the background flusher: the in-flight serialization on flushOnce makes signal sends sequential. Items added concurrently after entry may piggyback on this flush or be deferred to a subsequent one.

Throws FlushTimeoutError if a pending batch cannot be sent within maxRetryDuration. Also surfaces any deferred timeout from a prior background flusher failure: without that, flush() could return success against an empty buffer while an earlier batch had already been dropped, hiding data loss.

Returns​

Promise<void>


getOffset​

▸ getOffset(): Promise<number>

Query the current global offset.

Returns​

Promise<number>


subscribe​

▸ subscribe(topics?, fromOffset?, options?): AsyncGenerator<WorkflowStreamItem<IPayload>, void, unknown>

Async generator that polls for new items.

Default — yields items with data: Payload (no decode). Use a payload converter such as defaultPayloadConverter.fromPayload<T>(item.data) to decode at the call site.

With resultType: true — each item is decoded via the client's configured payload converter and yielded as the generic T.

Automatically follows continue-as-new chains when created via WorkflowStreamClient.create.

Parameters​

NameTypeDescription
topics?string | string[]Topic filter. A single topic name, an array of topic names, or undefined. Undefined or an empty array means all topics.
fromOffset?number-
options?SubscribeOptions-

Returns​

AsyncGenerator<WorkflowStreamItem<IPayload>, void, unknown>

▸ subscribe<T>(topics, fromOffset, options): AsyncGenerator<WorkflowStreamItem<T>, void, unknown>

Type parameters​

Name
T

Parameters​

NameType
topicsundefined | string | string[]
fromOffsetnumber
optionsSubscribeOptions & { resultType: true }

Returns​

AsyncGenerator<WorkflowStreamItem<T>, void, unknown>


topic​

▸ topic<T>(name): TopicHandle<T>

Get a typed handle for publishing to and subscribing from name.

Repeated calls with the same name return the same handle instance. The type parameter T is purely a compile-time annotation — see the module note in TopicHandle for the difference from sdk-python's runtime type-uniformity check.

Type parameters​

NameType
Tunknown

Parameters​

NameType
namestring

Returns​

TopicHandle<T>


create​

▸ create(client, workflowId, options?): WorkflowStreamClient

Create a WorkflowStreamClient from an explicit Temporal client and workflow ID.

Use this when the caller has an explicit Client and workflowId in hand (starters, BFFs, other workflows' activities). For code running inside an activity that targets its own parent workflow, use WorkflowStreamClient.fromWithinActivity.

A client created through this method follows continue-as-new chains in subscribe() and uses the client's payload converter for per-item Payload construction.

Parameters​

NameType
clientClient
workflowIdstring
options?WorkflowStreamClientOptions

Returns​

WorkflowStreamClient


fromWithinActivity​

▸ fromWithinActivity(options?): WorkflowStreamClient

Create a WorkflowStreamClient targeting the current activity's parent workflow.

Must be called from within an activity. The Temporal client and parent workflow id are taken from the activity context.

Parameters​

NameType
options?WorkflowStreamClientOptions

Returns​

WorkflowStreamClient