statelyai / docs

Stately docs for Stately Studio and XState
https://stately.ai/docs
19 stars 64 forks source link

Docs: Docs do not list all possible machine options keys #280

Open MichalBryxi opened 2 years ago

MichalBryxi commented 2 years ago

Description

Looking at the docs of MachineOptions and it mentions only actions.

But from the Configuring services part of the guides

const userMachine = createMachine(
  {
      // ...
  },
  {
  services: {
    getUser: (context, event) => fetchUser(context.user.id)
  }
);

and Serialising guards

const searchMachine = createMachine(
  {
    // ...
  },
  {
    guards: {
      searchValid: (context, event) => {
        return context.canSearch && event.query && event.query.length > 0;
      }
    }
  }
);

it seems to me that the MachineOptions object can also have services and guards keys? So it should be mentioned in the guides.

Expected result

### Machine options

- `actions?` (object) - a lookup object for your string actions.
- `guards?` (object) - a lookup object for your string guards.
- `services?` (object) - a lookup object for your string services.

Actual result

Confusion? :)

Reproduction

N/A

Additional context

No response

Andarist commented 2 years ago

Looking at the docs of MachineOptions and it mentions only actions.

This is a documentation of @xstate/fsm - it's a much simpler package and it only supports "configurable" actions at the moment.

MichalBryxi commented 2 years ago

What would be a good place to look at all the possible keys for options object of createMachine(_, options) then?

Andarist commented 2 years ago

I've tried to find one... and I couldn't (I could have missed it, but still...). The docs are currently introducing each concept separately and I didn't find a good "common" API reference in the docs for this. It's definitely something that we should improve.

The allowed keys there are actions, delays, guards and services.

mattpocock commented 2 years ago

@MichalBryxi Our plan for our new, revamped docs is to have a central API reference for this.