Skip to content

Machine

26 exports Added in v1.0.0 Source

Combinators

retry

Added in v1.0.0 Source

Signature

declare const retry: {
<M extends Any, Out, In extends any, R>(
policy: Schedule<Out, In, R>,
): (self: M) => AddContext<M, R>;
<M extends Any, Out, In extends any, R>(self: M, policy: Schedule<Out, In, R>): AddContext<M, R>;
};

Constructors

make

Added in v1.0.0 Source

Signature

declare const make: {
<State, Public extends Any, Private extends Any, InitErr, R>(
initialize: Effect<ProcedureList<State, Public, Private, R>, InitErr, R>,
): Machine<State, Public, Private, void, InitErr, Exclude<R, Scope | MachineContext>>;
<State, Public extends Any, Private extends Any, Input, InitErr, R>(
initialize: Initialize<Input, State, Public, Private, R, InitErr, R>,
): Machine<State, Public, Private, Input, InitErr, Exclude<R, Scope | MachineContext>>;
};

Signature

declare const makeSerializable: {
<State, IS, RS, Public extends All, Private extends All, InitErr, R>(
options: {
readonly input?: undefined;
readonly state: Schema.Schema<State, IS, RS>;
},
initialize:
| Effect<SerializableProcedureList<State, Public, Private, R>, InitErr, R>
| InitializeSerializable<void, State, Public, Private, R, InitErr, R>,
): SerializableMachine<
State,
Public,
Private,
void,
InitErr,
Exclude<R, Scope | MachineContext>,
RS
>;
<State, IS, RS, Input, II, RI, Public extends All, Private extends All, InitErr, R>(
options: {
readonly input: Schema.Schema<Input, II, RI>;
readonly state: Schema.Schema<State, IS, RS>;
},
initialize: InitializeSerializable<Input, State, Public, Private, R, InitErr, R>,
): SerializableMachine<
State,
Public,
Private,
Input,
InitErr,
Exclude<R, Scope | MachineContext>,
RS | RI
>;
};

makeWith

Added in v1.0.0 Source

Signature

declare function makeWith<State, Input = void>(): {
<Public extends Any, Private extends Any, InitErr, R>(
initialize: Effect<ProcedureList<State, Public, Private, R>, InitErr, R>,
): Machine<State, Public, Private, void, InitErr, Exclude<R, Scope | MachineContext>>;
<Public extends Any, Private extends Any, InitErr, R>(
initialize: Initialize<Input, State, Public, Private, R, InitErr, R>,
): Machine<State, Public, Private, Input, InitErr, Exclude<R, Scope | MachineContext>>;
};

Errors

Signature

declare class MachineDefect extends any {
constructor();
static wrap<A, E, R>(effect: Effect<A, E, R>): Effect<A, MachineDefect, R>;
}

Models

Actor interface

Added in v1.0.0 Source

Signature

interface Actor<M extends Machine.Any> extends unknown<Machine.State<M>> {
readonly [ActorTypeId]: typeof ActorTypeId;
readonly input: Input<M>;
readonly join: Effect<never, MachineDefect | InitError<M>>;
readonly machine: M;
readonly send: <Req extends any>(request: Req) => Effect<Success<Req>, Error<Req>>;
}

Machine

Added in v1.0.0 Source

Machine interface

Added in v1.0.0 Source

Signature

interface Machine<
State,
Public extends Procedure.TaggedRequest.Any,
Private extends Procedure.TaggedRequest.Any,
Input,
InitErr,
R,
> extends Pipeable {
readonly [TypeId]: typeof TypeId;
readonly initialize: Initialize<Input, State, Public, Private, R, InitErr, R>;
readonly retryPolicy: Schedule<unknown, InitErr | MachineDefect, R, never> | undefined;
}

SerializableActor interface

Added in v1.0.0 Source

Signature

interface SerializableActor<M extends Machine.Any> extends Actor<M> {
readonly sendUnknown: (
request: unknown,
) => Effect<ExitEncoded<unknown, unknown, unknown>, ParseError>;
}

SerializableMachine interface

Added in v1.0.0 Source

Signature

interface SerializableMachine<
State,
Public extends Schema.TaggedRequest.All,
Private extends Schema.TaggedRequest.All,
Input,
InitErr,
R,
SR,
> extends Machine<State, Public, Private, Input, InitErr, R> {
readonly [SerializableTypeId]: typeof SerializableTypeId;
readonly schemaInput: any;
readonly schemaState: any;
}

Procedures

procedures

Added in v1.0.0 Source

serializable

Added in v1.0.0 Source

Runtime

boot

Added in v1.0.0 Source

Signature

declare function boot<M extends Any>(
self: M,
...__namedParameters: [Input<M>] extends [void]
? [
input?: Input,
options?: {
readonly previousState?: State<M>;
},
]
: [
input: Input<M>,
options?: {
readonly previousState?: State<M>;
},
]
): Effect<
M extends {
readonly [SerializableTypeId]: typeof SerializableTypeId;
}
? SerializableActor<M>
: Actor<M>,
never,
Scope | Context<M>
>;

restore

Added in v1.0.0 Source

Signature

declare function restore<State, Public extends All, Private extends All, Input, InitErr, R, SR>(
self: SerializableMachine<State, Public, Private, Input, InitErr, R, SR>,
snapshot: readonly [unknown, unknown],
): Effect<
Actor<SerializableMachine<State, Public, Private, Input, InitErr, R, SR>>,
ParseError,
R | SR
>;

snapshot

Added in v1.0.0 Source

Signature

declare function snapshot<State, Public extends All, Private extends All, Input, InitErr, R, SR>(
self: Actor<SerializableMachine<State, Public, Private, Input, InitErr, R, SR>>,
): Effect<[input: unknown, state: unknown], ParseError, SR>;

Symbols

NoReply

Added in v1.0.0 Source

Signature

declare const NoReply: typeof NoReply;

NoReply type

Added in v1.0.0 Source

Signature

type NoReply = typeof NoReply;

Tags

Signature

declare class MachineContext extends any {
constructor();
}

Tracing

Signature

declare const currentTracingEnabled: FiberRef.FiberRef<boolean>;

Signature

declare const withTracingEnabled: {
(enabled: boolean): <A, E, R>(effect: Effect<A, E, R>) => Effect<A, E, R>;
<A, E, R>(effect: Effect<A, E, R>, enabled: boolean): Effect<A, E, R>;
};

Type Ids

ActorTypeId

Added in v1.0.0 Source

Signature

declare const ActorTypeId: unique symbol;

ActorTypeId type

Added in v1.0.0 Source

Signature

type ActorTypeId = typeof ActorTypeId;

Signature

declare const SerializableTypeId: unique symbol;

SerializableTypeId type

Added in v1.0.0 Source

Signature

type SerializableTypeId = typeof SerializableTypeId;

TypeId

Added in v1.0.0 Source

Signature

declare const TypeId: unique symbol;

TypeId type

Added in v1.0.0 Source

Signature

type TypeId = typeof TypeId;