Skip to main content

SliceBuilder

@rotorsoft/act-root


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

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

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

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

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

TLanesโ€‹

TLanes extends string = typeof DEFAULT_LANE

Propertiesโ€‹

buildโ€‹

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

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

Builds and returns the Slice data structure.

Returnsโ€‹

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


eventsโ€‹

readonly events: EventRegister<TEvents>

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

The registered event schemas and their reaction maps.


onโ€‹

on: <TKey>(event) => object

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

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, TLanes> & object

Parametersโ€‹
handlerโ€‹

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

options?โ€‹

Partial<ReactionOptions>

Returnsโ€‹

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


withLaneโ€‹

withLane: <TConfig>(config) => SliceBuilder<TSchemaReg, TEvents, TActions, TStateMap, TActor, TLanes | TConfig["name"]>

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

Declares a drain lane on this slice (ACT-1103). Merged into the parent Act's lane set by act().withSlice(slice).

Type Parametersโ€‹

TConfigโ€‹

TConfig extends LaneConfig

Parametersโ€‹

configโ€‹

TConfig

Returnsโ€‹

SliceBuilder<TSchemaReg, TEvents, TActions, TStateMap, TActor, TLanes | TConfig["name"]>


withProjectionโ€‹

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

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

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 the app interface.

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, TLanes>


withStateโ€‹

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

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

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, TLanes>