# `$.console` — консоль разработчика и свои команды

Консоль DevTools (`§31`) — это оверлей с журналом и командной строкой. Игра
добавляет в неё СВОИ команды: они появляются в автодополнении и в `help`, а
выполняет их тот же разбор строки, что и встроенные.

```js
$.console.register('heal', () => { $('#hero').hp = 100; return 'ok'; }, 'вылечить героя');
$.console.run('heal');          // выполнить как будто из строки консоли
```

## Полный перечень имён

Проверено на живом движке (1.2.0) в фикстуре без зарегистрированных команд.

| Имя | Сигнатура | Проверено запуском |
|---|---|---|
| `$.console.register(name, fn, help)` | `→ $.console` | команда доступна в `$.console.list()`, `fn` зовётся с остатком строки как аргументами; `help` — строка подсказки |
| `$.console.unregister(name)` | `→ $.console` | `$.console.unregister('нет')` не падает и возвращает сам `$.console` (цепочка); после снятия имени в `list()` его нет |
| `$.console.list()` | `→ string[]` | отсортированные имена команд; без регистраций — `[]` |
| `$.console.help(name)` | `→ string \| null` | подсказка команды; для незарегистрированного имени — `null` (а не пустая строка) |
| `$.console.run(line)` | `→ результат команды` | разбирает строку как консоль (`'имя арг1 арг2'`), пишет строку в журнал консоли и возвращает то, что вернула команда |
| `$.console.toggle()` | `→ состояние оверлея` | первый вызов открывает консоль, второй закрывает; возвращает объект состояния (`{ overlay, draw, profiler }`) — тот же, что у `$.debug` |

Встроенные команды (`pause`, `resume`, `step`, `timescale`, `reload`, `dump`,
`errors`, `watches`, `goto-node`, `physics`) живут в DevTools и в этот реестр не
попадают: `$.console.list()` показывает только то, что зарегистрировала игра.
