@vnejs/docs 0.2.50 → 0.2.51

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,13 @@
2
2
 
3
3
  Краткая история изменений движка (плагины, helpers, packages, CLI и прочий runtime) и внешнего API. Версии — релизы пакета `@vnejs/docs`.
4
4
 
5
+ ## 0.2.51
6
+
7
+ - `observer` / `module` — `Observer.emit(event, payload, params)` вместо rest-args; `Module.emit(event, payload?)` сам собирает `params = { module: this.name }`. API: `EmitParams`, `EmitPayload`.
8
+ - `core/scenario` — `NEXT` payload `void`; имя вызывающего модуля в `EmitParams` (через `Module.emit`). API: `ScenarioNextPayload` → `void`.
9
+ - `module.core` — снят `emitNext`; вместо него `emit(EVENTS.SCENARIO.NEXT)`. API: снято `ModuleCore.emitNext`.
10
+ - `text/text` — на `EMIT_NEXT` сценарий двигает `text.emit.next` через `onTextEmitNext` → `EVENTS.SCENARIO.NEXT`.
11
+
5
12
  ## 0.2.50
6
13
 
7
14
  - `observer` — `SubscriberOptions.priority` (default `0`); группы хендлеров собираются в `subscribe`, `emit` обходит их по возрастанию priority (внутри группы — параллельно); ответы со всех групп. API: `SubscriberOptions.priority`, `SubscriberGroup`.
package/architecture.md CHANGED
@@ -169,7 +169,7 @@ flowchart TD
169
169
  | Пакет | Назначение |
170
170
  | ------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------- |
171
171
  | **`@vnejs/module`** | **`Module`**: `VNE`, `on`/`emit`, `inject`, state, shared, media, lifecycle |
172
- | **`@vnejs/module.core`** | **`ModuleCore`** — типизированный доступ к **core-контрактам**; `emitLog`, `emitNext`, … |
172
+ | **`@vnejs/module.core`** | **`ModuleCore`** — типизированный доступ к **core-контрактам**; `emitLog`, `emitClone`, … |
173
173
  | **`@vnejs/module.replace`** | **`ModuleReplace`** — последовательная подмена значения поля payload через `REPLACE_KEY` и цепочку handlers |
174
174
  | **`@vnejs/module.replace.exec`** | **`ModuleReplaceExec`** — реестр exec-handlers по имени модуля (`EXEC_REG` / `EXEC_GET`) |
175
175
  | **`@vnejs/module.components`** | **`ModuleView`**, **`ModuleController`** — React-view, zustand, media, controls |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vnejs/docs",
3
- "version": "0.2.50",
3
+ "version": "0.2.51",
4
4
  "description": "VNEJS documentation for engine consumers and coding agents",
