@iwonz/ywtc 3.2.2 → 3.4.0
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 +36 -0
- package/README.md +48 -43
- package/dist/adapters/confluence.d.ts +37 -2
- package/dist/adapters/confluence.js +115 -2
- package/dist/adapters/confluence.js.map +1 -1
- package/dist/adapters/yandex.d.ts +26 -2
- package/dist/adapters/yandex.js +113 -4
- package/dist/adapters/yandex.js.map +1 -1
- package/dist/cli-arguments.d.ts +5 -1
- package/dist/cli-arguments.js +10 -0
- package/dist/cli-arguments.js.map +1 -1
- package/dist/cli.js +16 -6
- package/dist/cli.js.map +1 -1
- package/dist/clients/confluence-cloud.d.ts +17 -1
- package/dist/clients/confluence-cloud.js +116 -0
- package/dist/clients/confluence-cloud.js.map +1 -1
- package/dist/clients/confluence.d.ts +13 -1
- package/dist/clients/confluence.js +89 -0
- package/dist/clients/confluence.js.map +1 -1
- package/dist/clients/yandex-wiki.d.ts +13 -2
- package/dist/clients/yandex-wiki.js +67 -5
- package/dist/clients/yandex-wiki.js.map +1 -1
- package/dist/comments.d.ts +66 -0
- package/dist/comments.js +478 -0
- package/dist/comments.js.map +1 -0
- package/dist/content-model.js +3 -2
- package/dist/content-model.js.map +1 -1
- package/dist/doctor.d.ts +14 -2
- package/dist/doctor.js +26 -4
- package/dist/doctor.js.map +1 -1
- package/dist/domain.d.ts +116 -2
- package/dist/domain.js +7 -1
- package/dist/domain.js.map +1 -1
- package/dist/filesystem-export.d.ts +16 -1
- package/dist/filesystem-export.js +88 -2
- package/dist/filesystem-export.js.map +1 -1
- package/dist/graph.d.ts +2 -1
- package/dist/graph.js +105 -15
- package/dist/graph.js.map +1 -1
- package/dist/issues.d.ts +1 -1
- package/dist/migrator.d.ts +4 -1
- package/dist/migrator.js +638 -27
- package/dist/migrator.js.map +1 -1
- package/dist/report-catalog.d.ts +30 -1
- package/dist/report-catalog.js +26 -0
- package/dist/report-catalog.js.map +1 -1
- package/dist/report.d.ts +47 -3
- package/dist/report.js +66 -3
- package/dist/report.js.map +1 -1
- package/dist/state.d.ts +42 -2
- package/dist/state.js +67 -1
- package/dist/state.js.map +1 -1
- package/dist/types.d.ts +79 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,42 @@
|
|
|
2
2
|
|
|
3
3
|
Notable changes to `ywtc` are documented in this file. Versions follow [Semantic Versioning](https://semver.org/).
|
|
4
4
|
|
|
5
|
+
## [3.4.0](https://github.com/iwonz/ywtc/compare/v3.3.0...v3.4.0) (2026-10-16)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* **migration:** archive page comments ([d3c5c61](https://github.com/iwonz/ywtc/commit/d3c5c61a187ad1739d49aba0bfeff245d15cec5b))
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Documentation
|
|
14
|
+
|
|
15
|
+
* **readme:** clarify transfer coverage and examples ([5c00306](https://github.com/iwonz/ywtc/commit/5c00306b19f5c1e9c04c955666ce435d08202df9))
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### Maintenance
|
|
19
|
+
|
|
20
|
+
* **homebrew:** update formula to v3.3.0 ([86c587c](https://github.com/iwonz/ywtc/commit/86c587c1b19fa98b1e3546f3f4bbd1a2097551f5))
|
|
21
|
+
* **release:** retry comment archive pipeline ([783c478](https://github.com/iwonz/ywtc/commit/783c47807184d577108d853f2101fbd225d223e4))
|
|
22
|
+
* **release:** retry with valid commit message ([1fb3e78](https://github.com/iwonz/ywtc/commit/1fb3e787d7037d7367bde560c8e4bc34c83cbec6))
|
|
23
|
+
|
|
24
|
+
## [3.3.0](https://github.com/iwonz/ywtc/compare/v3.2.2...v3.3.0) (2026-10-15)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
### Features
|
|
28
|
+
|
|
29
|
+
* **migration:** discover complete source subtrees ([c374df5](https://github.com/iwonz/ywtc/commit/c374df562d30008f1365a699de7f73692ddf2144))
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
### Continuous Integration
|
|
33
|
+
|
|
34
|
+
* **release:** retrigger validated release workflow ([393b385](https://github.com/iwonz/ywtc/commit/393b38522ab6215202b216df0d3c7a323bab9a9e))
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
### Maintenance
|
|
38
|
+
|
|
39
|
+
* **homebrew:** update formula to v3.2.2 ([6ac0913](https://github.com/iwonz/ywtc/commit/6ac0913ddc53ddf91c0b5f709f710d10b88df46d))
|
|
40
|
+
|
|
5
41
|
## [3.2.2](https://github.com/iwonz/ywtc/compare/v3.2.1...v3.2.2) (2026-10-15)
|
|
6
42
|
|
|
7
43
|
|
package/README.md
CHANGED
|
@@ -12,16 +12,30 @@
|
|
|
12
12
|
|
|
13
13
|
## Возможности
|
|
14
14
|
|
|
15
|
-
|
|
|
15
|
+
| Исходный материал | Как переносится |
|
|
16
16
|
| --- | --- |
|
|
17
|
-
| Страницы и
|
|
18
|
-
| Заголовки,
|
|
19
|
-
|
|
|
20
|
-
|
|
|
21
|
-
|
|
|
22
|
-
|
|
|
23
|
-
|
|
|
24
|
-
|
|
|
17
|
+
| Страницы и структура | Одна страница, полное структурное поддерево или граф связанных страниц. Иерархия восстанавливается, циклы обрабатываются без повторного переноса. |
|
|
18
|
+
| Текст и оформление | Заголовки, абзацы, базовое начертание, списки, цитаты, разделители, inline/preformatted code и обычные таблицы преобразуются в нативную или семантически эквивалентную разметку destination. |
|
|
19
|
+
| Ссылки и якоря | Ссылки между выбранными страницами переписываются на destination, якоря сохраняются. Внешние ссылки и ссылки за пределы выбранного набора остаются исходными. |
|
|
20
|
+
| Вложения | Переносятся все доступные через API для скачивания файлы, включая PNG/JPEG/GIF/WebP/SVG, PDF, ZIP, DOC/DOCX, XLS/XLSX и PPT/PPTX. Файлы передаются потоково, совпадения имён разрешаются стабильно, размер и SHA-256 проверяются. |
|
|
21
|
+
| Изображения | Прикреплённые изображения становятся attachments destination или локальными файлами экспорта. Внешние изображения остаются внешними; подписи и размеры сохраняются, если destination это поддерживает. |
|
|
22
|
+
| Специальная разметка Yandex Wiki | Notes становятся `info`/`tip`/`warning`, cuts — `expand`, tabs — статическими секциями с заголовками, tree — `children` macro или статической навигацией, Grid — статической таблицей. |
|
|
23
|
+
| Специальная разметка Confluence | Безопасный Storage Format сохраняется при переносе между Confluence. В других направлениях code становится блоком кода, info/tip/warning/note — callout, expand — раскрываемым или статическим блоком, anchor — якорем; остальные macros получают fallback. |
|
|
24
|
+
| Комментарии | По умолчанию все доступные комментарии страницы собираются в один архивный комментарий: отдельные раскрываемые ветки сохраняют участников, авторов, даты, статусы, inline-контекст, удалённые записи и вложенность ответов. Вложения, на которые есть ссылки в тексте комментариев, складываются в один проверяемый ZIP с hash-prefixed именами и manifest. Для Markdown/HTML создаются локальные секции и ZIP. |
|
|
25
|
+
| Конструкции без точного эквивалента | Создаётся читаемый fallback и сохраняется raw snapshot. Проверка destination отражает упрощения как degradation или `partial`, поэтому потеря не маскируется успешным статусом. |
|
|
26
|
+
|
|
27
|
+
### Не переносится
|
|
28
|
+
|
|
29
|
+
| Ограничение | Поведение ywtc |
|
|
30
|
+
| --- | --- |
|
|
31
|
+
| История версий | Переносится только актуальное содержимое страницы. |
|
|
32
|
+
| Реакции на комментарии | Не копируются и не влияют на список участников архива. |
|
|
33
|
+
| Комментарии непосредственно к attachments, blog posts и custom content | Не входят в архив страницы; читаются только footer/inline page comments. |
|
|
34
|
+
| Пользовательские сущности, watchers, права и ограничения доступа | Не создаются; исходное авторство комментариев сохраняется в архивном тексте, а destination-объекты создаются пользователем текущего токена и наследуют права destination. |
|
|
35
|
+
| Удалённые, недоступные или не возвращённые source API страницы | Не восстанавливаются; недоступность и пропуски фиксируются в state и отчёте. |
|
|
36
|
+
| Внешние файлы и изображения, которых нет среди доступных для скачивания ресурсов | Не копируются; сохраняется внешняя или исходная ссылка. |
|
|
37
|
+
| Активные скрипты, iframe, формы и интерактивное поведение embed-объектов | Не исполняются в destination; вместо них сохраняется безопасное статическое представление или raw snapshot. |
|
|
38
|
+
| Пиксельная идентичность и поведение vendor-specific элементов без эквивалента | Используется ближайшее семантическое представление; различия явно отмечаются в отчёте. |
|
|
25
39
|
|
|
26
40
|
## Установка
|
|
27
41
|
|
|
@@ -165,6 +179,8 @@ Confluence Server, Data Center Basic Auth и OAuth app-flow не поддерж
|
|
|
165
179
|
| `--source-profile <name>` | `doctor`, `migrate` | при неоднозначном коротком locator | Профиль source из `connections` |
|
|
166
180
|
| `--destination-profile <name>` | `doctor`, `migrate` | при неоднозначном remote locator | Профиль destination; несовместим с файловым экспортом |
|
|
167
181
|
| `--scope <mode>` | `doctor`, `migrate` | `page`, `subtree` (default), `linked` | Граница выбора страниц |
|
|
182
|
+
| `--source-status <status>` | `doctor`, `migrate` | `all` (default) или `current` | Статус автоматически обнаруживаемых страниц; явно заданный root включается всегда |
|
|
183
|
+
| `--comments`, `--no-comments` | `doctor`, `migrate` | комментарии включены по умолчанию | Архивировать page comments или полностью отключить их чтение и запись |
|
|
168
184
|
| `--format <format>` | `doctor`, `migrate` | `markdown` или `html` | Делает destination файловым каталогом |
|
|
169
185
|
| `--archive` | `migrate` | только вместе с `--format` | Дополнительно создать ZIP рядом с каталогом |
|
|
170
186
|
| `--dry-run` | `migrate` | default `false` | Discovery и план без записи в destination |
|
|
@@ -190,73 +206,62 @@ Confluence Server, Data Center Basic Auth и OAuth app-flow не поддерж
|
|
|
190
206
|
### Scope
|
|
191
207
|
|
|
192
208
|
- `page` — только исходная страница.
|
|
193
|
-
- `subtree` — страница и все структурные
|
|
209
|
+
- `subtree` — страница и все доступные структурные потомки до последнего уровня; default. С `all` Yandex Wiki включает `actual` и `obsolete`, а с `current` — только `actual`. Confluence переносит страницы, доступные через hierarchy API; archived, trashed и historical versions могут не возвращаться этим API.
|
|
194
210
|
- `linked` — детерминированный BFS по внутренним ссылкам и page/include references до фиксированной точки. Циклы завершаются безопасно, каждая страница обрабатывается один раз; внешние и недоступные ссылки не обходятся и попадают в отчёт.
|
|
195
211
|
|
|
196
212
|
## Частые примеры
|
|
197
213
|
|
|
198
214
|
```bash
|
|
199
|
-
#
|
|
200
|
-
ywtc
|
|
201
|
-
|
|
202
|
-
# Неинтерактивная инициализация для ручного или автоматизированного заполнения YAML
|
|
203
|
-
ywtc init --workdir ./migration
|
|
215
|
+
# Перенести всё структурное поддерево
|
|
216
|
+
ywtc migrate --source https://wiki.example.com/team/start \
|
|
217
|
+
--destination https://confluence.example.com/confluence/pages/viewpage.action?pageId=123
|
|
204
218
|
|
|
205
|
-
#
|
|
219
|
+
# Перенести граф рекурсивно связанных страниц
|
|
206
220
|
ywtc migrate --source https://wiki.example.com/team/start \
|
|
207
221
|
--destination https://confluence.example.com/confluence/pages/viewpage.action?pageId=123 \
|
|
208
222
|
--scope linked
|
|
209
223
|
|
|
210
|
-
#
|
|
211
|
-
ywtc migrate --source-profile confluence-prod --source 123456 \
|
|
212
|
-
--destination-profile wiki-prod --destination team/archive
|
|
213
|
-
|
|
214
|
-
# Yandex Wiki → Yandex Wiki: одна страница
|
|
215
|
-
ywtc migrate --source-profile wiki-prod --source team/start \
|
|
216
|
-
--destination-profile wiki-archive --destination archive/start --scope page
|
|
217
|
-
|
|
218
|
-
# Confluence → Confluence: новый state в отдельном workspace
|
|
219
|
-
ywtc migrate --workdir ./migration --source-profile confluence-prod --source 123456 \
|
|
220
|
-
--destination-profile confluence-archive --destination 654321 --fresh
|
|
221
|
-
|
|
222
|
-
# Автономный HTML и ZIP
|
|
223
|
-
ywtc migrate --source-profile confluence-prod --source 123456 \
|
|
224
|
-
--destination ./exports/knowledge-base --format html --scope linked --archive
|
|
225
|
-
|
|
226
|
-
# Markdown dry-run
|
|
227
|
-
ywtc migrate --source-profile wiki-prod --source team/start \
|
|
228
|
-
--destination ./exports/knowledge-base --format markdown --dry-run
|
|
229
|
-
|
|
230
|
-
# Миграция с автоматическим открытием итогового отчёта
|
|
224
|
+
# Перенести только исходную страницу
|
|
231
225
|
ywtc migrate --source https://wiki.example.com/team/start \
|
|
232
226
|
--destination https://confluence.example.com/confluence/pages/viewpage.action?pageId=123 \
|
|
233
|
-
--
|
|
227
|
+
--scope page
|
|
234
228
|
|
|
235
|
-
#
|
|
236
|
-
ywtc
|
|
229
|
+
# Создать автономный HTML-экспорт
|
|
230
|
+
ywtc migrate --source https://wiki.example.com/team/start \
|
|
231
|
+
--destination ./exports/knowledge-base \
|
|
232
|
+
--format html
|
|
233
|
+
|
|
234
|
+
# Открыть последний корректный отчёт
|
|
237
235
|
ywtc reports open last
|
|
238
236
|
```
|
|
239
237
|
|
|
240
|
-
Wizard проверяет только доступность API и авторизацию без страниц и внешних записей. `doctor` принимает те же endpoints, profiles, `scope` и `format`: без endpoints он проверяет workspace, конфигурацию и секреты, а с обоими endpoints выполняет page-specific read-only capability-preflight.
|
|
238
|
+
Wizard проверяет только доступность API и авторизацию без страниц и внешних записей. `doctor` принимает те же endpoints, profiles, `scope`, `source-status` и `format`: без endpoints он проверяет workspace, конфигурацию и секреты, а с обоими endpoints выполняет page-specific read-only capability-preflight.
|
|
241
239
|
|
|
242
240
|
## Файловый экспорт
|
|
243
241
|
|
|
244
242
|
Markdown создаёт `index.md`, `pages/`, `attachments/`, `.ywtc-export.json` и, при деградациях, `_source/`. HTML создаёт автономный адаптивный сайт с локальным `assets/site.css`; он работает через `file://` и на static hosting без CDN или внешнего runtime.
|
|
245
243
|
|
|
244
|
+
При включённых комментариях каждая страница получает секцию `Комментарии` с раскрываемыми ветками. Связанные из комментариев файлы находятся в одном ZIP рядом с attachments страницы; `manifest.json` внутри ZIP связывает source comment ID, исходную ссылку, исходное и архивное имя, размер и SHA-256.
|
|
245
|
+
|
|
246
246
|
Экспорт сначала строится в staging-каталоге. Существующий каталог заменяется только при строгом актуальном manifest с `tool: ywtc` и той же canonical identity, а прежний каталог сохраняется как timestamped backup. `--archive` оставляет каталог и создаёт новый ZIP, не перезаписывая существующий архив.
|
|
247
247
|
|
|
248
248
|
## State
|
|
249
249
|
|
|
250
|
-
По умолчанию state хранится в `<workdir>/.states/<automatic-id>.json`. ID строится из канонических профилей и ID source/destination, а для файлового экспорта также из формата; форма locator и `
|
|
250
|
+
По умолчанию state хранится в `<workdir>/.states/<automatic-id>.json`. ID строится из канонических профилей и ID source/destination, а для файлового экспорта также из формата; форма locator, `scope` и `source-status` на ID не влияют. State имеет единственный строгий актуальный формат без поля версии. Несоответствующий файл не преобразуется и не изменяется. Относительный `--state` разрешается внутри workspace, выход за его границы запрещён.
|
|
251
251
|
|
|
252
252
|
### Повторные запуски
|
|
253
253
|
|
|
254
254
|
- Одинаковые source и destination автоматически подхватывают один state независимо от формы URL/ID/slug.
|
|
255
|
+
- Переключение `current → all` расширяет тот же state новыми страницами без дубликатов; обратное переключение не удаляет mappings вне текущего выбора.
|
|
256
|
+
- Если ранее страница была создана под временно ближайшим выбранным предком, повторный запуск безопасно перемещает неизменённую страницу под найденного родителя; пользовательские изменения дают `conflict`.
|
|
255
257
|
- Уже сопоставленные страницы и вложения сверяются по ID, фактическому размеру и SHA-256; проверенный cache повторно не скачивается.
|
|
256
258
|
- Неудачные mappings вложений автоматически получают безопасные уникальные имена и повторяются без `--fresh`.
|
|
257
259
|
- Временный `404` подтверждённой destination-страницы повторяется с backoff; устойчиво пропавшая mapping восстанавливается под ожидаемым родителем с сохранением прежнего ID в state.
|
|
258
260
|
- Страница с прежним неизменённым служебным placeholder ywtc автоматически получает полноценный source-derived контент.
|
|
259
261
|
- Ошибка отдельного файла оставляет полный текст и source-ссылку, фиксирует `partial` и повторяет ресурс при следующем запуске.
|
|
262
|
+
- Неизменённые архивы комментариев и ZIP проверяются и переиспользуются без дубликатов. Confluence-архив обновляется, а Yandex Wiki при изменении source получает новую ревизию, поскольку Public API не предоставляет update comments.
|
|
263
|
+
- Ручное изменение destination-комментария даёт `conflict`; удалённый комментарий создаётся заново. Исчезнувшие из доступного source API комментарии отмечаются `stale` и автоматически не удаляются.
|
|
264
|
+
- Запуск с `--no-comments` не обращается к comment API и не удаляет ранее созданные архивы; следующий обычный запуск дополнит тот же state.
|
|
260
265
|
- Страница, изменённая вручную после прошлого запуска, получает `conflict` и не перезаписывается.
|
|
261
266
|
- `--fresh` игнорирует mappings; перед live-run прежний state сохраняется как backup, а destination может получить новые объекты.
|
|
262
267
|
- Удалённые из source объекты автоматически не удаляются из destination.
|
|
@@ -267,7 +272,7 @@ Markdown создаёт `index.md`, `pages/`, `attachments/`, `.ywtc-export.json
|
|
|
267
272
|
|
|
268
273
|
Каждый запуск создаёт `<workdir>/.states/reports/<run-id>/index.html` и `report.json`, затем печатает run ID, кликабельный `file://` URL и готовую команду повторного открытия. `--open-report` сразу открывает отчёт; `ywtc reports list` показывает историю, `ywtc reports open <run-id>` открывает конкретный, а `ywtc reports open last` или `ywtc reports open` — последний корректный.
|
|
269
274
|
|
|
270
|
-
Отчёт отдельно показывает
|
|
275
|
+
Отчёт отдельно показывает root, effective `source-status`, сколько descendants вернул source, сколько выбрано и исключено, максимальную глубину, hierarchy gaps и результаты восстановления родителей. Количество страниц, файлов и page comment archives сверяется с исчерпывающими статусами; для комментариев отдельно видны ветки, записи, участники, вложения, байты, revisions, stale/conflict/fallback и фактически прочитанный destination preview. Source bytes не смешиваются с подтверждёнными transferred bytes, а неизвестные размеры отмечаются явно. Ошибки, конфликты, retryable failures и деградации привязаны к конкретной странице и объекту. HTML/JSON, итог терминала и `reports list` используют одинаковые счётчики.
|
|
271
276
|
|
|
272
277
|
Итоговый статус запуска: `completed`, `completed-with-warnings`, `partial`, `failed`, `cancelled` или `interrupted`. Provider-aware verification допускает безопасные различия сериализации, отмечает значимое упрощение оформления как `partial`, а потерю текста, ссылок, ячеек таблиц, кода, изображений, вложений или anchors — как ошибку. Технический статус `skeleton-created` уже содержит source-derived bootstrap, а не progress-placeholder.
|
|
273
278
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ConfluenceConnectionProfile } from '../config.js';
|
|
2
|
-
import type { AdapterCapabilities, DestinationAdapter, DestinationContainer, DestinationPage, PageReference, SourceAdapter, SourcePage, SourceResource, UploadedResource } from '../domain.js';
|
|
2
|
+
import type { AdapterCapabilities, CommentInventory, DestinationAdapter, DestinationComment, DestinationContainer, DestinationPage, PageReference, SourceAdapter, SourceStatus, SourcePage, SourceResource, UploadedResource } from '../domain.js';
|
|
3
3
|
import type { ConfluenceApi } from '../types.js';
|
|
4
4
|
export declare class ConfluenceAdapter implements SourceAdapter, DestinationAdapter {
|
|
5
5
|
readonly profile: ConfluenceConnectionProfile;
|
|
@@ -14,12 +14,29 @@ export declare class ConfluenceAdapter implements SourceAdapter, DestinationAdap
|
|
|
14
14
|
}>;
|
|
15
15
|
resolvePage(locator: string): Promise<SourcePage>;
|
|
16
16
|
getPage(id: string): Promise<SourcePage>;
|
|
17
|
-
|
|
17
|
+
supportsSourceStatus(_scope: import('../domain.js').TransferScope, _status: SourceStatus): boolean;
|
|
18
|
+
getDescendants(page: SourcePage, options: {
|
|
19
|
+
status: SourceStatus;
|
|
20
|
+
}): Promise<{
|
|
21
|
+
pages: SourcePage[];
|
|
22
|
+
returned: number;
|
|
23
|
+
excluded: {
|
|
24
|
+
id: string;
|
|
25
|
+
locator: string;
|
|
26
|
+
title: string;
|
|
27
|
+
reason: "source-status";
|
|
28
|
+
status: string;
|
|
29
|
+
}[];
|
|
30
|
+
effectiveStatus: SourceStatus;
|
|
31
|
+
notes: string[];
|
|
32
|
+
}>;
|
|
18
33
|
resolveReference(from: SourcePage, reference: PageReference): Promise<SourcePage | undefined>;
|
|
19
34
|
listResources(page: SourcePage): Promise<SourceResource[]>;
|
|
35
|
+
readComments(page: SourcePage): Promise<CommentInventory>;
|
|
20
36
|
downloadResource(resource: SourceResource, destination: string): Promise<import("../types.js").DownloadedFile>;
|
|
21
37
|
resolveContainer(locator: string): Promise<DestinationContainer>;
|
|
22
38
|
findChild(container: DestinationContainer | DestinationPage, title: string): Promise<DestinationPage | undefined>;
|
|
39
|
+
findTitleConflict(container: DestinationContainer | DestinationPage, title: string): Promise<DestinationPage | undefined>;
|
|
23
40
|
findRecoverablePage(container: DestinationContainer | DestinationPage, title: string): Promise<DestinationPage | undefined>;
|
|
24
41
|
createPage(input: {
|
|
25
42
|
container: DestinationContainer | DestinationPage;
|
|
@@ -32,6 +49,11 @@ export declare class ConfluenceAdapter implements SourceAdapter, DestinationAdap
|
|
|
32
49
|
body: string;
|
|
33
50
|
expectedFingerprint?: string;
|
|
34
51
|
}): Promise<DestinationPage>;
|
|
52
|
+
reparentPage(input: {
|
|
53
|
+
page: DestinationPage;
|
|
54
|
+
parent: DestinationContainer | DestinationPage;
|
|
55
|
+
expectedFingerprint?: string;
|
|
56
|
+
}): Promise<DestinationPage>;
|
|
35
57
|
uploadResource(input: {
|
|
36
58
|
page: DestinationPage;
|
|
37
59
|
name: string;
|
|
@@ -49,4 +71,17 @@ export declare class ConfluenceAdapter implements SourceAdapter, DestinationAdap
|
|
|
49
71
|
verifyPage(page: DestinationPage): Promise<DestinationPage>;
|
|
50
72
|
renderPageReference(page: DestinationPage, label: string, anchor?: string): string;
|
|
51
73
|
renderResourceReference(resource: UploadedResource, label: string, image: boolean): string;
|
|
74
|
+
findArchiveComment(page: DestinationPage, fingerprint?: string): Promise<DestinationComment | undefined>;
|
|
75
|
+
createArchiveComment(input: {
|
|
76
|
+
page: DestinationPage;
|
|
77
|
+
body: string;
|
|
78
|
+
}): Promise<DestinationComment>;
|
|
79
|
+
updateArchiveComment(input: {
|
|
80
|
+
comment: DestinationComment;
|
|
81
|
+
body: string;
|
|
82
|
+
}): Promise<DestinationComment>;
|
|
83
|
+
readArchiveComment(input: {
|
|
84
|
+
page: DestinationPage;
|
|
85
|
+
commentId: string;
|
|
86
|
+
}): Promise<DestinationComment>;
|
|
52
87
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { createHash } from 'node:crypto';
|
|
2
2
|
import { createReadStream } from 'node:fs';
|
|
3
3
|
import { extractPageReferences } from '../content-model.js';
|
|
4
|
+
import { normalizeCommentForest } from '../comments.js';
|
|
4
5
|
const capabilities = {
|
|
5
6
|
readPages: true,
|
|
6
7
|
readHierarchy: true,
|
|
@@ -8,6 +9,10 @@ const capabilities = {
|
|
|
8
9
|
writePages: true,
|
|
9
10
|
writeResources: true,
|
|
10
11
|
verifyWrites: true,
|
|
12
|
+
reparentPages: true,
|
|
13
|
+
readComments: true,
|
|
14
|
+
writeComments: true,
|
|
15
|
+
updateComments: true,
|
|
11
16
|
};
|
|
12
17
|
function canonical(profile, id) {
|
|
13
18
|
return `${profile.name}:confluence:${id}`;
|
|
@@ -31,6 +36,8 @@ function sourcePage(profile, client, page) {
|
|
|
31
36
|
locator: page.id,
|
|
32
37
|
url: client.pageWebUrl(page),
|
|
33
38
|
...(page.ancestors?.at(-1)?.id ? { parentId: page.ancestors.at(-1).id } : {}),
|
|
39
|
+
...(page.ancestors?.length ? { ancestorIds: page.ancestors.map((ancestor) => ancestor.id) } : {}),
|
|
40
|
+
...(page.status ? { sourceStatus: page.status === 'current' ? 'current' : 'non-current' } : {}),
|
|
34
41
|
space: page.space.key,
|
|
35
42
|
rawContent,
|
|
36
43
|
rawFormat: 'confluence-storage',
|
|
@@ -57,6 +64,25 @@ function destinationPage(profile, client, page) {
|
|
|
57
64
|
contentLength: Buffer.byteLength(content),
|
|
58
65
|
};
|
|
59
66
|
}
|
|
67
|
+
function commentAuthor(value) {
|
|
68
|
+
return {
|
|
69
|
+
providerId: value?.accountId ?? value?.userKey ?? value?.username ?? value?.email ?? 'unknown',
|
|
70
|
+
...(value?.displayName ? { displayName: value.displayName } : {}),
|
|
71
|
+
...(value?.username ? { username: value.username } : {}),
|
|
72
|
+
...(value?.publicName ? { publicName: value.publicName } : {}),
|
|
73
|
+
...(value?.email ? { email: value.email } : {}),
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
function destinationComment(pageId, comment) {
|
|
77
|
+
const body = comment.body?.storage?.value ?? '';
|
|
78
|
+
return {
|
|
79
|
+
id: comment.id,
|
|
80
|
+
pageId,
|
|
81
|
+
body,
|
|
82
|
+
...(comment.version?.number ? { version: String(comment.version.number) } : {}),
|
|
83
|
+
fingerprint: contentFingerprint(body),
|
|
84
|
+
};
|
|
85
|
+
}
|
|
60
86
|
export class ConfluenceAdapter {
|
|
61
87
|
profile;
|
|
62
88
|
client;
|
|
@@ -76,9 +102,34 @@ export class ConfluenceAdapter {
|
|
|
76
102
|
async getPage(id) {
|
|
77
103
|
return sourcePage(this.profile, this.client, await this.client.getPage(id));
|
|
78
104
|
}
|
|
79
|
-
|
|
105
|
+
supportsSourceStatus(_scope, _status) {
|
|
106
|
+
return true;
|
|
107
|
+
}
|
|
108
|
+
async getDescendants(page, options) {
|
|
80
109
|
const descendants = await this.client.getDescendants(page.id);
|
|
81
|
-
|
|
110
|
+
const hydrated = await Promise.all(descendants.map(async (item) => sourcePage(this.profile, this.client, item.body?.storage?.value === undefined ? await this.client.getPage(item.id) : item)));
|
|
111
|
+
if (options.status === 'current') {
|
|
112
|
+
const unknown = hydrated.filter((item) => item.sourceStatus === undefined);
|
|
113
|
+
if (unknown.length > 0) {
|
|
114
|
+
throw new Error(`Confluence hierarchy did not expose status for ${unknown.length} descendant page(s); --source-status current cannot be determined reliably`);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
const pages = options.status === 'current'
|
|
118
|
+
? hydrated.filter((item) => item.sourceStatus === 'current')
|
|
119
|
+
: hydrated;
|
|
120
|
+
return {
|
|
121
|
+
pages,
|
|
122
|
+
returned: hydrated.length,
|
|
123
|
+
excluded: options.status === 'current'
|
|
124
|
+
? hydrated.filter((item) => item.sourceStatus !== 'current').map((item) => ({
|
|
125
|
+
id: item.id, locator: item.locator, title: item.title, reason: 'source-status', status: 'non-current',
|
|
126
|
+
}))
|
|
127
|
+
: [],
|
|
128
|
+
effectiveStatus: options.status,
|
|
129
|
+
notes: options.status === 'all'
|
|
130
|
+
? ['Confluence hierarchy APIs expose accessible structural pages; archived, trashed, and historical versions may be absent.']
|
|
131
|
+
: [],
|
|
132
|
+
};
|
|
82
133
|
}
|
|
83
134
|
async resolveReference(from, reference) {
|
|
84
135
|
if (reference.kind !== 'page')
|
|
@@ -126,6 +177,21 @@ export class ConfluenceAdapter {
|
|
|
126
177
|
metadata: { attachment },
|
|
127
178
|
}));
|
|
128
179
|
}
|
|
180
|
+
async readComments(page) {
|
|
181
|
+
const comments = await this.client.getPageComments(page.id);
|
|
182
|
+
return normalizeCommentForest(comments.map((comment) => ({
|
|
183
|
+
id: comment.id,
|
|
184
|
+
...(comment.parentCommentId ? { parentId: comment.parentCommentId } : {}),
|
|
185
|
+
...(comment.threadId ? { threadId: comment.threadId } : {}),
|
|
186
|
+
author: commentAuthor(comment.author),
|
|
187
|
+
...(comment.createdAt ? { createdAt: comment.createdAt } : {}),
|
|
188
|
+
body: comment.body?.storage?.value ?? (/deleted/i.test(comment.status ?? '') ? '[Комментарий удалён]' : ''),
|
|
189
|
+
...(comment.inlineContext ? { inlineContext: comment.inlineContext } : {}),
|
|
190
|
+
status: /deleted/i.test(comment.status ?? '')
|
|
191
|
+
? 'deleted'
|
|
192
|
+
: /resolved/i.test(comment.resolutionStatus ?? '') ? 'resolved' : 'open',
|
|
193
|
+
})), 'confluence-storage');
|
|
194
|
+
}
|
|
129
195
|
downloadResource(resource, destination) {
|
|
130
196
|
return this.client.downloadAttachment(resource.pageId, resource.metadata?.attachment, destination);
|
|
131
197
|
}
|
|
@@ -147,6 +213,12 @@ export class ConfluenceAdapter {
|
|
|
147
213
|
const page = destinationPage(this.profile, this.client, await this.client.getPage(found.id));
|
|
148
214
|
return page.parentId === container.id ? page : undefined;
|
|
149
215
|
}
|
|
216
|
+
async findTitleConflict(container, title) {
|
|
217
|
+
if (!container.space)
|
|
218
|
+
return this.findChild(container, title);
|
|
219
|
+
const found = await this.client.findPageByTitle(container.space, title);
|
|
220
|
+
return found ? destinationPage(this.profile, this.client, await this.client.getPage(found.id)) : undefined;
|
|
221
|
+
}
|
|
150
222
|
async findRecoverablePage(container, title) {
|
|
151
223
|
return this.findChild(container, title);
|
|
152
224
|
}
|
|
@@ -166,6 +238,26 @@ export class ConfluenceAdapter {
|
|
|
166
238
|
}
|
|
167
239
|
return destinationPage(this.profile, this.client, await this.client.updatePage({ pageId: input.page.id, title: input.title, storage: input.body }));
|
|
168
240
|
}
|
|
241
|
+
async reparentPage(input) {
|
|
242
|
+
if (input.expectedFingerprint) {
|
|
243
|
+
const current = destinationPage(this.profile, this.client, await this.client.getPage(input.page.id));
|
|
244
|
+
if (current.fingerprint !== input.expectedFingerprint) {
|
|
245
|
+
throw new Error(`Destination conflict for Confluence page ${input.page.id}: content changed since the last verified run`);
|
|
246
|
+
}
|
|
247
|
+
input.page = current;
|
|
248
|
+
}
|
|
249
|
+
const moved = destinationPage(this.profile, this.client, await this.client.updatePage({
|
|
250
|
+
pageId: input.page.id,
|
|
251
|
+
title: input.page.title,
|
|
252
|
+
storage: input.page.content ?? '',
|
|
253
|
+
parentId: input.parent.id,
|
|
254
|
+
}));
|
|
255
|
+
const verified = destinationPage(this.profile, this.client, await this.client.getPage(moved.id));
|
|
256
|
+
if (verified.parentId !== input.parent.id) {
|
|
257
|
+
throw new Error(`Confluence hierarchy verification failed for page ${input.page.id}: expected parent ${input.parent.id}, received ${verified.parentId ?? 'none'}`);
|
|
258
|
+
}
|
|
259
|
+
return verified;
|
|
260
|
+
}
|
|
169
261
|
async uploadResource(input) {
|
|
170
262
|
const uploaded = await this.client.uploadAttachment({
|
|
171
263
|
pageId: input.page.id,
|
|
@@ -209,5 +301,26 @@ export class ConfluenceAdapter {
|
|
|
209
301
|
? `<ac:image ac:alt="${label}"><ri:attachment ri:filename="${resource.name}"/></ac:image>`
|
|
210
302
|
: `<ac:link><ri:attachment ri:filename="${resource.name}"/><ac:plain-text-link-body><![CDATA[${label}]]></ac:plain-text-link-body></ac:link>`;
|
|
211
303
|
}
|
|
304
|
+
async findArchiveComment(page, fingerprint) {
|
|
305
|
+
const comments = await this.client.getPageComments(page.id);
|
|
306
|
+
const matches = comments.filter((comment) => (comment.body?.storage?.value ?? '').includes('Архив комментариев из'));
|
|
307
|
+
const match = fingerprint
|
|
308
|
+
? matches.find((comment) => (comment.body?.storage?.value ?? '').includes(fingerprint))
|
|
309
|
+
: matches.at(-1);
|
|
310
|
+
return match ? destinationComment(page.id, match) : undefined;
|
|
311
|
+
}
|
|
312
|
+
async createArchiveComment(input) {
|
|
313
|
+
return destinationComment(input.page.id, await this.client.createComment({ pageId: input.page.id, storage: input.body }));
|
|
314
|
+
}
|
|
315
|
+
async updateArchiveComment(input) {
|
|
316
|
+
return destinationComment(input.comment.pageId, await this.client.updateComment({
|
|
317
|
+
commentId: input.comment.id,
|
|
318
|
+
storage: input.body,
|
|
319
|
+
...(input.comment.version ? { version: Number(input.comment.version) } : {}),
|
|
320
|
+
}));
|
|
321
|
+
}
|
|
322
|
+
async readArchiveComment(input) {
|
|
323
|
+
return destinationComment(input.page.id, await this.client.getComment(input.commentId));
|
|
324
|
+
}
|
|
212
325
|
}
|
|
213
326
|
//# sourceMappingURL=confluence.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"confluence.js","sourceRoot":"","sources":["../../src/adapters/confluence.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"confluence.js","sourceRoot":"","sources":["../../src/adapters/confluence.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { YandexConnectionProfile } from '../config.js';
|
|
2
|
-
import type { AdapterCapabilities, DestinationAdapter, DestinationContainer, DestinationPage, PageReference, SourceAdapter, SourcePage, SourceResource, UploadedResource } from '../domain.js';
|
|
2
|
+
import type { AdapterCapabilities, CommentInventory, DestinationAdapter, DestinationComment, DestinationContainer, DestinationPage, PageReference, SourceAdapter, SourceStatus, SourcePage, SourceResource, UploadedResource } from '../domain.js';
|
|
3
3
|
import type { YandexWikiClient } from '../clients/yandex-wiki.js';
|
|
4
4
|
export declare class YandexAdapter implements SourceAdapter, DestinationAdapter {
|
|
5
5
|
readonly profile: YandexConnectionProfile;
|
|
@@ -13,9 +13,24 @@ export declare class YandexAdapter implements SourceAdapter, DestinationAdapter
|
|
|
13
13
|
}>;
|
|
14
14
|
resolvePage(locator: string): Promise<SourcePage>;
|
|
15
15
|
getPage(id: string): Promise<SourcePage>;
|
|
16
|
-
|
|
16
|
+
supportsSourceStatus(scope: import('../domain.js').TransferScope, status: SourceStatus): boolean;
|
|
17
|
+
getDescendants(page: SourcePage, options: {
|
|
18
|
+
status: SourceStatus;
|
|
19
|
+
}): Promise<{
|
|
20
|
+
pages: SourcePage[];
|
|
21
|
+
returned: number;
|
|
22
|
+
excluded: {
|
|
23
|
+
id: string;
|
|
24
|
+
locator: string;
|
|
25
|
+
reason: "source-status";
|
|
26
|
+
status: string;
|
|
27
|
+
}[];
|
|
28
|
+
effectiveStatus: SourceStatus;
|
|
29
|
+
notes: never[];
|
|
30
|
+
}>;
|
|
17
31
|
resolveReference(from: SourcePage, reference: PageReference): Promise<SourcePage | undefined>;
|
|
18
32
|
listResources(page: SourcePage): Promise<SourceResource[]>;
|
|
33
|
+
readComments(page: SourcePage): Promise<CommentInventory>;
|
|
19
34
|
downloadResource(resource: SourceResource, destination: string): Promise<import("../types.js").DownloadedFile>;
|
|
20
35
|
resolveContainer(locator: string): Promise<DestinationContainer>;
|
|
21
36
|
private childSlug;
|
|
@@ -48,4 +63,13 @@ export declare class YandexAdapter implements SourceAdapter, DestinationAdapter
|
|
|
48
63
|
verifyPage(page: DestinationPage): Promise<DestinationPage>;
|
|
49
64
|
renderPageReference(page: DestinationPage, label: string, anchor?: string): string;
|
|
50
65
|
renderResourceReference(resource: UploadedResource, label: string, image: boolean): string;
|
|
66
|
+
findArchiveComment(page: DestinationPage, fingerprint?: string): Promise<DestinationComment | undefined>;
|
|
67
|
+
createArchiveComment(input: {
|
|
68
|
+
page: DestinationPage;
|
|
69
|
+
body: string;
|
|
70
|
+
}): Promise<DestinationComment>;
|
|
71
|
+
readArchiveComment(input: {
|
|
72
|
+
page: DestinationPage;
|
|
73
|
+
commentId: string;
|
|
74
|
+
}): Promise<DestinationComment>;
|
|
51
75
|
}
|