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;