new StateDiagram({
title: 'Instance lifecycle',
states: [
{ name: 'new', initial: true }, { name: 'validated' }, { name: 'persisted' },
{ name: 'soft-deleted' }, { name: 'gone', final: true },
],
transitions: [
{ from: 'new', to: 'validated', event: 'validate()' },
{ from: 'validated', to: 'persisted', event: 'save()' },
{ from: 'persisted', to: 'persisted', event: 'update()' },
{ from: 'persisted', to: 'soft-deleted', event: 'destroy()' },
{ from: 'soft-deleted', to: 'persisted', event: 'restore()' },
{ from: 'soft-deleted', to: 'gone', event: 'destroy({ force: true })' },
],
}).generate()