Skip to main content

SliceBuilder

@rotorsoft/act-root


@rotorsoft/act-root / act/src / SliceBuilder

Type Alias: SliceBuilder<TSchemaReg, TEvents, TActions, TStateMap, TActor>

SliceBuilder<TSchemaReg, TEvents, TActions, TStateMap, TActor> = object

Defined in: libs/act/src/slice-builder.ts:69

Fluent builder interface for composing functional slices.

Provides a chainable API for registering states and projections, and defining reactions scoped to the slice's own events.

Type Parameters

TSchemaReg

TSchemaReg extends SchemaRegister<TActions>

Schema register for states

TEvents

TEvents extends Schemas

Event schemas

TActions

TActions extends Schemas

Action schemas

TStateMap

TStateMap extends Record<string, Schema> = { }

Map of state names to state schemas

TActor

TActor extends Actor = Actor

Actor type extending base Actor

Properties

build()

build: () => Slice<TSchemaReg, TEvents, TActions, TStateMap, TActor>

Defined in: libs/act/src/slice-builder.ts:138

Builds and returns the Slice data structure.

Returns

Slice<TSchemaReg, TEvents, TActions, TStateMap, TActor>


events

readonly events: EventRegister<TEvents>

Defined in: libs/act/src/slice-builder.ts:142

The registered event schemas and their reaction maps.


on()

on: <TKey>(event) => object

Defined in: libs/act/src/slice-builder.ts:112

Begins defining a reaction scoped to this slice's events.

Type Parameters

TKey

TKey extends keyof TEvents

Parameters

event

TKey

Returns

object

do()

do: (handler, options?) => SliceBuilder<TSchemaReg, TEvents, TActions, TStateMap, TActor> & object

Parameters
handler

(event, stream, app) => Promise<Snapshot<Schema, TEvents> | void>

options?

Partial<ReactionOptions>

Returns

SliceBuilder<TSchemaReg, TEvents, TActions, TStateMap, TActor> & object


withProjection()

withProjection: <TNewEvents>(projection) => SliceBuilder<TSchemaReg, TEvents, TActions, TStateMap, TActor>

Defined in: libs/act/src/slice-builder.ts:104

Embeds a built Projection within this slice. The projection's events must be a subset of events from states already registered via .withState(). Projection handlers preserve their (event, stream) signature and do not receive a Dispatcher.

Type Parameters

TNewEvents

TNewEvents extends Schemas

Parameters

projection

[Exclude<keyof TNewEvents, keyof TEvents>] extends [never] ? Projection<TNewEvents> : never

Returns

SliceBuilder<TSchemaReg, TEvents, TActions, TStateMap, TActor>


withState()

withState: <TNewState, TNewEvents, TNewActions, TNewName>(state) => SliceBuilder<TSchemaReg & { [K in keyof TNewActions]: TNewState }, TEvents & TNewEvents, TActions & TNewActions, TStateMap & { [K in TNewName]: TNewState }, TActor>

Defined in: libs/act/src/slice-builder.ts:84

Registers a state definition with the slice.

Include every state whose actions your reaction handlers need to dispatch. Duplicate registrations (same state in multiple slices) are handled automatically at composition time.

Type Parameters

TNewState

TNewState extends Schema

TNewEvents

TNewEvents extends Schemas

TNewActions

TNewActions extends Schemas

TNewName

TNewName extends string = string

Parameters

state

State<TNewState, TNewEvents, TNewActions, TNewName>

Returns

SliceBuilder<TSchemaReg & { [K in keyof TNewActions]: TNewState }, TEvents & TNewEvents, TActions & TNewActions, TStateMap & { [K in TNewName]: TNewState }, TActor>