Skip to content

Releases: statelyai/xstate

[email protected]

16 Apr 14:31
9118720
Compare
Choose a tag to compare

Minor Changes

  • #4806 f4e0ec48c Thanks @davidkpiano! - Inline actor logic is now permitted when named actors are present. Defining inline actors will no longer cause a TypeScript error:

    const machine = setup({
      actors: {
        existingActor: fromPromise(async () => {
          // ...
        })
      }
    }).createMachine({
      invoke: {
        src: fromPromise(async () => {
          // Inline actor
        })
        // ...
      }
    });

[email protected]

09 Apr 14:41
0ce95c2
Compare
Choose a tag to compare

Minor Changes

  • #4822 f7f1fbbf3 Thanks @davidkpiano! - The clock and logger specified in the options object of createActor(logic, options) will now propagate to all actors created within the same actor system.

    import { setup, log, createActor } from 'xstate';
    
    const childMachine = setup({
      // ...
    }).createMachine({
      // ...
      // Uses custom logger from root actor
      entry: log('something')
    });
    
    const parentMachine = setup({
      // ...
    }).createMachine({
      // ...
      invoke: {
        src: childMachine
      }
    });
    
    const actor = createActor(parentMachine, {
      logger: (...args) => {
        // custom logger for args
      }
    });
    
    actor.start();

@xstate/[email protected]

09 Apr 20:28
424ce97
Compare
Choose a tag to compare

Patch Changes

@xstate/[email protected]

07 Apr 13:21
158eca6
Compare
Choose a tag to compare

Patch Changes

  • #4752 8a32374e7 Thanks @davidkpiano! - Initial release of @xstate/store

    import { createStore } from '@xstate/store';
    
    const store = createStore(
      // initial context
      { count: 0, greeting: 'hello' },
      // transitions
      {
        inc: {
          count: (context) => context.count + 1
        },
        updateBoth: {
          count: () => 42,
          greeting: 'hi'
        }
      }
    );
    
    store.send({
      type: 'inc'
    });
    
    console.log(store.getSnapshot());
    // Logs:
    // {
    //   status: 'active',
    //   context: {
    //     count: 1,
    //     greeting: 'hello'
    //   }
    // }

[email protected]

02 Mar 22:55
839162d
Compare
Choose a tag to compare

Patch Changes

[email protected]

01 Mar 19:26
0d4663d
Compare
Choose a tag to compare

Minor Changes

  • #4746 b570ba20d Thanks @davidkpiano! - The new emit(…) action creator emits events that can be received by listeners. Actors are now event emitters.

    import { emit } from 'xstate';
    
    const machine = createMachine({
      // ...
      on: {
        something: {
          actions: emit({
            type: 'emitted',
            some: 'data'
          })
        }
      }
      // ...
    });
    
    const actor = createActor(machine).start();
    
    actor.on('emitted', (event) => {
      console.log(event);
    });
    
    actor.send({ type: 'something' });
    // logs:
    // {
    //   type: 'emitted',
    //   some: 'data'
    // }
  • #4777 4abeed9df Thanks @Andarist! - Added support for params to enqueueActions

[email protected]

28 Feb 13:08
e6efe65
Compare
Choose a tag to compare

Patch Changes

  • #4772 9a0120901 Thanks @Andarist! - Fixed a type issue that prevent sendParent to be accepted by setup when delays stayed not configured.

[email protected]

27 Feb 17:44
bab20d7
Compare
Choose a tag to compare

Patch Changes

  • #4768 4a29f8aab Thanks @Andarist! - Correctly use falsy outputs (instead of accidentally converting them to undefined).

@xstate/[email protected]

23 Feb 15:40
3d00ea5
Compare
Choose a tag to compare

Patch Changes

[email protected]

21 Feb 14:05
39702e6
Compare
Choose a tag to compare

Minor Changes

  • #4750 a9e3c086f Thanks @Andarist! - Revamped setup and actions types to disallow usage of non-configured implementations