@vnejs/docs 0.2.20 → 0.2.22
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 +19 -1
- package/README.md +1 -1
- package/package.json +1 -1
- package/plugins/core/media.md +6 -6
- package/plugins/core/scenario.md +4 -4
- package/plugins/core/storage.md +3 -3
- package/plugins/core/vendors.md +2 -6
- package/plugins/scenario/fastforward.md +16 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,24 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
Краткая история изменений
|
|
3
|
+
Краткая история изменений движка (плагины, helpers, packages, CLI и прочий runtime) и внешнего API. Версии — релизы пакета `@vnejs/docs`.
|
|
4
|
+
|
|
5
|
+
## 0.2.22
|
|
6
|
+
|
|
7
|
+
- `scenario/fastforward` — цикл автоклика в модуле `fastforward.emit`; провал `CHECK` эмитит `STOP`. `isFastforwardOn` сбрасывается через `setValue(false)` в `init`, не на `SYSTEM.STARTED`. Визиты в `shared.fastforwardStorage`; диск в `fastforward.storage`. API: `shared.fastforwardStorage`, `EVENTS.FASTFORWARD.VISIT_ADD`, модули `fastforward.emit`, `fastforward.scenario`, `fastforward.storage`.
|
|
8
|
+
- `core/vendors` — события `UID`, `HASH`, `DATE`, `DEBOUNCE` сняты; остались `CLONE`, `SCREEN`. Вместо них: `crypto.randomUUID()`, `hashSha256`, `formatTimestamp`, `debounce`.
|
|
9
|
+
- `helpers/hash-sha256` — SHA-256 объекта: `hashSha256(value, maxLength?)`; ключи канонизируются. `maxLength` пока не передают.
|
|
10
|
+
- `helpers/format-timestamp` — `formatTimestamp({ ts, format })`; токены `YYYY`, `MM`, `DD`, `HH`, `mm`, `ss`.
|
|
11
|
+
- `helpers/debounce` — `debounce({ fn, wait, maxWait, leading, trailing })`.
|
|
12
|
+
- `core/logs`, `text/text`, `canvas/bg`, `canvas/video`, `views.screens/history` — uid через `crypto.randomUUID()`, не `VENDORS.UID`.
|
|
13
|
+
- `core/scenario`, `core/state`, `scenario/fastforward` — хеш строки / visits через `hashSha256`, не `VENDORS.HASH`.
|
|
14
|
+
- `views.screens/save` — дата и время слота через `formatTimestamp`, не `VENDORS.DATE`.
|
|
15
|
+
- `platform/electron` — сохранение state через `debounce`, не `VENDORS.DEBOUNCE`.
|
|
16
|
+
|
|
17
|
+
## 0.2.21
|
|
18
|
+
|
|
19
|
+
- `core/media` — ошибка/timeout fetch не занимает слот semaphore и не кладёт битый blob в память; `GET` не ждёт вечно и возвращает `null` для отсутствующего или битого asset.
|
|
20
|
+
- `core/scenario` — `LABEL_GET` / `LINE_GET` завершаются, если предзагрузка одной строки упала.
|
|
21
|
+
- `cli/desktop` — закрытие последнего окна завершает Electron и на macOS (Steam не держит игру запущенной); Fastify закрывается на quit, если процесс не выходит — `app.exit(0)`. API: `runServer` возвращает `{ port, close }`, `runElectron` принимает `onBeforeQuit`.
|
|
4
22
|
|
|
5
23
|
## 0.2.20
|
|
6
24
|
|
package/README.md
CHANGED
|
@@ -28,7 +28,7 @@ npm i @vnejs/docs
|
|
|
28
28
|
- [Сценарий — guide](./scenario.guide/README.md) — синтаксис `.vne` и тематические гайды
|
|
29
29
|
- [Сценарий — catalog](./scenario.catalog/README.md) — каталог `$` / `%` команд
|
|
30
30
|
- [Архитектура](./architecture.md) — каталоги монорепы и их связи, mermaid-диаграммы
|
|
31
|
-
- [Changelog](./CHANGELOG.md) — изменения
|
|
31
|
+
- [Changelog](./CHANGELOG.md) — изменения движка и API по версиям `@vnejs/docs`
|
|
32
32
|
|
|
33
33
|
## Быстрый ориентир по монорепе
|
|
34
34
|
|
package/package.json
CHANGED
package/plugins/core/media.md
CHANGED
|
@@ -8,14 +8,14 @@
|
|
|
8
8
|
|
|
9
9
|
| Ключ | Строка | Смысл |
|
|
10
10
|
|------|--------|-------|
|
|
11
|
-
| `GET` | `vne:media:get` | Получить готовый медиа-элемент: из кэша или через цепочку load. |
|
|
11
|
+
| `GET` | `vne:media:get` | Получить готовый медиа-элемент: из кэша или через цепочку load. Битый или отсутствующий asset → `null`, без вечного wait. |
|
|
12
12
|
| `SET` | `vne:media:set` | Положить готовый DOM-элемент в memory-подсистему media. |
|
|
13
|
-
| `LOAD` | `vne:media:load` | Запуск загрузки по id/type/name с учётом semaphore и dedup через `LOAD_CHECK`. |
|
|
13
|
+
| `LOAD` | `vne:media:load` | Запуск загрузки по id/type/name с учётом semaphore и dedup через `LOAD_CHECK`. Слот очереди освобождается и при ошибке. |
|
|
14
14
|
| `LOAD_CHECK` | `vne:media:load_check` | Проверить: уже в памяти, в процессе process или load. |
|
|
15
15
|
| `LOAD_START` | `vne:media:load_start` | Начало загрузки asset (маркер lifecycle). |
|
|
16
16
|
| `LOAD_END` | `vne:media:load_end` | Окончание загрузки asset (маркер lifecycle). |
|
|
17
17
|
| `ERROR_NO_SRC` | `vne:media:error_no_src` | В манифесте нет src для запрошенного asset. |
|
|
18
|
-
| `ERROR_FETCH` | `vne:media:error_fetch` | Ошибка fetch
|
|
18
|
+
| `ERROR_FETCH` | `vne:media:error_fetch` | Ошибка fetch: сеть, HTTP не-ok, timeout. Битый blob в память не кладётся. |
|
|
19
19
|
| `PROCESS` | `vne:media:process` | Скачать blob, создать `<img>` / `<audio>` / `<video>`, вызвать `SET`. |
|
|
20
20
|
| `PROCESS_CHECK` | `vne:media:process_check` | Есть ли уже promise/результат process для `mediaId`. |
|
|
21
21
|
| `MEMORY_GET` | `vne:media:memory_get` | Прокси к `MEMORY.GET` для namespace media. |
|
|
@@ -39,10 +39,10 @@
|
|
|
39
39
|
|
|
40
40
|
| Модуль | Зона ответственности |
|
|
41
41
|
|--------|----------------------|
|
|
42
|
-
| `media.load` | Semaphore-gated load, dedup, делегирование в process/memory. |
|
|
43
|
-
| `media.process` | Fetch blob и создание DOM-медиа. |
|
|
42
|
+
| `media.load` | Semaphore-gated load, dedup, делегирование в process/memory. Слот всегда освобождается (`finally`), даже если process reject. |
|
|
43
|
+
| `media.process` | Fetch blob и создание DOM-медиа. HTTP не-ok и timeout fetch → `ERROR_FETCH`, без `SET`. |
|
|
44
44
|
| `media.memory` | REG в memory, монтирование элементов в скрытый `#media`. |
|
|
45
|
-
| `media` | Высокоуровневый get/set. |
|
|
45
|
+
| `media` | Высокоуровневый get/set. `GET` возвращает `null`, если asset нет или не готов (битая картинка, error). |
|
|
46
46
|
| `media.logs` | Логирование lifecycle media. |
|
|
47
47
|
|
|
48
48
|
## Близкие плагины
|
package/plugins/core/scenario.md
CHANGED
|
@@ -11,9 +11,9 @@
|
|
|
11
11
|
| `EXEC` | `vne:scenario:exec` | Выполнить строку сценария: dispatch по module/block с line, args и keywords. |
|
|
12
12
|
| `EXEC_DELAY` | `vne:scenario:exec_delay` | Отложить promise до завершения текущего exec (async-строки). |
|
|
13
13
|
| `NEXT` | `vne:scenario:next` | Шаг вперёд по сценарию: выполнить текущую строку или завершить текущую метку. |
|
|
14
|
-
| `LABEL_GET` | `vne:scenario:label_get` | Предзагрузка строк метки на глубину `deep` с приоритетом. |
|
|
14
|
+
| `LABEL_GET` | `vne:scenario:label_get` | Предзагрузка строк метки на глубину `deep` с приоритетом. Упавшая строка не блокирует метку. |
|
|
15
15
|
| `LINE_LOAD` | `vne:scenario:line_load` | Условная предзагрузка одной строки (с учётом depth в memory). |
|
|
16
|
-
| `LINE_GET` | `vne:scenario:line_get` | Получить и подготовить одну строку сценария по label и index. |
|
|
16
|
+
| `LINE_GET` | `vne:scenario:line_get` | Получить и подготовить одну строку сценария по label и index. Ошибка предзагрузки не оставляет промис висящим. |
|
|
17
17
|
| `LINE_LOAD_REG` | `vne:scenario:line_load_reg` | Зарегистрировать обработчик предзагрузки строк для module/block. |
|
|
18
18
|
| `LINE_EXEC_REG` | `vne:scenario:line_exec_reg` | Зарегистрировать обработчик выполнения строк для module/block. |
|
|
19
19
|
| `LINES_GET` | `vne:scenario:lines_get` | Получить массив строк метки (JSON с хоста, кэш в memory). |
|
|
@@ -48,8 +48,8 @@
|
|
|
48
48
|
| `scenario` | Главный цикл `NEXT`, exec строк, sync state. |
|
|
49
49
|
| `scenario.autostart` | Дефолт `shared.shouldAutostartScenario`; на `SYSTEM.STARTED` — init label + `emitNext` при включённом флаге. |
|
|
50
50
|
| `scenario.exec` | Dispatch `$module` / `%block`, registry handlers, `EXEC_DELAY`. |
|
|
51
|
-
| `scenario.label` | `LABEL_GET`, preload меток; init label на `STATE.CLEAR`. |
|
|
52
|
-
| `scenario.line` | `LINE_LOAD` / `LINE_GET`, registry preload handlers. |
|
|
51
|
+
| `scenario.label` | `LABEL_GET`, preload меток; init label на `STATE.CLEAR`. Одна упавшая строка не валит всю метку. |
|
|
52
|
+
| `scenario.line` | `LINE_LOAD` / `LINE_GET`, registry preload handlers. Executor `LINE_GET` всегда resolve. |
|
|
53
53
|
| `scenario.lines` | Fetch `label/<path>.json` с `HOST` (например `label/prologue/1.json`). |
|
|
54
54
|
|
|
55
55
|
## Близкие плагины
|
package/plugins/core/storage.md
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
- Если `group` не передан — подставляется `_` (default group).
|
|
12
12
|
- `key` может содержать `:` (например settings `vne:volume:common`).
|
|
13
|
-
- `module` может содержать `.` (например `vars.global`, `fastforward.
|
|
13
|
+
- `module` может содержать `.` (например `vars.global`, `fastforward.storage`).
|
|
14
14
|
|
|
15
15
|
Примеры:
|
|
16
16
|
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
|-------|-----------------|
|
|
19
19
|
| `{ module: "settings", key: "vne:volume:common" }` | `settings/_/vne:volume:common` |
|
|
20
20
|
| `{ module: "save", group: "0", key: "3" }` | `save/0/3` |
|
|
21
|
-
| `{ module: "fastforward.
|
|
21
|
+
| `{ module: "fastforward.storage", group: "intro", key: "hash" }` | `fastforward.storage/intro/hash` |
|
|
22
22
|
|
|
23
23
|
## Диск (desktop / Steam)
|
|
24
24
|
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
| `_` или не задан | `{module}.json` |
|
|
28
28
|
| любая другая | `{module}/{group}.json` |
|
|
29
29
|
|
|
30
|
-
Примеры: `settings.json`, `save/0.json`, `save/autosave.json`, `fastforward.
|
|
30
|
+
Примеры: `settings.json`, `save/0.json`, `save/autosave.json`, `fastforward.storage/intro.json`.
|
|
31
31
|
|
|
32
32
|
## События
|
|
33
33
|
|
package/plugins/core/vendors.md
CHANGED
|
@@ -2,18 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
Пакет: `@vnejs/plugins.core.vendors` · namespace: `VENDORS`
|
|
4
4
|
|
|
5
|
-
Обёртки над сторонними утилитами: clone,
|
|
5
|
+
Обёртки над сторонними утилитами: clone, скриншот.
|
|
6
6
|
|
|
7
7
|
## События
|
|
8
8
|
|
|
9
9
|
| Ключ | Строка | Смысл |
|
|
10
10
|
|------|--------|-------|
|
|
11
|
-
| `UID` | `vne:vendors:uid` | Сгенерировать уникальный идентификатор uuid4. |
|
|
12
|
-
| `HASH` | `vne:vendors:hash` | MD5-хеш объекта (идентификация строки сценария, проверка сохранений). |
|
|
13
|
-
| `DATE` | `vne:vendors:date` | Форматирование timestamp через dayjs. Payload: `{ ts?, format? }`. |
|
|
14
11
|
| `CLONE` | `vne:vendors:clone` | Deep clone через lodash (state, stack, args). |
|
|
15
12
|
| `SCREEN` | `vne:vendors:screen` | Скриншот DOM через html2canvas → webp data URL. Payload: `{ width?, height?, quality?, id? }`. |
|
|
16
|
-
| `DEBOUNCE` | `vne:vendors:debounce` | Вернуть lodash-debounced функцию. Payload: `{ func?, wait?, options? }`. |
|
|
17
13
|
|
|
18
14
|
## Константы
|
|
19
15
|
|
|
@@ -31,7 +27,7 @@
|
|
|
31
27
|
|
|
32
28
|
| Модуль | Зона ответственности |
|
|
33
29
|
|--------|----------------------|
|
|
34
|
-
| `vendors` |
|
|
30
|
+
| `vendors` | clone. |
|
|
35
31
|
| `vendors.screen` | html2canvas screenshot; на init помечает media-элементы ignore. |
|
|
36
32
|
|
|
37
33
|
## Близкие плагины
|
|
@@ -15,11 +15,14 @@
|
|
|
15
15
|
| `EMIT_CHECK` | `vne:fastforward:emit_check` | Инициировать действие или цикл. |
|
|
16
16
|
| `CHECK` | `vne:fastforward:check` | Проверить состояние или наличие ресурса. |
|
|
17
17
|
| `CHANGED` | `vne:fastforward:changed` | Зафиксировать изменение состояния. |
|
|
18
|
+
| `VISIT_ADD` | `vne:fastforward:visit_add` | Записать визит: `shared.fastforwardStorage` + стейт и `STORAGE.SET`. Payload: `key`, `group`, поля `SCENARIO.EXEC`. |
|
|
18
19
|
| `CLEAR` | `vne:fastforward:clear` | Очистить накопленное состояние. |
|
|
19
20
|
|
|
20
21
|
## Константы
|
|
21
22
|
|
|
22
|
-
|
|
23
|
+
| Ключ | Смысл |
|
|
24
|
+
|------|--------|
|
|
25
|
+
| `SOURCE` | `"fastforward"` — ключ в SourcesSet соседних плагинов. |
|
|
23
26
|
|
|
24
27
|
## Параметры
|
|
25
28
|
|
|
@@ -37,12 +40,22 @@
|
|
|
37
40
|
| `DELAY` (`vne:fastforward:delay`) | `number` | Настройка `vne:fastforward:delay` в `shared.settings`. |
|
|
38
41
|
| `ENABLED` (`vne:fastforward:enabled`) | `boolean` | Включить или выключить функцию. |
|
|
39
42
|
|
|
43
|
+
## Shared
|
|
44
|
+
|
|
45
|
+
| Поле | Тип | Смысл |
|
|
46
|
+
|------|-----|--------|
|
|
47
|
+
| `isFastforwardOn` | `boolean` | Режим прокрутки включён. В `init` модуля `fastforward` сбрасывается через `setValue(false)`; дальше — `START` / `STOP` / `TOGGLE`. |
|
|
48
|
+
| `fastforwardStorage` | `Set<string>` | Хеши уже просмотренных строк; наполняется из `STORAGE` в `init` модуля `fastforward.storage`. |
|
|
49
|
+
|
|
40
50
|
## Модули
|
|
41
51
|
|
|
42
52
|
| Модуль | Зона ответственности |
|
|
43
53
|
|--------|----------------------|
|
|
44
|
-
| `fastforward` |
|
|
45
|
-
| `fastforward.
|
|
54
|
+
| `fastforward` | `STOP`, `START`, `CHECK`, `TOGGLE`; в `init` — `setValue(false)`. |
|
|
55
|
+
| `fastforward.emit` | Цикл `EMIT` / `EMIT_CHECK`: `CHECK` → `INTERACT.EMIT`; провал `CHECK` → `STOP`. |
|
|
56
|
+
| `fastforward.scenario` | `SCENARIO.EXEC` → hash стейта `fastforward.visits` и `VISIT_ADD`. |
|
|
57
|
+
| `fastforward.visits` | `VISIT_ADD` пишет в `shared.fastforwardStorage` и снимок стейта. `CHECK` читает Set. |
|
|
58
|
+
| `fastforward.storage` | `VISIT_ADD` → `STORAGE.SET` с `module` = `this.name`. `GET_ALL` / `RM_ALL` / `CLEAR`. `group` = label, `key` = hash; при init hash берётся из хвоста ключа. На диске: `fastforward.storage/{label}.json`. |
|
|
46
59
|
|
|
47
60
|
## Близкие плагины
|
|
48
61
|
|
|
@@ -53,8 +66,6 @@
|
|
|
53
66
|
- [settings.md](../core/settings.md) — `SETTINGS`: EVENTS.INIT
|
|
54
67
|
- [state.md](../core/state.md) — `STATE`: EVENTS.CLEAR, EVENTS.SET
|
|
55
68
|
- [storage.md](../core/storage.md) — `STORAGE`: EVENTS.GET_ALL, EVENTS.SET, EVENTS.RM_ALL
|
|
56
|
-
- [system.md](../core/system.md) — `SYSTEM`: EVENTS.STARTED
|
|
57
|
-
- [vendors.md](../core/vendors.md) — `VENDORS`: EVENTS.HASH
|
|
58
69
|
|
|
59
70
|
### Остальные
|
|
60
71
|
|