Skip to content

Instantly share code, notes, and snippets.

@stefanovualto
Last active September 25, 2020 09:22
Show Gist options
  • Select an option

  • Save stefanovualto/7fba1540fa763ac6581a18c3f6b63fdb to your computer and use it in GitHub Desktop.

Select an option

Save stefanovualto/7fba1540fa763ac6581a18c3f6b63fdb to your computer and use it in GitHub Desktop.
Generated by XState Viz: https://xstate.js.org/viz
const EventMachine = Machine({
id: "eventState",
initial: "INITIAL",
states: {
INITIAL: {
on: {
CreateLive: "PRE_LIVE",
CreateVOD: "PRE_VOD",
CreateRemix: "REMIX_GENERATING",
CreateArchiver: "ARCHIVER_PUBLIC",
},
},
PRE_LIVE: {
on: {
Start: "LIVE_UNPUBLISHED"
},
},
LIVE_UNPUBLISHED: {
on: {
Publish: "LIVE_PUBLISHED",
Stop: "STOPPED",
Suspend: "SUSPENDED"
},
},
LIVE_PUBLISHED: {
on: {
Unpublish: "LIVE_UNPUBLISHED",
Stop: "STOPPED",
Suspend: "SUSPENDED"
},
},
SUSPENDED: {
on: {
Publish: "LIVE_PUBLISHED",
Unpublish: "LIVE_UNPUBLISHED",
},
},
STOPPED: {
on: {
SystemHasLive2Vod: "INSTANT_VOD",
SystemLiveOnly: "PRE_LIVE"
},
},
PRE_VOD: {
on: {
IngestContent: "VOD_INGESTING"
},
},
INSTANT_VOD: {
on: {
Backup: "INSTANT_VOD_BACKUP",
Delete: "INSTANT_VOD_DELETE",
Reset: "PRE_LIVE",
},
},
INSTANT_VOD_BACKUP: {
on: {
Delete: "INSTANT_VOD_DELETE"
},
},
INSTANT_VOD_DELETE: {
type: "final"
},
VOD_INGESTING: {
on: {
SystemDefaultsToPrivate: "VOD_PRIVATE",
SystemDefaultsToPublic: "VOD_PUBLIC",
Error: "VOD_ERROR",
},
},
VOD_PRIVATE: {
on: {
MakePublic: "VOD_PUBLIC",
ReingestContent: "VOD_INGESTING"
},
},
VOD_PUBLIC: {
on: {
MakePrivate: "VOD_PRIVATE",
ReingestContent: "VOD_INGESTING",
},
},
VOD_ERROR: {
type: "final",
},
REMIX_GENERATING: {
on: {
SystemDefaultsToPrivate: "REMIX_PRIVATE",
SystemDefaultsToPublic: "REMIX_PUBLIC",
Error: "REMIX_ERROR",
},
},
REMIX_PRIVATE: {
on: {
MakePublic: "REMIX_PUBLIC",
ChangePlaylist: "REMIX_GENERATING"
},
},
REMIX_PUBLIC: {
on: {
UnPublish: "REMIX_PRIVATE",
ChangePlaylist: "REMIX_GENERATING"
},
},
REMIX_ERROR: {
on: {
ChangePlaylist: "REMIX_GENERATING"
}
},
ARCHIVER_PRIVATE: {
on: {
MakePublic: "ARCHIVER_PUBLIC",
},
},
ARCHIVER_PUBLIC: {
on: {
MakePrivate: "ARCHIVER_PRIVATE",
},
},
},
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment