@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.
Files changed (54) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/README.md +48 -43
  3. package/dist/adapters/confluence.d.ts +37 -2
  4. package/dist/adapters/confluence.js +115 -2
  5. package/dist/adapters/confluence.js.map +1 -1
  6. package/dist/adapters/yandex.d.ts +26 -2
  7. package/dist/adapters/yandex.js +113 -4
  8. package/dist/adapters/yandex.js.map +1 -1
  9. package/dist/cli-arguments.d.ts +5 -1
  10. package/dist/cli-arguments.js +10 -0
  11. package/dist/cli-arguments.js.map +1 -1
  12. package/dist/cli.js +16 -6
  13. package/dist/cli.js.map +1 -1
  14. package/dist/clients/confluence-cloud.d.ts +17 -1
  15. package/dist/clients/confluence-cloud.js +116 -0
  16. package/dist/clients/confluence-cloud.js.map +1 -1
  17. package/dist/clients/confluence.d.ts +13 -1
  18. package/dist/clients/confluence.js +89 -0
  19. package/dist/clients/confluence.js.map +1 -1
  20. package/dist/clients/yandex-wiki.d.ts +13 -2
  21. package/dist/clients/yandex-wiki.js +67 -5
  22. package/dist/clients/yandex-wiki.js.map +1 -1
  23. package/dist/comments.d.ts +66 -0
  24. package/dist/comments.js +478 -0
  25. package/dist/comments.js.map +1 -0
  26. package/dist/content-model.js +3 -2
  27. package/dist/content-model.js.map +1 -1
  28. package/dist/doctor.d.ts +14 -2
  29. package/dist/doctor.js +26 -4
  30. package/dist/doctor.js.map +1 -1
  31. package/dist/domain.d.ts +116 -2
  32. package/dist/domain.js +7 -1
  33. package/dist/domain.js.map +1 -1
  34. package/dist/filesystem-export.d.ts +16 -1
  35. package/dist/filesystem-export.js +88 -2
  36. package/dist/filesystem-export.js.map +1 -1
  37. package/dist/graph.d.ts +2 -1
  38. package/dist/graph.js +105 -15
  39. package/dist/graph.js.map +1 -1
  40. package/dist/issues.d.ts +1 -1
  41. package/dist/migrator.d.ts +4 -1
  42. package/dist/migrator.js +638 -27
  43. package/dist/migrator.js.map +1 -1
  44. package/dist/report-catalog.d.ts +30 -1
  45. package/dist/report-catalog.js +26 -0
  46. package/dist/report-catalog.js.map +1 -1
  47. package/dist/report.d.ts +47 -3
  48. package/dist/report.js +66 -3
  49. package/dist/report.js.map +1 -1
  50. package/dist/state.d.ts +42 -2
  51. package/dist/state.js +67 -1
  52. package/dist/state.js.map +1 -1
  53. package/dist/types.d.ts +79 -1
  54. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"yandex-wiki.js","sourceRoot":"","sources":["../../src/clients/yandex-wiki.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"yandex-wiki.js","sourceRoot":"","sources":["../../src/clients/yandex-wiki.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ import type { CommentAttachmentReference, CommentAuthor, CommentInventory, DestinationPage, ProviderKind, RawContentFormat, SourcePage, SourceResource } from './domain.js';
2
+ export interface FlatComment {
3
+ id: string;
4
+ parentId?: string;
5
+ threadId?: string;
6
+ author: CommentAuthor;
7
+ createdAt?: string;
8
+ body: string;
9
+ inlineContext?: string;
10
+ status?: 'open' | 'resolved' | 'deleted';
11
+ }
12
+ export interface CommentArchiveFile {
13
+ commentId: string;
14
+ reference: string;
15
+ originalName: string;
16
+ path: string;
17
+ size: number;
18
+ sha256: string;
19
+ }
20
+ interface CommentArchiveManifestEntry {
21
+ sourceCommentId: string;
22
+ sourceReference: string;
23
+ originalName: string;
24
+ archiveName: string;
25
+ size: number;
26
+ sha256: string;
27
+ }
28
+ export interface CommentArchiveZip {
29
+ path: string;
30
+ name: string;
31
+ size: number;
32
+ sha256: string;
33
+ files: CommentArchiveManifestEntry[];
34
+ }
35
+ export declare function normalizeCommentForest(comments: FlatComment[], format: RawContentFormat, warnings?: string[]): CommentInventory;
36
+ export declare function resolveCommentAttachmentReferences(inventory: CommentInventory, resources: SourceResource[]): void;
37
+ export interface CommentRenderContext {
38
+ sourceUrl: string;
39
+ archiveName?: string;
40
+ archiveHref?: string;
41
+ archiveReplaces?: string;
42
+ attachmentNames?: Map<string, string>;
43
+ pages?: Map<string, DestinationPage>;
44
+ sourcePages?: Map<string, SourcePage>;
45
+ presentation?: 'native' | 'quote' | 'code';
46
+ }
47
+ export declare function renderCommentArchive(inventory: CommentInventory, target: ProviderKind | 'markdown' | 'html', context: CommentRenderContext): string;
48
+ export declare function renderCommentArchiveIndex(inventory: CommentInventory, target: ProviderKind, context: CommentRenderContext & {
49
+ fullArchiveName: string;
50
+ fullArchiveHref?: string;
51
+ }): string;
52
+ export declare function verifyCommentArchive(expected: string | CommentInventory, body: string, archiveName?: string): {
53
+ ok: boolean;
54
+ differences: string[];
55
+ };
56
+ export declare function createCommentArchiveZip(input: {
57
+ pageKey: string;
58
+ fingerprint: string;
59
+ files: CommentArchiveFile[];
60
+ destinationDirectory: string;
61
+ }): Promise<CommentArchiveZip | undefined>;
62
+ export declare function commentAttachmentUses(inventory: CommentInventory): Array<{
63
+ commentId: string;
64
+ reference: CommentAttachmentReference;
65
+ }>;
66
+ export {};
@@ -0,0 +1,478 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { createReadStream, createWriteStream } from 'node:fs';
3
+ import { mkdir, stat } from 'node:fs/promises';
4
+ import path from 'node:path';
5
+ import { Transform } from 'node:stream';
6
+ import { pipeline } from 'node:stream/promises';
7
+ import { ZipArchive } from '@archiver/archiver';
8
+ import { extractPageReferences } from './content-model.js';
9
+ import { safeFilename } from './input.js';
10
+ function hash(value) {
11
+ return createHash('sha256').update(value).digest('hex');
12
+ }
13
+ function authorKey(author) {
14
+ return author.providerId || author.username || author.publicName || author.email || author.displayName || 'unknown';
15
+ }
16
+ function commentAuthorLabel(author) {
17
+ return author.displayName || author.username || author.publicName || author.email || author.providerId || 'Неизвестный автор';
18
+ }
19
+ function commentAuthorDetail(author) {
20
+ return author.username || author.publicName || author.email;
21
+ }
22
+ function extractAttachmentReferences(body, format) {
23
+ const seen = new Set();
24
+ return extractPageReferences(body, format).flatMap((reference) => {
25
+ if (reference.kind !== 'attachment' || !reference.href)
26
+ return [];
27
+ const key = `${reference.href}\0${reference.raw}`;
28
+ if (seen.has(key))
29
+ return [];
30
+ seen.add(key);
31
+ return [{ raw: reference.raw, href: reference.href, ...(reference.pageTitle ? { label: reference.pageTitle } : {}) }];
32
+ });
33
+ }
34
+ function entryFromFlat(comment, format) {
35
+ return {
36
+ id: comment.id,
37
+ ...(comment.parentId ? { parentId: comment.parentId } : {}),
38
+ threadId: comment.threadId || comment.parentId || comment.id,
39
+ author: comment.author,
40
+ ...(comment.createdAt ? { createdAt: comment.createdAt } : {}),
41
+ body: comment.body,
42
+ ...(comment.inlineContext ? { inlineContext: comment.inlineContext } : {}),
43
+ ...(comment.status ? { status: comment.status } : {}),
44
+ attachments: extractAttachmentReferences(comment.body, format),
45
+ links: extractPageReferences(comment.body, format),
46
+ replies: [],
47
+ };
48
+ }
49
+ function orderedParticipants(root) {
50
+ const result = [];
51
+ const seen = new Set();
52
+ const visit = (entry) => {
53
+ const key = authorKey(entry.author);
54
+ if (!seen.has(key)) {
55
+ seen.add(key);
56
+ result.push(entry.author);
57
+ }
58
+ for (const reply of entry.replies)
59
+ visit(reply);
60
+ };
61
+ visit(root);
62
+ return result;
63
+ }
64
+ function canonicalEntry(entry) {
65
+ return {
66
+ id: entry.id,
67
+ parentId: entry.parentId,
68
+ threadId: entry.threadId,
69
+ author: entry.author,
70
+ createdAt: entry.createdAt,
71
+ body: entry.body,
72
+ inlineContext: entry.inlineContext,
73
+ status: entry.status,
74
+ attachments: entry.attachments.map((item) => ({ href: item.href, resourceId: item.resourceId })),
75
+ replies: entry.replies.map(canonicalEntry),
76
+ };
77
+ }
78
+ function inventoryFingerprint(threads) {
79
+ return hash(JSON.stringify(threads.map((thread) => canonicalEntry(thread.root))));
80
+ }
81
+ export function normalizeCommentForest(comments, format, warnings = []) {
82
+ const unique = new Map();
83
+ for (const raw of comments) {
84
+ if (unique.has(raw.id)) {
85
+ warnings.push(`Duplicate comment ${raw.id} was returned and ignored`);
86
+ continue;
87
+ }
88
+ unique.set(raw.id, entryFromFlat(raw, format));
89
+ }
90
+ const roots = [];
91
+ const createsCycle = (entry, parent) => {
92
+ const seen = new Set([entry.id]);
93
+ let cursor = parent;
94
+ while (cursor) {
95
+ if (seen.has(cursor.id))
96
+ return true;
97
+ seen.add(cursor.id);
98
+ cursor = cursor.parentId ? unique.get(cursor.parentId) : undefined;
99
+ }
100
+ return false;
101
+ };
102
+ for (const entry of unique.values()) {
103
+ if (!entry.parentId) {
104
+ roots.push(entry);
105
+ continue;
106
+ }
107
+ const parent = unique.get(entry.parentId);
108
+ if (!parent) {
109
+ warnings.push(`Comment ${entry.id} references missing parent ${entry.parentId}; kept as a top-level orphan`);
110
+ roots.push(entry);
111
+ continue;
112
+ }
113
+ if (createsCycle(entry, parent)) {
114
+ warnings.push(`Comment reply cycle at ${entry.id} → ${parent.id}; edge was broken`);
115
+ roots.push(entry);
116
+ continue;
117
+ }
118
+ parent.replies.push(entry);
119
+ }
120
+ const sortEntries = (entries) => {
121
+ entries.sort((left, right) => (left.createdAt ?? '').localeCompare(right.createdAt ?? '') || left.id.localeCompare(right.id));
122
+ for (const entry of entries)
123
+ sortEntries(entry.replies);
124
+ };
125
+ sortEntries(roots);
126
+ const threads = roots.map((root) => ({ id: root.threadId || root.id, root, participants: orderedParticipants(root) }));
127
+ const attachments = [...unique.values()].reduce((total, entry) => total + entry.attachments.length, 0);
128
+ const participants = new Set([...unique.values()].map((entry) => authorKey(entry.author))).size;
129
+ return {
130
+ status: threads.length === 0 ? 'empty' : 'complete',
131
+ threads,
132
+ ...(threads.length > 0 ? { fingerprint: inventoryFingerprint(threads) } : {}),
133
+ comments: unique.size,
134
+ participants,
135
+ attachments,
136
+ knownBytes: 0,
137
+ unknownSizes: attachments,
138
+ warnings,
139
+ };
140
+ }
141
+ function aliasValues(resource) {
142
+ return [resource.name, resource.preferredName, resource.downloadUrl, ...(resource.referenceAliases ?? [])]
143
+ .filter((value) => Boolean(value))
144
+ .flatMap((value) => {
145
+ const aliases = [value];
146
+ try {
147
+ const url = new URL(value);
148
+ aliases.push(decodeURIComponent(url.pathname), decodeURIComponent(url.pathname.split('/').at(-1) ?? ''));
149
+ }
150
+ catch {
151
+ aliases.push(decodeURIComponent(value.split(/[?#]/, 1)[0]?.split('/').at(-1) ?? value));
152
+ }
153
+ return aliases;
154
+ });
155
+ }
156
+ export function resolveCommentAttachmentReferences(inventory, resources) {
157
+ const exact = new Map();
158
+ const byId = new Map(resources.map((resource) => [resource.id, resource]));
159
+ for (const resource of resources.filter((item) => item.kind !== 'grid')) {
160
+ for (const alias of aliasValues(resource)) {
161
+ const key = alias.trim();
162
+ if (!key)
163
+ continue;
164
+ const ids = exact.get(key) ?? new Set();
165
+ ids.add(resource.id);
166
+ exact.set(key, ids);
167
+ }
168
+ }
169
+ let knownBytes = 0;
170
+ let unknownSizes = 0;
171
+ const counted = new Set();
172
+ const visit = (entry) => {
173
+ for (const reference of entry.attachments) {
174
+ const candidates = new Set();
175
+ for (const alias of [reference.href, reference.raw, reference.label].filter((value) => Boolean(value))) {
176
+ for (const id of exact.get(alias) ?? [])
177
+ candidates.add(id);
178
+ try {
179
+ const url = new URL(alias);
180
+ for (const id of exact.get(decodeURIComponent(url.pathname)) ?? [])
181
+ candidates.add(id);
182
+ for (const id of exact.get(decodeURIComponent(url.pathname.split('/').at(-1) ?? '')) ?? [])
183
+ candidates.add(id);
184
+ }
185
+ catch {
186
+ for (const id of exact.get(decodeURIComponent(alias.split(/[?#]/, 1)[0]?.split('/').at(-1) ?? alias)) ?? [])
187
+ candidates.add(id);
188
+ }
189
+ }
190
+ if (candidates.size === 1) {
191
+ const resourceId = [...candidates][0];
192
+ reference.resourceId = resourceId;
193
+ if (!counted.has(resourceId)) {
194
+ counted.add(resourceId);
195
+ const resource = byId.get(resourceId);
196
+ if (resource?.size !== undefined)
197
+ knownBytes += resource.size;
198
+ else
199
+ unknownSizes += 1;
200
+ }
201
+ }
202
+ else {
203
+ inventory.warnings.push(candidates.size === 0
204
+ ? `Comment attachment reference could not be resolved: ${reference.href}`
205
+ : `Comment attachment reference is ambiguous: ${reference.href}`);
206
+ }
207
+ }
208
+ for (const reply of entry.replies)
209
+ visit(reply);
210
+ };
211
+ for (const thread of inventory.threads)
212
+ visit(thread.root);
213
+ inventory.knownBytes = knownBytes;
214
+ inventory.unknownSizes = unknownSizes;
215
+ inventory.attachments = counted.size;
216
+ if (inventory.threads.length > 0)
217
+ inventory.fingerprint = inventoryFingerprint(inventory.threads);
218
+ }
219
+ function decodeEntities(value) {
220
+ return value.replace(/&nbsp;/gi, ' ').replace(/&lt;/gi, '<').replace(/&gt;/gi, '>').replace(/&quot;/gi, '"').replace(/&#39;|&apos;/gi, "'").replace(/&amp;/gi, '&');
221
+ }
222
+ function readableBody(value) {
223
+ const links = value.replace(/<a\b[^>]*href=["']([^"']+)["'][^>]*>([\s\S]*?)<\/a>/gi, (_all, href, label) => `[${decodeEntities(label.replace(/<[^>]*>/g, ''))}](${href})`);
224
+ return decodeEntities(links.replace(/<br\s*\/?\s*>/gi, '\n').replace(/<\/p>/gi, '\n\n').replace(/<[^>]*>/g, '')).trim();
225
+ }
226
+ function replaceAttachmentTokens(entry, replacements) {
227
+ let body = readableBody(entry.body);
228
+ const tokens = new Map();
229
+ for (const [index, reference] of entry.attachments.entries()) {
230
+ if (!reference.resourceId)
231
+ continue;
232
+ const name = replacements.get(reference.resourceId);
233
+ if (!name)
234
+ continue;
235
+ const token = `\u0000YWTC_COMMENT_ATTACHMENT_${index}\u0000`;
236
+ body = body.replace(/\[([^\]]*)\]\(([^)]+)\)/g, (whole, _label, href) => href === reference.href ? token : whole);
237
+ body = body.replaceAll(reference.raw, token).replaceAll(reference.href, token);
238
+ tokens.set(token, `{${name}}`);
239
+ }
240
+ for (const [token, replacement] of tokens)
241
+ body = body.replaceAll(token, replacement);
242
+ return body;
243
+ }
244
+ function rewriteInternalUrls(value, pages, sourcePages) {
245
+ if (!pages || !sourcePages)
246
+ return value;
247
+ let result = value;
248
+ for (const [canonicalId, source] of sourcePages) {
249
+ const destination = pages.get(canonicalId);
250
+ if (destination)
251
+ result = result.replaceAll(source.url, destination.url);
252
+ }
253
+ return result;
254
+ }
255
+ function entryLines(entry, depth, replacements, context) {
256
+ const indent = ' '.repeat(depth);
257
+ const status = entry.status && entry.status !== 'open' ? ` · ${entry.status}` : '';
258
+ const when = entry.createdAt ? ` · ${entry.createdAt}` : '';
259
+ const header = `${indent}${commentAuthorLabel(entry.author)}${when}${status}:`;
260
+ const contextLines = entry.inlineContext ? [`${indent}> ${readableBody(entry.inlineContext).replaceAll('\n', `\n${indent}> `)}`] : [];
261
+ const body = rewriteInternalUrls(replaceAttachmentTokens(entry, replacements), context.pages, context.sourcePages);
262
+ const lines = body.split('\n').map((line) => `${indent}${line}`);
263
+ return [header, ...contextLines, ...lines, ...entry.replies.flatMap((reply) => ['', ...entryLines(reply, depth + 1, replacements, context)])];
264
+ }
265
+ function participantsText(thread) {
266
+ return thread.participants.map((author, index) => {
267
+ const label = commentAuthorLabel(author);
268
+ const detail = commentAuthorDetail(author);
269
+ return `${index + 1}. ${label}${detail && detail !== label ? ` — ${detail}` : ''}`;
270
+ }).join('\n');
271
+ }
272
+ function escapeHtml(value) {
273
+ return value.replaceAll('&', '&amp;').replaceAll('<', '&lt;').replaceAll('>', '&gt;').replaceAll('"', '&quot;').replaceAll("'", '&#39;');
274
+ }
275
+ function markdownLinksToHtml(value) {
276
+ const escaped = escapeHtml(value);
277
+ return escaped.replace(/\[([^\]]+)\]\((https?:\/\/[^)]+)\)/g, '<a href="$2">$1</a>').replace(/\n/g, '<br/>');
278
+ }
279
+ function threadText(thread, replacements, context) {
280
+ return `Участники:\n${participantsText(thread)}\n\n${entryLines(thread.root, 0, replacements, context).join('\n')}`;
281
+ }
282
+ function quoteLines(value) {
283
+ return value.split('\n').map((line) => `> ${line}`).join('\n');
284
+ }
285
+ function cdata(value) {
286
+ return value.replaceAll(']]>', ']]]]><![CDATA[>');
287
+ }
288
+ export function renderCommentArchive(inventory, target, context) {
289
+ const replacements = context.attachmentNames ?? new Map();
290
+ const fingerprint = inventory.fingerprint ?? hash('empty');
291
+ const header = `Архив комментариев из [оригинала](${context.sourceUrl}).`;
292
+ const archive = context.archiveName
293
+ ? `\n\nВложения комментариев: [${context.archiveName}](${context.archiveHref ?? context.archiveName})`
294
+ : '';
295
+ const revision = context.archiveReplaces ? `\n\nЭта ревизия заменяет архив ${context.archiveReplaces}.` : '';
296
+ const preamble = `${header}${archive}\n\nВерсия архива: ${fingerprint}${revision}`;
297
+ const threadMarkdown = inventory.threads.map((thread, index) => {
298
+ const content = threadText(thread, replacements, context);
299
+ return `<details>\n<summary>Ветка ${index + 1}</summary>\n\n${content}\n\n</details>`;
300
+ }).join('\n\n');
301
+ if (target === 'markdown')
302
+ return `${preamble}\n\n${threadMarkdown}`;
303
+ if (target === 'html') {
304
+ const threads = inventory.threads.map((thread, index) => {
305
+ const content = threadText(thread, replacements, context);
306
+ return `<details><summary>Ветка ${index + 1}</summary><div class="ywtc-comment-thread">${markdownLinksToHtml(content)}</div></details>`;
307
+ }).join('');
308
+ return `<section class="ywtc-comments"><h2>Комментарии</h2><p>${markdownLinksToHtml(preamble)}</p>${threads}</section>`;
309
+ }
310
+ if (target === 'yandex-wiki') {
311
+ if (context.presentation === 'code') {
312
+ const threads = inventory.threads.map((thread, index) => `Ветка ${index + 1}\n${threadText(thread, replacements, context)}`).join('\n\n');
313
+ return `${preamble}\n\n\`\`\`text\n${threads}\n\`\`\``;
314
+ }
315
+ if (context.presentation === 'quote') {
316
+ const threads = inventory.threads.map((thread, index) => `Ветка ${index + 1}\n${quoteLines(threadText(thread, replacements, context))}`).join('\n\n');
317
+ return `${preamble}\n\n${threads}`;
318
+ }
319
+ const threads = inventory.threads.map((thread, index) => {
320
+ const content = threadText(thread, replacements, context);
321
+ return `{% cut "Ветка ${index + 1}" %}\n${content}\n{% endcut %}`;
322
+ }).join('\n\n');
323
+ return `${preamble}\n\n${threads}`;
324
+ }
325
+ const confluenceHeader = `<p>Архив комментариев из <a href="${escapeHtml(context.sourceUrl)}">оригинала</a>.</p>`;
326
+ const confluenceArchive = context.archiveName
327
+ ? `<p>Вложения комментариев: <ac:link><ri:attachment ri:filename="${escapeHtml(context.archiveName)}"/><ac:plain-text-link-body><![CDATA[${context.archiveName}]]></ac:plain-text-link-body></ac:link></p>`
328
+ : '';
329
+ const confluenceRevision = context.archiveReplaces ? `<p>Эта ревизия заменяет архив ${escapeHtml(context.archiveReplaces)}.</p>` : '';
330
+ const preambleHtml = `${confluenceHeader}${confluenceArchive}<p>Версия архива: ${escapeHtml(fingerprint)}</p>${confluenceRevision}`;
331
+ if (context.presentation === 'code') {
332
+ const content = inventory.threads.map((thread, index) => `Ветка ${index + 1}\n${threadText(thread, replacements, context)}`).join('\n\n');
333
+ return `${preambleHtml}<ac:structured-macro ac:name="code"><ac:plain-text-body><![CDATA[${cdata(content)}]]></ac:plain-text-body></ac:structured-macro>`;
334
+ }
335
+ if (context.presentation === 'quote') {
336
+ const threads = inventory.threads.map((thread, index) => `<h4>Ветка ${index + 1}</h4><blockquote><p>${markdownLinksToHtml(threadText(thread, replacements, context))}</p></blockquote>`).join('');
337
+ return `${preambleHtml}${threads}`;
338
+ }
339
+ const threads = inventory.threads.map((thread, index) => {
340
+ const content = threadText(thread, replacements, context);
341
+ return `<ac:structured-macro ac:name="expand"><ac:parameter ac:name="title">Ветка ${index + 1}</ac:parameter><ac:rich-text-body><p>${markdownLinksToHtml(content)}</p></ac:rich-text-body></ac:structured-macro>`;
342
+ }).join('');
343
+ return `${preambleHtml}${threads}`;
344
+ }
345
+ export function renderCommentArchiveIndex(inventory, target, context) {
346
+ const fingerprint = inventory.fingerprint ?? hash('empty');
347
+ const participants = inventory.threads.flatMap((thread) => thread.participants);
348
+ const uniqueParticipants = [...new Map(participants.map((author) => [authorKey(author), author])).values()];
349
+ const lines = [
350
+ `Архив комментариев из [оригинала](${context.sourceUrl}).`,
351
+ '',
352
+ `Полный архив: [${context.fullArchiveName}](${context.fullArchiveHref ?? context.fullArchiveName})`,
353
+ ...(context.archiveName ? ['', `Вложения комментариев: [${context.archiveName}](${context.archiveHref ?? context.archiveName})`] : []),
354
+ '',
355
+ `Версия архива: ${fingerprint}`,
356
+ '',
357
+ 'Участники:',
358
+ ...uniqueParticipants.map((author, index) => `${index + 1}. ${commentAuthorLabel(author)}${commentAuthorDetail(author) && commentAuthorDetail(author) !== commentAuthorLabel(author) ? ` — ${commentAuthorDetail(author)}` : ''}`),
359
+ '',
360
+ 'Ветки:',
361
+ ...inventory.threads.map((thread, index) => `${index + 1}. ${commentAuthorLabel(thread.root.author)} · ${thread.root.createdAt ?? 'дата неизвестна'} · ${1 + countReplies(thread.root)} сообщений`),
362
+ ];
363
+ if (target === 'yandex-wiki')
364
+ return lines.join('\n');
365
+ return markdownLinksToHtml(lines.join('\n'));
366
+ }
367
+ function countReplies(entry) {
368
+ return entry.replies.reduce((total, reply) => total + 1 + countReplies(reply), 0);
369
+ }
370
+ export function verifyCommentArchive(expected, body, archiveName) {
371
+ const differences = [];
372
+ const expectedFingerprint = typeof expected === 'string' ? expected : expected.fingerprint;
373
+ const readable = readableBody(body);
374
+ if (!expectedFingerprint || !readable.includes(expectedFingerprint))
375
+ differences.push('archive fingerprint is missing');
376
+ if (archiveName && !body.includes(archiveName))
377
+ differences.push('comment attachment archive reference is missing');
378
+ if (!readable.includes('Архив комментариев из'))
379
+ differences.push('archive source header is missing');
380
+ if (typeof expected !== 'string') {
381
+ const visit = (entry) => {
382
+ const author = commentAuthorLabel(entry.author);
383
+ if (!readable.includes(author))
384
+ differences.push(`comment author is missing: ${author}`);
385
+ if (entry.createdAt && !readable.includes(entry.createdAt))
386
+ differences.push(`comment date is missing: ${entry.id}`);
387
+ if (entry.status && entry.status !== 'open' && !readable.includes(entry.status))
388
+ differences.push(`comment status is missing: ${entry.id}`);
389
+ const text = readableBody(entry.body).replace(/\[[^\]]*\]\([^)]*\)/g, ' ');
390
+ const tokens = text.toLocaleLowerCase().match(/[\p{L}\p{N}]{2,}/gu) ?? [];
391
+ const actual = readable.toLocaleLowerCase();
392
+ if (tokens.some((token) => !actual.includes(token)))
393
+ differences.push(`comment text is missing: ${entry.id}`);
394
+ for (const reply of entry.replies)
395
+ visit(reply);
396
+ };
397
+ for (const thread of expected.threads)
398
+ visit(thread.root);
399
+ }
400
+ return { ok: differences.length === 0, differences };
401
+ }
402
+ function uniqueArchiveNames(files) {
403
+ const result = new Map();
404
+ const hashes = [...new Set(files.map((file) => file.sha256))].sort();
405
+ for (const digest of hashes) {
406
+ const matching = files.find((file) => file.sha256 === digest);
407
+ let length = 12;
408
+ while (hashes.some((other) => other !== digest && other.slice(0, length) === digest.slice(0, length)))
409
+ length += 1;
410
+ result.set(digest, `${digest.slice(0, length)}-${safeFilename(matching.originalName)}`);
411
+ }
412
+ return result;
413
+ }
414
+ async function fileHash(filename) {
415
+ const digest = createHash('sha256');
416
+ let size = 0;
417
+ const meter = new Transform({ transform(chunk, _encoding, callback) {
418
+ digest.update(chunk);
419
+ size += chunk.length;
420
+ callback(null, chunk);
421
+ } });
422
+ await pipeline(createReadStream(filename), meter, new Transform({ transform(_chunk, _encoding, callback) { callback(); } }));
423
+ return { size, sha256: digest.digest('hex') };
424
+ }
425
+ export async function createCommentArchiveZip(input) {
426
+ if (input.files.length === 0)
427
+ return undefined;
428
+ for (const file of input.files) {
429
+ const actual = await fileHash(file.path);
430
+ if (actual.size !== file.size || actual.sha256 !== file.sha256) {
431
+ throw new Error(`Comment attachment integrity check failed for ${file.originalName}`);
432
+ }
433
+ }
434
+ const names = uniqueArchiveNames(input.files);
435
+ const unique = new Map();
436
+ for (const file of input.files)
437
+ if (!unique.has(file.sha256))
438
+ unique.set(file.sha256, file);
439
+ const entries = input.files.map((file) => ({
440
+ sourceCommentId: file.commentId,
441
+ sourceReference: file.reference,
442
+ originalName: file.originalName,
443
+ archiveName: names.get(file.sha256),
444
+ size: file.size,
445
+ sha256: file.sha256,
446
+ })).sort((left, right) => left.sourceCommentId.localeCompare(right.sourceCommentId) || left.sourceReference.localeCompare(right.sourceReference));
447
+ const pageKey = safeFilename(input.pageKey).slice(0, 80) || 'page';
448
+ const name = `ywtc-comments-${pageKey}-${input.fingerprint.slice(0, 12)}.zip`;
449
+ const destination = path.join(input.destinationDirectory, name);
450
+ await mkdir(input.destinationDirectory, { recursive: true, mode: 0o700 });
451
+ const archive = new ZipArchive({ zlib: { level: 9 }, forceUTC: true });
452
+ const fixedDate = new Date('1980-01-01T00:00:00.000Z');
453
+ const output = createWriteStream(destination, { mode: 0o600 });
454
+ const writing = pipeline(archive, output);
455
+ for (const [digest, file] of [...unique].sort(([left], [right]) => left.localeCompare(right))) {
456
+ archive.file(file.path, { name: names.get(digest), date: fixedDate, mode: 0o600 });
457
+ }
458
+ archive.append(`${JSON.stringify({ files: entries }, null, 2)}\n`, { name: 'manifest.json', date: fixedDate, mode: 0o600 });
459
+ await archive.finalize();
460
+ await writing;
461
+ const verified = await fileHash(destination);
462
+ const filesystemSize = (await stat(destination)).size;
463
+ if (filesystemSize !== verified.size)
464
+ throw new Error(`Comment archive size verification failed for ${name}`);
465
+ return { path: destination, name, size: verified.size, sha256: verified.sha256, files: entries };
466
+ }
467
+ export function commentAttachmentUses(inventory) {
468
+ const result = [];
469
+ const visit = (entry) => {
470
+ result.push(...entry.attachments.map((reference) => ({ commentId: entry.id, reference })));
471
+ for (const reply of entry.replies)
472
+ visit(reply);
473
+ };
474
+ for (const thread of inventory.threads)
475
+ visit(thread.root);
476
+ return result;
477
+ }
478
+ //# sourceMappingURL=comments.js.map