5
5
  "files": [
6
6
  "*.md",
@@ -45,14 +45,14 @@ Payloads и результаты хендлеров типизированы ч
45
45
 
46
46
  ## Модули
47
47
 
48
- | Модуль | Зона ответственности |
49
- | -------------------- | ------------------------------------------------------------------------------------------------------------------------ |
50
- | `scenario` | Главный цикл `NEXT`, exec строк, sync state. |
51
- | `scenario.autostart` | Дефолт `shared.shouldAutostartScenario` в `postinject`; в `start` — init label + `emitNext` при включённом флаге. |
52
- | `scenario.exec` | Dispatch `$module` / `%block`, registry handlers, `EXEC_DELAY`. |
53
- | `scenario.label` | `LABEL_GET`, preload меток; `MEMORY.REG` в `setup`; init label на `STATE.CLEAR`. Одна упавшая строка не валит всю метку. |
54
- | `scenario.line` | `MEMORY.REG` в `setup`; `LINE_LOAD` / `LINE_GET`, registry preload handlers. Executor `LINE_GET` всегда resolve. |
55
- | `scenario.lines` | `MEMORY.REG` в `setup`; fetch `label/<path>.json` с `HOST` (например `label/prologue/1.json`). |
48
+ | Модуль | Зона ответственности |
49
+ | -------------------- | ------------------------------------------------------------------------------------------------------------------------- |
50
+ | `scenario` | Главный цикл `NEXT`, exec строк, sync state. Handler `NEXT` читает `module` из `EmitParams` (`Module.emit`). |
51
+ | `scenario.autostart` | Дефолт `shared.shouldAutostartScenario` в `postinject`; в `start` — init label + `emit SCENARIO.NEXT` при включённом флаге. |
52
+ | `scenario.exec` | Dispatch `$module` / `%block`, registry handlers, `EXEC_DELAY`. |
53
+ | `scenario.label` | `LABEL_GET`, preload меток; `MEMORY.REG` в `setup`; init label на `STATE.CLEAR`. Одна упавшая строка не валит всю метку. |
54
+ | `scenario.line` | `MEMORY.REG` в `setup`; `LINE_LOAD` / `LINE_GET`, registry preload handlers. Executor `LINE_GET` всегда resolve. |
55
+ | `scenario.lines` | `MEMORY.REG` в `setup`; fetch `label/<path>.json` с `HOST` (например `label/prologue/1.json`). |
56
56
 
57
57
  ## Близкие плагины
58
58
 
@@ -18,7 +18,7 @@ Payloads и результаты хендлеров типизированы ч
18
18
  | `EXEC_ARG` | `vne:stack:exec_arg` | По токену строки вернуть значение аргумента из верхнего frame. Payload: `{ line? }`. |
19
19
  | `PROHIBIT_REPLACE` | `vne:stack:prohibit_replace` | Цепочка `ModuleReplace`: можно ли идти на `label`. Payload: `{ label?, isProhibited? }`. Старт `isProhibited: false`. Возврат — итоговое `isProhibited`. |
20
20
  | `PROHIBIT_REPLACE_REG` | `vne:stack:prohibit_replace_reg` | Зарегистрировать обработчик `PROHIBIT_REPLACE`. `{ handler, priority? }`. Не блокирующий хендлер: `return isProhibited`; запрет: `return isProhibited \|\| ownCheck`. |
21
- | `PROHIBITED` | `vne:stack:prohibited` | Переход запрещён. Payload: `{ label?, args?, event? }` — `event` это `JUMP` / `CALL` / `EMIT`, чтобы повторить переход. `$ stack jump/call` при запрете не делает `emitNext`. |
21
+ | `PROHIBITED` | `vne:stack:prohibited` | Переход запрещён. Payload: `{ label?, args?, event? }` — `event` это `JUMP` / `CALL` / `EMIT`, чтобы повторить переход. `$ stack jump/call` при запрете не делает `emit SCENARIO.NEXT`. |
22
22
 
23
23
  ## Константы
24
24
 
@@ -43,7 +43,7 @@ Payloads и результаты хендлеров типизированы ч
43
43
  | `stack.pop` | Pop frame. |
44
44
  | `stack.clear` | Clear state + next. |
45
45
  | `stack.args` | Резолв аргументов из строки сценария. |
46
- | `stack.exec` | Регистрация `$stack` handlers в scenario (jump/call/pop + preload). На `LINE_LOAD` jump/call — `PROHIBIT_REPLACE` до `LABEL_GET`. `onLineExec`: `emitNext` только если jump/call не вернули `false` (запрет); `pop` — как раньше. |
46
+ | `stack.exec` | Регистрация `$stack` handlers в scenario (jump/call/pop + preload). На `LINE_LOAD` jump/call — `PROHIBIT_REPLACE` до `LABEL_GET`. `onLineExec`: `emit SCENARIO.NEXT` только если jump/call не вернули `false` (запрет); `pop` — как раньше. |
47
47
  | `stack.replace` | Реестр обработчиков `PROHIBIT_REPLACE_REG`; наследник `@vnejs/module.replace`; `REPLACE_KEY` — `isProhibited`. |
48
48
  | `stack.logs` | Логирование операций стека, в т.ч. `PROHIBITED`; в `init` регистрирует хендлер `PROHIBIT_REPLACE` (пропускает флаг). |
49
49
 
@@ -54,7 +54,7 @@ Payloads и результаты хендлеров типизированы ч
54
54
  - [logs.md](./logs.md) — `LOGS`: `emitLog`, `CONST.LOGS.FILTER_FROM_RESULT_OPTIONS`
55
55
  - [media.md](./media.md) — `MEDIA`: `CONST.MEDIA.PRIORITIES` (preload при jump/call)
56
56
  - [memory.md](./memory.md) — `MEMORY`: `CLEAR` (при `EMIT`)
57
- - [scenario.md](./scenario.md) — `SCENARIO`: `LABEL_GET`, `LINE_EXEC_REG`, `LINE_LOAD_REG`; `emitNext` → `NEXT`
57
+ - [scenario.md](./scenario.md) — `SCENARIO`: `LABEL_GET`, `LINE_EXEC_REG`, `LINE_LOAD_REG`; `emit SCENARIO.NEXT`
58
58
  - [state.md](./state.md) — `STATE`: `SET`, `CLEAR` (sync стека; `CLEAR` из `stack.clear`)
59
59
  - [vendors.md](./vendors.md) — `VENDORS`: `CLONE` (`emitClone` для args)
60
60
 
@@ -41,7 +41,7 @@ Payloads и результаты хендлеров типизированы ч
41
41
 
42
42
  ### plugins/core/
43
43
 
44
- - [scenario.md](../core/scenario.md) — `SCENARIO`: emitNext, EVENTS.LINE_EXEC_REG
44
+ - [scenario.md](../core/scenario.md) — `SCENARIO`: EVENTS.NEXT, EVENTS.LINE_EXEC_REG
45
45
  - [state.md](../core/state.md) — `STATE`: EVENTS.SET, EVENTS.CLEAR
46
46
 
47
47
  ### Остальные
@@ -16,7 +16,7 @@ Payloads и результаты хендлеров типизированы ч
16
16
  | `SET` | `vne:checkers:set` | `{ cells, owner }` → `GRID.SET` + `TURNS.SET` (id / rows / columns из констант). |
17
17
  | `UNSET` | `vne:checkers:unset` | `GRID.UNSET` + `TURNS.UNSET` по `GRID_ID` / `TURN_ID`. |
18
18
  | `STATE_UPDATE` | `vne:checkers:state_update` | Патч game-стейта (без board). |
19
- | `FINISH` | `vne:checkers:finish` | Конец партии: `{ winner }` → delay → `sources.clear()` + `emitNext`. |
19
+ | `FINISH` | `vne:checkers:finish` | Конец партии: `{ winner }` → delay → `sources.clear()` + `emit SCENARIO.NEXT`. |
20
20
  | `MOVES_GET` | `vne:checkers:moves_get` | `emitOne`: `{ board, turn }` → `{ moves, hanging, safe }`. |
21
21
  | `MOVE_PLAY` | `vne:checkers:move_play` | `emitOne`: `{ move, controllerType? }` → `boolean`; успех → `MOVE_PLAYED` или при победе `FINISH`. |
22
22
  | `MOVE_PLAYED` | `vne:checkers:move_played` | После хода (из `MOVE_PLAY`); цикл AI — в `CHECKERS_AI`. |
@@ -31,7 +31,7 @@ Payloads и результаты хендлеров типизированы ч
31
31
  | `CONST.CHECKERS.TURN_ID` | `"checkers"` — id в `TURNS` |
32
32
  | `CONST.CHECKERS.GRID_ID` | `"checkers"` — id в `GRID` |
33
33
  | `shared.checkersInteractDisableSources` | `SourcesSet` — блок интерактива на ход AI |
34
- | `PARAMS.CHECKERS.FINISH_DELAY` | пауза перед `emitNext` на `FINISH` (мс, `300`) |
34
+ | `PARAMS.CHECKERS.FINISH_DELAY` | пауза перед `emit SCENARIO.NEXT` на `FINISH` (мс, `300`) |
35
35
  | `PARAMS.CHECKERS.ROWS` / `COLUMNS` | `8` — размер для `GRID.SET` (внутри `SET`) |
36
36
  | `PARAMS.CHECKERS.PRESETS` | пресеты доски: `COMMON`, `FLIPPED`, `RANDOM` (RANDOM каждый `SHOW` заново) |
37
37
 
@@ -43,7 +43,7 @@ Payloads и результаты хендлеров типизированы ч
43
43
  | `checkers.show` | SHOW → `SET` + START; HIDE → `UNSET` |
44
44
  | `checkers.set` | `SET` → `GRID`/`TURNS`; `UNSET` → `GRID`/`TURNS` UNSET |
45
45
  | `checkers.moves` / `checkers.move.play` | ходы; `move.play` → `SET` / `FINISH` |
46
- | `checkers.finish` | FINISH → delay + `emitNext` |
46
+ | `checkers.finish` | FINISH → delay + `emit SCENARIO.NEXT` |
47
47
 
48
48
  ## Сценарий
49
49
 
@@ -53,7 +53,7 @@ Payloads и результаты хендлеров типизированы ч
53
53
  ### plugins/core/
54
54
 
55
55
  - [logs.md](../core/logs.md) — `LOGS`: emitLog, CONST.FILTER_FROM_RESULT_OPTIONS
56
- - [scenario.md](../core/scenario.md) — `SCENARIO`: emitNext, EVENTS.LINE_EXEC_REG
56
+ - [scenario.md](../core/scenario.md) — `SCENARIO`: EVENTS.NEXT, EVENTS.LINE_EXEC_REG
57
57
  - [state.md](../core/state.md) — `STATE`: EVENTS.SET, EVENTS.CLEAR, EVENTS.LOAD, EVENTS.PRELOAD, EVENTS.MIGRATE, EVENTS.GET
58
58
  - [storage.md](../core/storage.md) — `STORAGE`: EVENTS.GET, EVENTS.SET, EVENTS.RM_ALL, EVENTS.RM
59
59
  - [system.md](../core/system.md) — `SYSTEM`: CONST.DOM_IDS.APP
@@ -10,7 +10,7 @@
10
10
  | --------------------- | --------------------------------------------------------------------------------------------------------------------------- |
11
11
  | `% choose` | Открыть выбор: собрать `% choose.option`, emit `EMIT`. Если все опции `hided` (или список пуст) — `SKIP` и переход за блок. |
12
12
  | `% choose.option "…"` | Ветка опции; при проходе мимо невыбранной — skip тела по indent. |
13
- | `$ choose repeat` | Вернуться к ближайшему `% choose` **выше** текущей строки в том же label и `emitNext`. |
13
+ | `$ choose repeat` | Вернуться к ближайшему `% choose` **выше** текущей строки в том же label и `emit SCENARIO.NEXT`. |
14
14
 
15
15
  Пример цикла «осмотреть → вернуться в меню»:
16
16
 
@@ -31,11 +31,11 @@ Payloads и результаты хендлеров типизированы ч
31
31
  | Ключ | Строка | Смысл |
32
32
  | -------------------- | ------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
33
33
  | `EMIT` | `vne:choose:emit` | Принять опции и args; если есть видимые — `STATE_UPDATE` и `SHOW`; иначе `SKIP`. |
34
- | `OPTION` | `vne:choose:option` | Принять выбор по UI-индексу: прогнать `OPTION_BEFORE`, затем `HIDE`, `OPTION_REPLACE`, установить `curLine`, сброс state, `emitNext`. |
34
+ | `OPTION` | `vne:choose:option` | Принять выбор по UI-индексу: прогнать `OPTION_BEFORE`, затем `HIDE`, `OPTION_REPLACE`, установить `curLine`, сброс state, `emit SCENARIO.NEXT`. |
35
35
  | `OPTION_BEFORE` | `vne:choose:option_before` | Side effects до применения выбора (подписки с `priority` на Observer). |
36
36
  | `OPTION_REPLACE` | `vne:choose:option_replace` | Подменить UI-индекс принятой опции (цепочка handlers перед переходом по ветке). |
37
37
  | `OPTION_REPLACE_REG` | `vne:choose:option_replace_reg` | Зарегистрировать обработчик `OPTION_REPLACE`. |
38
- | `SKIP` | `vne:choose:skip` | Пропустить блок: `curLine` на первую строку после indent-дерева `% choose`, `emitNext`. |
38
+ | `SKIP` | `vne:choose:skip` | Пропустить блок: `curLine` на первую строку после indent-дерева `% choose`, `emit SCENARIO.NEXT`. |
39
39
  | `SHOW` | `vne:choose:show` | Выбор активен (state готов). Слушает view-плагин. |
40
40
  | `HIDE` | `vne:choose:hide` | Выбор закрыт. Слушает view-плагин. |
41
41
  | `EXEC_REG` | `vne:choose:exec_reg` | Зарегистрировать exec-обработчик для подстановки в опции. |
@@ -97,7 +97,7 @@ Payloads и результаты хендлеров типизированы ч
97
97
  ### plugins/core/
98
98
 
99
99
  - [logs.md](../core/logs.md) — `LOGS`: emitLog, `CONST.LOGS.FILTER_FROM_RESULT_OPTIONS`
100
- - [scenario.md](../core/scenario.md) — `SCENARIO`: emitNext, EVENTS.LINE_EXEC_REG, EVENTS.LINES_GET
100
+ - [scenario.md](../core/scenario.md) — `SCENARIO`: EVENTS.NEXT, EVENTS.LINE_EXEC_REG, EVENTS.LINES_GET
101
101
  - [state.md](../core/state.md) — `STATE`: EVENTS.SET, EVENTS.CLEAR
102
102
  - [vendors.md](../core/vendors.md) — `VENDORS`: emitClone
103
103
 
@@ -35,7 +35,7 @@ Payloads и результаты хендлеров типизированы ч
35
35
  | `pause` | `START` ждёт `END`: клик (`INTERACT`) или таймер `time`. |
36
36
  | `pause.emit` | В `postinject` — `shared.pauseDisableSources`. `EMIT` → `START`, если набор пуст. |
37
37
  | `pause.logs` | Логи `EMIT` / `START` / `END` через `emitLog`. `EMIT` пишет `time`. |
38
- | `pause.scenario` | `LINE_EXEC_REG` для `$ pause` в `init`. Парсит `time`, эмитит `EMIT`, затем `emitNext`. |
38
+ | `pause.scenario` | `LINE_EXEC_REG` для `$ pause` в `init`. Парсит `time`, эмитит `EMIT`, затем `emit SCENARIO.NEXT`. |
39
39
 
40
40
  ## Близкие плагины
41
41
 
@@ -43,7 +43,7 @@ Payloads и результаты хендлеров типизированы ч
43
43
 
44
44
  - [interact.md](../core/interact.md) — `INTERACT`: EVENTS.POP, EVENTS.PUSH
45
45
  - [logs.md](../core/logs.md) — `LOGS`: `emitLog`, `CONST.LOGS.FILTER_FROM_RESULT_OPTIONS`
46
- - [scenario.md](../core/scenario.md) — `SCENARIO`: emitNext, EVENTS.LINE_EXEC_REG
46
+ - [scenario.md](../core/scenario.md) — `SCENARIO`: EVENTS.NEXT, EVENTS.LINE_EXEC_REG
47
47
 
48
48
  ### Остальные
49
49
 
@@ -10,7 +10,7 @@
10
10
  | ------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
11
11
  | `% point-and-click` | Открыть point-and-click: собрать `% point-and-click.option`, emit `EMIT`. Если все опции `hided` (или список пуст) — `SKIP` и переход за блок. |
12
12
  | `% point-and-click.option {icon} {iconHover} x y` | Hotspot; при проходе мимо невыбранного — skip тела по indent. Опционально args `imgWidth` / `imgHeight` (px canvas). |
13
- | `$ point-and-click repeat` | Вернуться к ближайшему `% point-and-click` **выше** текущей строки в том же label и `emitNext`. |
13
+ | `$ point-and-click repeat` | Вернуться к ближайшему `% point-and-click` **выше** текущей строки в том же label и `emit SCENARIO.NEXT`. |
14
14
 
15
15
  Пример цикла осмотра:
16
16
 
@@ -33,8 +33,8 @@ Payloads и результаты хендлеров типизированы ч
33
33
  | Ключ | Строка | Смысл |
34
34
  | -------------- | ---------------------------------- | ------------------------------------------------------------------------------------------------ |
35
35
  | `EMIT` | `vne:point_and_click:emit` | Принять опции и args; если есть видимые — `STATE_UPDATE` и `SHOW`; иначе `SKIP`. |
36
- | `OPTION` | `vne:point_and_click:option` | Выбор hotspot: `HIDE`, `curLine` внутрь опции, сброс state через `STATE_UPDATE`, `emitNext`. |
37
- | `SKIP` | `vne:point_and_click:skip` | Пропустить блок: `curLine` на первую строку после indent-дерева `% point-and-click`, `emitNext`. |
36
+ | `OPTION` | `vne:point_and_click:option` | Выбор hotspot: `HIDE`, `curLine` внутрь опции, сброс state через `STATE_UPDATE`, `emit SCENARIO.NEXT`. |
37
+ | `SKIP` | `vne:point_and_click:skip` | Пропустить блок: `curLine` на первую строку после indent-дерева `% point-and-click`, `emit SCENARIO.NEXT`. |
38
38
  | `SHOW` | `vne:point_and_click:show` | Выбор активен (state готов). Слушает view-плагин. |
39
39
  | `HIDE` | `vne:point_and_click:hide` | Выбор закрыт. Слушает view-плагин. |
40
40
  | `EXEC_REG` | `vne:point_and_click:exec_reg` | Зарегистрировать exec-обработчик для подстановки в опции. |
@@ -89,7 +89,7 @@ Payloads и результаты хендлеров типизированы ч
89
89
  ### plugins/core/
90
90
 
91
91
  - [logs.md](../core/logs.md) — `LOGS`: emitLog, `CONST.LOGS.FILTER_FROM_RESULT_OPTIONS`
92
- - [scenario.md](../core/scenario.md) — `SCENARIO`: emitNext, EVENTS.LINE_EXEC_REG, EVENTS.LINES_GET
92
+ - [scenario.md](../core/scenario.md) — `SCENARIO`: EVENTS.NEXT, EVENTS.LINE_EXEC_REG, EVENTS.LINES_GET
93
93
  - [state.md](../core/state.md) — `STATE`: EVENTS.SET, EVENTS.CLEAR
94
94
  - [vendors.md](../core/vendors.md) — `VENDORS`: emitClone
95
95
 
@@ -13,7 +13,7 @@ Payloads и результаты хендлеров типизированы ч
13
13
  | Ключ | Строка | Смысл |
14
14
  | -------- | ---------------- | ------------------------------------------------------------------------------------------------ |
15
15
  | `EMIT` | `vne:qte:emit` | Запустить QTE: принять `id` / `item` / `skipScenario`, эмитить `OPENED`. |
16
- | `RESULT` | `vne:qte:result` | Результат раунда (`success`). Эмитит `CLOSED`; без `skipScenario` — сдвиг сценария и `emitNext`. |
16
+ | `RESULT` | `vne:qte:result` | Результат раунда (`success`). Эмитит `CLOSED`; без `skipScenario` — сдвиг сценария и `emit SCENARIO.NEXT`. |
17
17
  | `OPENED` | `vne:qte:opened` | QTE активен. Слушает view-плагин. |
18
18
  | `CLOSED` | `vne:qte:closed` | QTE закрыт. Слушает view-плагин. |
19
19
 
@@ -49,7 +49,7 @@ View сам переводит проценты в геометрию (град
49
49
  | Модуль | Зона ответственности |
50
50
  | -------------- | --------------------------------------------------------------------------------------------------------------------- |
51
51
  | `qte` | EMIT → `OPENED`; в `postinject` и на `EMIT` пишет `shared.qteScenarioSkip`. |
52
- | `qte.result` | RESULT → `CLOSED`; без skip — `applyResult` (success → `curLine + 1`, fail → `getBlockSkipShift`) и `emitNext`. |
52
+ | `qte.result` | RESULT → `CLOSED`; без skip — `applyResult` (success → `curLine + 1`, fail → `getBlockSkipShift`) и `emit SCENARIO.NEXT`. |
53
53
  | `qte.logs` | Логи `EMIT` / `RESULT` через `emitLog`; `skipScenario` из `shared.qteScenarioSkip`. |
54
54
  | `qte.scenario` | Регистрация `% qte` в SCENARIO; lookup `ITEMS`; при отсутствии id/item — log `MISSING` и `RESULT { success: false }`. |
55
55
 
@@ -64,11 +64,11 @@ View сам переводит проценты в геометрию (град
64
64
  1. `% qte <id>` → `EMIT` с `item` из `ITEMS[id]`.
65
65
  2. **Success** → `curLine` на первую строку внутри блока.
66
66
  3. **Fail** (или неизвестный id) → пропуск indented-блока, дальше по сценарию.
67
- 4. После `RESULT` (без `skipScenario`) — `emitNext`.
67
+ 4. После `RESULT` (без `skipScenario`) — `emit SCENARIO.NEXT`.
68
68
 
69
69
  ## Embedded (`skipScenario`)
70
70
 
71
- При `EMIT` с `skipScenario: true` ставится `shared.qteScenarioSkip`; на `RESULT` модуль `qte.result` **не** меняет `curLine` и **не** вызывает `emitNext` — только `CLOSED`. Используется compatibility choose↔qte, чтобы ветвление осталось у choose. В `postinject` модуля `qte` флаг — `false`.
71
+ При `EMIT` с `skipScenario: true` ставится `shared.qteScenarioSkip`; на `RESULT` модуль `qte.result` **не** меняет `curLine` и **не** вызывает `emit SCENARIO.NEXT` — только `CLOSED`. Используется compatibility choose↔qte, чтобы ветвление осталось у choose. В `postinject` модуля `qte` флаг — `false`.
72
72
 
73
73
  ## Compatibility
74
74
 
@@ -96,7 +96,7 @@ View сам переводит проценты в геометрию (град
96
96
  ### plugins/core/
97
97
 
98
98
  - [logs.md](../core/logs.md) — `LOGS`: emitLog
99
- - [scenario.md](../core/scenario.md) — `SCENARIO`: emitNext, EVENTS.LINE_EXEC_REG, EVENTS.LINES_GET
99
+ - [scenario.md](../core/scenario.md) — `SCENARIO`: EVENTS.NEXT, EVENTS.LINE_EXEC_REG, EVENTS.LINES_GET
100
100
 
101
101
  ### Остальные
102
102
 
@@ -31,7 +31,7 @@
31
31
  ### plugins/core/
32
32
 
33
33
  - [logs.md](../core/logs.md) — `LOGS`: emitLog
34
- - [scenario.md](../core/scenario.md) — `SCENARIO`: emitNext, EVENTS.LINE_EXEC_REG, EVENTS.LINES_GET
34
+ - [scenario.md](../core/scenario.md) — `SCENARIO`: EVENTS.NEXT, EVENTS.LINE_EXEC_REG, EVENTS.LINES_GET
35
35
 
36
36
  ### Остальные
37
37
 
@@ -35,7 +35,7 @@ Payloads и результаты хендлеров типизированы ч
35
35
  ### plugins/core/
36
36
 
37
37
  - [logs.md](../core/logs.md) — `LOGS`: emitLog
38
- - [scenario.md](../core/scenario.md) — `SCENARIO`: emitNext, EVENTS.LINE_EXEC_REG
38
+ - [scenario.md](../core/scenario.md) — `SCENARIO`: EVENTS.NEXT, EVENTS.LINE_EXEC_REG
39
39
 
40
40
  ### Остальные
41
41
 
@@ -51,7 +51,7 @@ Payloads и результаты хендлеров типизированы ч
51
51
  | Модуль | Зона ответственности |
52
52
  | ---------------------- | ----------------------------------------------------------------------------- |
53
53
  | `text.emit.end` | Завершение emit и переход к next или финальному state. |
54
- | `text.emit.next` | На `EMIT_NEXT`: `PROCESS_STATE` NEXT, затем `emitNext` (`priority` 999999). |
54
+ | `text.emit.next` | На `EMIT_NEXT`: `PROCESS_STATE` NEXT, затем `onTextEmitNext` → `emit SCENARIO.NEXT` (`priority` 999999). |
55
55
  | `text.emit` | Точка входа emit: подготовка и запуск process. |
56
56
  | `text.exec` | Подмодуль `exec` плагина. |
57
57
  | `text.prepare.tokens` | Токенизация текста перед отображением. |
@@ -81,7 +81,7 @@ Payloads и результаты хендлеров типизированы ч
81
81
  ### plugins/core/
82
82
 
83
83
  - [interact.md](../core/interact.md) — `INTERACT`: EVENTS.PUSH, EVENTS.POP
84
- - [scenario.md](../core/scenario.md) — `SCENARIO`: emitNext, EVENTS.LINE_EXEC_REG, CONST.OTHER_MODULE, CONST.LINE_KEYWORDS.AUTONEXT
84
+ - [scenario.md](../core/scenario.md) — `SCENARIO`: EVENTS.NEXT, EVENTS.LINE_EXEC_REG, CONST.OTHER_MODULE, CONST.LINE_KEYWORDS.AUTONEXT
85
85
  - [settings.md](../core/settings.md) — `SETTINGS`: EVENTS.CHANGED, EVENTS.INIT
86
86
  - [state.md](../core/state.md) — `STATE`: EVENTS.SET, EVENTS.CLEAR
87
87
  - [vendors.md](../core/vendors.md) — `VENDORS`: EVENTS.UID, emitClone
@@ -35,7 +35,7 @@ Payloads и результаты хендлеров типизированы ч
35
35
 
36
36
  ### plugins/core/
37
37
 
38
- - [scenario.md](../core/scenario.md) — `SCENARIO`: emitNext, EVENTS.LINE_EXEC_REG
38
+ - [scenario.md](../core/scenario.md) — `SCENARIO`: EVENTS.NEXT, EVENTS.LINE_EXEC_REG
39
39
  - [state.md](../core/state.md) — `STATE`: EVENTS.CLEAR, EVENTS.SET
40
40
  - [vendors.md](../core/vendors.md) — `VENDORS`: emitClone
41
41
 
@@ -36,7 +36,7 @@ Payloads и результаты хендлеров типизированы ч
36
36
 
37
37
  ### plugins/core/
38
38
 
39
- - [scenario.md](../core/scenario.md) — `SCENARIO`: emitNext, EVENTS.LINE_EXEC_REG
39
+ - [scenario.md](../core/scenario.md) — `SCENARIO`: EVENTS.NEXT, EVENTS.LINE_EXEC_REG
40
40
  - [state.md](../core/state.md) — `STATE`: EVENTS.SET, EVENTS.CLEAR
41
41
 
42
42
  ### Остальные
@@ -37,7 +37,7 @@ Payloads и результаты хендлеров типизированы ч
37
37
 
38
38
  ### plugins/core/
39
39
 
40
- - [scenario.md](../core/scenario.md) — `SCENARIO`: emitNext, EVENTS.LINE_EXEC_REG
40
+ - [scenario.md](../core/scenario.md) — `SCENARIO`: EVENTS.NEXT, EVENTS.LINE_EXEC_REG
41
41
  - [state.md](../core/state.md) — `STATE`: EVENTS.SET, EVENTS.CLEAR
42
42
 
43
43
  ### Остальные
@@ -43,7 +43,7 @@ Payloads и результаты хендлеров типизированы ч
43
43
 
44
44
  ### plugins/core/
45
45
 
46
- - [scenario.md](../core/scenario.md) — `SCENARIO`: emitNext, EVENTS.LINE_EXEC_REG
46
+ - [scenario.md](../core/scenario.md) — `SCENARIO`: EVENTS.NEXT, EVENTS.LINE_EXEC_REG
47
47
 
48
48
  ### Остальные
49
49
 
@@ -39,7 +39,7 @@ Payloads и результаты хендлеров типизированы ч
39
39
 
40
40
  ### plugins/core/
41
41
 
42
- - [scenario.md](../core/scenario.md) — `SCENARIO`: emitNext, EVENTS.LINE_EXEC_REG
42
+ - [scenario.md](../core/scenario.md) — `SCENARIO`: EVENTS.NEXT, EVENTS.LINE_EXEC_REG
43
43
 
44
44
  ### Остальные
45
45
 
@@ -58,7 +58,7 @@ Payloads и результаты хендлеров типизированы ч
58
58
 
59
59
  - [logs.md](../core/logs.md) — `LOGS`: emitLog, CONST.FILTER_FROM_RESULT_OPTIONS
60
60
  - [media.md](../core/media.md) — `MEDIA`: CONST.PRIORITIES.BACKGROUND
61
- - [scenario.md](../core/scenario.md) — `SCENARIO`: emitNext, EVENTS.LINE_EXEC_REG, EVENTS.LINE_LOAD_REG, CONST.LINE_KEYWORDS.SKIP_IF_POSSIBLE
61
+ - [scenario.md](../core/scenario.md) — `SCENARIO`: EVENTS.NEXT, EVENTS.LINE_EXEC_REG, EVENTS.LINE_LOAD_REG, CONST.LINE_KEYWORDS.SKIP_IF_POSSIBLE
62
62
  - [storage.md](../core/storage.md) — `STORAGE`: EVENTS.RM_ALL, EVENTS.GET, EVENTS.SET
63
63
 
64
64
  ### Остальные
@@ -44,7 +44,7 @@ Payloads и результаты хендлеров типизированы ч
44
44
  ### plugins/core/
45
45
 
46
46
  - [components.md](../core/components.md) — `COMPONENTS`: EVENTS.EXTERNAL_UPDATE
47
- - [scenario.md](../core/scenario.md) — `SCENARIO`: emitNext, EVENTS.LINE_EXEC_REG
47
+ - [scenario.md](../core/scenario.md) — `SCENARIO`: EVENTS.NEXT, EVENTS.LINE_EXEC_REG
48
48
  - [state.md](../core/state.md) — `STATE`: EVENTS.SET, EVENTS.CLEAR
49
49
 
50
50
  ### Остальные
@@ -50,7 +50,7 @@ Payloads и результаты хендлеров типизированы ч
50
50
 
51
51
  - [interact.md](../core/interact.md) — `INTERACT`: EVENTS.EMIT, EVENTS.PUSH
52
52
  - [media.md](../core/media.md) — `MEDIA`: EVENTS.LOAD, EVENTS.GET, CONST.PRIORITIES.BACKGROUND, CONST.TYPES.VIDEO
53
- - [scenario.md](../core/scenario.md) — `SCENARIO`: emitNext, EVENTS.LINE_EXEC_REG, EVENTS.LINE_LOAD_REG
53
+ - [scenario.md](../core/scenario.md) — `SCENARIO`: EVENTS.NEXT, EVENTS.LINE_EXEC_REG, EVENTS.LINE_LOAD_REG
54
54
  - [state.md](../core/state.md) — `STATE`: EVENTS.CLEAR, EVENTS.SET
55
55
 
56
56
  ### Остальные
@@ -79,7 +79,7 @@ Payloads и результаты хендлеров типизированы ч
79
79
  ### plugins/core/
80
80
 
81
81
  - [interact.md](../core/interact.md) — `INTERACT`: EVENTS.EMIT
82
- - [scenario.md](../core/scenario.md) — `SCENARIO`: emitNext, EVENTS.LINE_EXEC_REG
82
+ - [scenario.md](../core/scenario.md) — `SCENARIO`: EVENTS.NEXT, EVENTS.LINE_EXEC_REG
83
83
  - [state.md](../core/state.md) — `STATE`: EVENTS.SET, EVENTS.CLEAR
84
84
 
85
85
  ### Остальные
@@ -33,7 +33,7 @@ Payloads и результаты хендлеров типизированы ч
33
33
 
34
34
  | Модуль | Зона ответственности |
35
35
  | --------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
36
- | `credits.controller` | SHOW/HIDE; пустой `controls` на `ZINDEX`; `afterHide` → emitNext. |
36
+ | `credits.controller` | SHOW/HIDE; пустой `controls` на `ZINDEX`; `afterHide` → emit SCENARIO.NEXT. |
37
37
  | `credits.controller.accept` | Наследует `@vnejs/module.controller.accept`: `ACCEPT` / `INTERACT` → `CREDITS.ACCEPT` → `HIDE`; PUSH/POP на SHOW/HIDE. |
38
38
  | `credits.hide.controls` | Наследует `@vnejs/module.controller.hide.on.controls`: `BACK` / `MENU` / `GAMEMENU` → `HIDE`; PUSH/POP на SHOW/HIDE. |
39
39
  | `credits.hide.state` | Наследует `@vnejs/module.controller.hide.on.state`: `STATE.SET` / `STATE.CLEAR` → `HIDE` с `{ isForce: true }`. |
@@ -45,7 +45,7 @@ Payloads и результаты хендлеров типизированы ч
45
45
  ### plugins/core/
46
46
 
47
47
  - [state.md](../core/state.md) — `STATE`: EVENTS.SET, EVENTS.CLEAR
48
- - [scenario.md](../core/scenario.md) — `SCENARIO`: emitNext, EVENTS.LINE_EXEC_REG
48
+ - [scenario.md](../core/scenario.md) — `SCENARIO`: EVENTS.NEXT, EVENTS.LINE_EXEC_REG
49
49
 
50
50
  ### Остальные
51
51
 
@@ -37,7 +37,7 @@ Payloads и результаты хендлеров типизированы ч
37
37
  | Модуль | Зона ответственности |
38
38
  | ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------- |
39
39
  | `disclaimer.controller` | SHOW/HIDE; пустой `controls` на `ZINDEX`, чтобы стопорить слои ниже. |
40
- | `disclaimer.controller.accept` | Наследует `@vnejs/module.controller.accept`: `ACCEPT` / `INTERACT` → `DISCLAIMER.ACCEPT` → `HIDE`, `emitNext`; PUSH/POP на SHOW/HIDE. |
40
+ | `disclaimer.controller.accept` | Наследует `@vnejs/module.controller.accept`: `ACCEPT` / `INTERACT` → `DISCLAIMER.ACCEPT` → `HIDE`, `emit SCENARIO.NEXT`; PUSH/POP на SHOW/HIDE. |
41
41
  | `disclaimer` | `$ disclaimer show <id>` → SHOW. |
42
42
  | `disclaimer.view` | React UI: title / text / accept из locs. |
43
43
 
@@ -63,7 +63,7 @@ $ disclaimer show qte
63
63
  ### plugins/core/
64
64
 
65
65
  - [logs.md](../core/logs.md) — `LOGS`: emitLog
66
- - [scenario.md](../core/scenario.md) — `SCENARIO`: emitNext, EVENTS.LINE_EXEC_REG
66
+ - [scenario.md](../core/scenario.md) — `SCENARIO`: EVENTS.NEXT, EVENTS.LINE_EXEC_REG
67
67
 
68
68
  ### Остальные
69
69
 
@@ -48,7 +48,7 @@ Payloads и результаты хендлеров типизированы ч
48
48
  ### plugins/core/
49
49
 
50
50
  - [logs.md](../core/logs.md) — `LOGS`: emitLog
51
- - [scenario.md](../core/scenario.md) — `SCENARIO`: emitNext, EVENTS.LINE_EXEC_REG, CONST.LINE_KEYWORDS.SKIP_IF_POSSIBLE
51
+ - [scenario.md](../core/scenario.md) — `SCENARIO`: EVENTS.NEXT, EVENTS.LINE_EXEC_REG, CONST.LINE_KEYWORDS.SKIP_IF_POSSIBLE
52
52
  - [system.md](../core/system.md) — `SYSTEM`: EVENTS.STARTED
53
53
 
54
54
  ### Остальные
@@ -69,7 +69,7 @@ Payloads и результаты хендлеров типизированы ч
69
69
  ### plugins/core/
70
70
 
71
71
  - [memory.md](../core/memory.md) — `MEMORY`: EVENTS.CLEARED
72
- - [scenario.md](../core/scenario.md) — `SCENARIO`: emitNext
72
+ - [scenario.md](../core/scenario.md) — `SCENARIO`: EVENTS.NEXT
73
73
  - [state.md](../core/state.md) — `STATE`: EVENTS.SET, EVENTS.CLEAR, CONST.MIGRATE_STATUS.LINE_NOT_FOUND, CONST.MIGRATE_STATUS.OK
74
74
  - [system.md](../core/system.md) — `SYSTEM`: EVENTS.STARTED
75
75
  - [vendors.md](../core/vendors.md) — `VENDORS`: EVENTS.DATE
@@ -45,8 +45,8 @@ Payloads и результаты хендлеров типизированы ч
45
45
  | `settings.default.controller` | SHOW/HIDE; `beforeShow` → `SHOW_BEFORE`; `STATE_UPDATE` / `UPDATE_FAST`. |
46
46
  | `settings.default.controller.bg` | Наследует `@vnejs/module.controller.bg`: `SHOW_BEFORE` → `bgSrc`; `MEMORY.CLEARED` при `isShow` → refresh. |
47
47
  | `settings.default.controller.fields` | На `SHOW_BEFORE`: `STATE_UPDATE` `{ tab }` + `SETTINGS_VIEW.SHOW` с `CONST.SETTINGS_VIEW.DEFAULT_TAB`. |
48
- | `settings.default.controller.accept` | Наследует `@vnejs/module.controller.accept`: только `ACCEPT` (`IS_INTERACT_ENABLED = false`) → `CONFIRM` → `INITED`, `HIDE`, `emitNext`; PUSH/POP на SHOW/HIDE. |
49
- | `settings.default` | `SETTINGS.INIT` INITED в `setup`; `LINE_EXEC` как `$ settings.defaults` → `SHOW`, либо `emitNext` при `skip_if_possible` и `INITED`. |
48
+ | `settings.default.controller.accept` | Наследует `@vnejs/module.controller.accept`: только `ACCEPT` (`IS_INTERACT_ENABLED = false`) → `CONFIRM` → `INITED`, `HIDE`, `emit SCENARIO.NEXT`; PUSH/POP на SHOW/HIDE. |
49
+ | `settings.default` | `SETTINGS.INIT` INITED в `setup`; `LINE_EXEC` как `$ settings.defaults` → `SHOW`, либо `emit SCENARIO.NEXT` при `skip_if_possible` и `INITED`. |
50
50
  | `settings.default.view` | Chrome: title + кнопка Accept. |
51
51
 
52
52
  ## Близкие плагины
@@ -55,7 +55,7 @@ Payloads и результаты хендлеров типизированы ч
55
55
 
56
56
  - [components.md](../core/components.md) — `COMPONENTS`: EVENTS.EXTERNAL_UPDATE
57
57
  - [memory.md](../core/memory.md) — `MEMORY`: EVENTS.CLEARED
58
- - [scenario.md](../core/scenario.md) — `SCENARIO`: emitNext, EVENTS.LINE_EXEC_REG, CONST.LINE_KEYWORDS.SKIP_IF_POSSIBLE
58
+ - [scenario.md](../core/scenario.md) — `SCENARIO`: EVENTS.NEXT, EVENTS.LINE_EXEC_REG, CONST.LINE_KEYWORDS.SKIP_IF_POSSIBLE
59
59
  - [settings.md](../core/settings.md) — `SETTINGS`: EVENTS.CHANGED, EVENTS.INIT, EVENTS.SET
60
60
 
61
61
  ### Остальные