@miragon/event-storming-dsl
v0.2.1
Published
Convert between the Event Storming .storm text format and the Event Storming board model, with lossless round-trips.
Readme
@miragon/event-storming-dsl
DOM-free bridge between the Event Storming .storm text DSL and the EventStormingBoard
model — a lossless round-trip.
Install
npm install @miragon/event-storming-dslUsage
import { parseDSL, serializeDSL } from '@miragon/event-storming-dsl';
const board = parseDSL(`title Order Checkout
actor Customer [80, 300]
command Place Order [240, 300]
event Order Placed [620, 300]
Customer -> Place Order`);
const text = serializeDSL(board); // back to .storm text, losslesslyThe .storm format
One statement per line. Coordinates are [x, y] in board pixels (x first), optional
(default [0, 0]), unbounded — the canvas is free.
title Order Checkout // config; also: style classic|dark
event Order Placed [620, 300]
command Place Order [240, 300] (color #ff0000) // optional color override
actor Customer [80, 300]
aggregate Order [420, 290]
policy When order placed, ship it [800, 300]
readmodel Order Status [620, 120]
external Payment Provider [420, 520]
hotspot Double payment on retry? [620, 520]
note Design-level session [80, 80]
line [[100,100],[200,150],[180,240]] (dashed) // freeform drawing
// arrows: name-referenced, optional label after ;
Customer -> Place Order
Order Placed -> When order placed, ship it; asyncUnknown lines and comments are kept losslessly in rawPassthrough;
parseDSLWithDiagnostics reports uninterpretable lines with 1-based line numbers instead of
throwing.
Part of the Event Storming Modeler monorepo.
License
MIT
