(steps: readonly Step<any>[])
| 156 | * Create a traverser from a list of steps. |
| 157 | */ |
| 158 | export function createTraverser(steps: readonly Step<any>[]) { |
| 159 | if (steps.length === 0) { |
| 160 | throw new Error("At least one step is required."); |
| 161 | } |
| 162 | const head = new Traverser(steps[0]!); |
| 163 | let current = head; |
| 164 | for (let i = 1; i < steps.length; i++) { |
| 165 | const next = new Traverser(steps[i]!); |
| 166 | current.next = next; |
| 167 | next.previous = current; |
| 168 | current = next; |
| 169 | } |
| 170 | return head; |
| 171 | } |
| 172 | |
| 173 | type StepStringToken = |
| 174 | | { kind: "start" } |
no outgoing calls