@iwonz/ywtc 3.2.2 → 3.3.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 +17 -0
- package/README.md +12 -4
- package/dist/adapters/confluence.d.ts +23 -2
- package/dist/adapters/confluence.js +56 -2
- package/dist/adapters/confluence.js.map +1 -1
- package/dist/adapters/yandex.d.ts +16 -2
- package/dist/adapters/yandex.js +49 -4
- package/dist/adapters/yandex.js.map +1 -1
- package/dist/cli-arguments.d.ts +3 -1
- package/dist/cli-arguments.js +4 -0
- package/dist/cli-arguments.js.map +1 -1
- package/dist/cli.js +11 -6
- package/dist/cli.js.map +1 -1
- package/dist/clients/confluence-cloud.d.ts +1 -0
- package/dist/clients/confluence-cloud.js +7 -0
- package/dist/clients/confluence-cloud.js.map +1 -1
- package/dist/clients/confluence.d.ts +1 -0
- package/dist/clients/confluence.js +1 -0
- package/dist/clients/confluence.js.map +1 -1
- package/dist/clients/yandex-wiki.d.ts +3 -1
- package/dist/clients/yandex-wiki.js +23 -5
- package/dist/clients/yandex-wiki.js.map +1 -1
- package/dist/content-model.js +3 -2
- package/dist/content-model.js.map +1 -1
- package/dist/doctor.d.ts +7 -2
- package/dist/doctor.js +8 -3
- package/dist/doctor.js.map +1 -1
- package/dist/domain.d.ts +48 -2
- package/dist/domain.js +5 -1
- package/dist/domain.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/migrator.d.ts +2 -1
- package/dist/migrator.js +153 -17
- package/dist/migrator.js.map +1 -1
- package/dist/report-catalog.d.ts +17 -0
- package/dist/report-catalog.js +14 -0
- package/dist/report-catalog.js.map +1 -1
- package/dist/report.d.ts +23 -2
- package/dist/report.js +43 -2
- package/dist/report.js.map +1 -1
- package/dist/state.d.ts +8 -2
- package/dist/state.js +25 -1
- package/dist/state.js.map +1 -1
- package/dist/types.d.ts +4 -1
- package/package.json +1 -1
package/dist/graph.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../src/graph.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../src/graph.ts"],"names":[],"mappings":"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"}
|
package/dist/migrator.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createProviderAdapter } from './adapters/factory.js';
|
|
2
2
|
import type { AppConfig } from './config.js';
|
|
3
3
|
import { type ConsistencyRetryOptions } from './consistency.js';
|
|
4
|
-
import type { TransferScope } from './domain.js';
|
|
4
|
+
import type { SourceStatus, TransferScope } from './domain.js';
|
|
5
5
|
import type { Logger } from './logger.js';
|
|
6
6
|
import type { RemoteLocator, ResolvedLocator } from './locators.js';
|
|
7
7
|
import { type MigrationReportPaths, type TransferReportSummary } from './report.js';
|
|
@@ -10,6 +10,7 @@ export interface TransferOptions {
|
|
|
10
10
|
source: RemoteLocator;
|
|
11
11
|
destination: ResolvedLocator;
|
|
12
12
|
scope: TransferScope;
|
|
13
|
+
sourceStatus?: SourceStatus;
|
|
13
14
|
dryRun: boolean;
|
|
14
15
|
archive: boolean;
|
|
15
16
|
fresh?: boolean;
|
package/dist/migrator.js
CHANGED
|
@@ -211,11 +211,12 @@ export class Migrator {
|
|
|
211
211
|
this.consistencyOptions = consistencyOptions;
|
|
212
212
|
}
|
|
213
213
|
async run(options) {
|
|
214
|
+
const sourceStatus = options.sourceStatus ?? 'all';
|
|
214
215
|
const source = this.adapterFactory(options.source.profile, this.config);
|
|
215
216
|
const destination = options.destination.type === 'remote'
|
|
216
217
|
? this.adapterFactory(options.destination.profile, this.config)
|
|
217
218
|
: undefined;
|
|
218
|
-
assertTransferCapabilities(source, destination, options.scope);
|
|
219
|
+
assertTransferCapabilities(source, destination, options.scope, sourceStatus);
|
|
219
220
|
const status = options.onStatus ?? (() => undefined);
|
|
220
221
|
status('Checking source and destination capabilities');
|
|
221
222
|
const [sourcePlatform, destinationPlatform, root, container] = await Promise.all([
|
|
@@ -239,10 +240,11 @@ export class Migrator {
|
|
|
239
240
|
await store.load(identity, { fresh: options.fresh ?? false, dryRun: options.dryRun });
|
|
240
241
|
if (!options.dryRun)
|
|
241
242
|
await store.save();
|
|
242
|
-
const run = await store.beginRun(options.scope, options.dryRun);
|
|
243
|
+
const run = await store.beginRun(options.scope, options.dryRun, sourceStatus);
|
|
243
244
|
const report = new TransferReport({
|
|
244
245
|
dryRun: options.dryRun,
|
|
245
246
|
scope: options.scope,
|
|
247
|
+
sourceStatus,
|
|
246
248
|
direction: `${source.kind} → ${options.destination.type === 'directory' ? options.destination.format : destination.kind}`,
|
|
247
249
|
source: { provider: source.kind, profile: source.profile.name, rootId: root.id, title: root.title, url: root.url },
|
|
248
250
|
destination: options.destination.type === 'directory'
|
|
@@ -265,11 +267,14 @@ export class Migrator {
|
|
|
265
267
|
adapter: source,
|
|
266
268
|
root,
|
|
267
269
|
scope: options.scope,
|
|
270
|
+
sourceStatus,
|
|
268
271
|
...(options.signal ? { signal: options.signal } : {}),
|
|
269
272
|
onProgress: (progress) => status(`Discovery: ${progress.pages} pages, ${progress.edges} links${progress.active ? ` · ${progress.active}` : ''}`),
|
|
270
273
|
});
|
|
271
274
|
report.registerPages(graph.pages);
|
|
272
275
|
report.setEdges(graph.edges);
|
|
276
|
+
report.setSelection(graph.selection);
|
|
277
|
+
await store.setRunSelection(run.id, graph.selection);
|
|
273
278
|
for (const warning of graph.warnings)
|
|
274
279
|
report.warning(warning);
|
|
275
280
|
if (container
|
|
@@ -278,6 +283,7 @@ export class Migrator {
|
|
|
278
283
|
&& graph.pages.some((page) => page.id === container.id)) {
|
|
279
284
|
throw new Error('The destination page belongs to the selected source graph. Choose a destination outside the transferred graph.');
|
|
280
285
|
}
|
|
286
|
+
status(`Source tree: root ${root.title} · ${graph.selection.returnedDescendants} descendants returned · ${graph.selection.selectedDescendants} selected · ${graph.selection.excluded.length} excluded · depth ${graph.selection.maximumDepth}`);
|
|
281
287
|
status(`Caching source content for ${graph.pages.length} pages`);
|
|
282
288
|
sourceFingerprints = await cacheDiscoveredPages(options.cacheDirectory, graph);
|
|
283
289
|
await store.setGraph(graph.rootId, graph.edges);
|
|
@@ -360,7 +366,7 @@ export class Migrator {
|
|
|
360
366
|
});
|
|
361
367
|
throw new MigrationRunError('Resource preflight failed before destination mutation', reportPaths, stateLocation.filename);
|
|
362
368
|
}
|
|
363
|
-
const planSummary = `Plan ready: ${graph.pages.length} pages · ${inventory.resources} files (${inventory.bytes} known bytes${inventory.unknownSizes > 0 ? ` · ${inventory.unknownSizes} sizes unknown` : ''}) · ${inventory.links} links · ${inventory.images} images · ${inventory.tables} tables (${inventory.grids} grids) · ${inventory.codeBlocks} code blocks`;
|
|
369
|
+
const planSummary = `Plan ready: root + ${graph.selection.selectedDescendants}/${graph.selection.returnedDescendants} descendants (${graph.selection.excluded.length} excluded, depth ${graph.selection.maximumDepth}) · ${graph.pages.length} pages · ${inventory.resources} files (${inventory.bytes} known bytes${inventory.unknownSizes > 0 ? ` · ${inventory.unknownSizes} sizes unknown` : ''}) · ${inventory.links} links · ${inventory.images} images · ${inventory.tables} tables (${inventory.grids} grids) · ${inventory.codeBlocks} code blocks`;
|
|
364
370
|
status(planSummary);
|
|
365
371
|
this.logger.info(planSummary);
|
|
366
372
|
let output;
|
|
@@ -568,6 +574,9 @@ export class Migrator {
|
|
|
568
574
|
let resourcesForState = saved?.resources ?? {};
|
|
569
575
|
let previousDestinationIds = saved?.previousDestinationIds ?? [];
|
|
570
576
|
let mappingRecovered = false;
|
|
577
|
+
const findTitleConflict = (candidateTitle) => destination.findTitleConflict
|
|
578
|
+
? destination.findTitleConflict(parent, candidateTitle)
|
|
579
|
+
: destination.findChild(parent, candidateTitle);
|
|
571
580
|
if (saved?.destinationId) {
|
|
572
581
|
const mapped = destinationFromState(saved, destination);
|
|
573
582
|
try {
|
|
@@ -613,14 +622,31 @@ export class Migrator {
|
|
|
613
622
|
}
|
|
614
623
|
else {
|
|
615
624
|
let recoveryTitle = title;
|
|
616
|
-
|
|
625
|
+
let titleConflict = candidate;
|
|
626
|
+
if (!titleConflict && !recoveryLookupFailed) {
|
|
627
|
+
try {
|
|
628
|
+
titleConflict = await findTitleConflict(recoveryTitle);
|
|
629
|
+
}
|
|
630
|
+
catch (lookupError) {
|
|
631
|
+
recoveryLookupFailed = true;
|
|
632
|
+
report.issue({
|
|
633
|
+
code: 'destination-title-lookup-failed',
|
|
634
|
+
severity: 'warning',
|
|
635
|
+
phase: 'page',
|
|
636
|
+
pageId: page.canonicalId,
|
|
637
|
+
retryable: true,
|
|
638
|
+
message: `${page.title}: destination title lookup failed; bootstrap recreation will be attempted with a stable suffix: ${lookupError instanceof Error ? lookupError.message : String(lookupError)}`,
|
|
639
|
+
});
|
|
640
|
+
}
|
|
641
|
+
}
|
|
642
|
+
if (titleConflict || recoveryLookupFailed) {
|
|
617
643
|
const base = collisionTitle(page);
|
|
618
644
|
const hash = sha256(page.canonicalId).slice(0, 8);
|
|
619
645
|
recoveryTitle = base;
|
|
620
646
|
let sequence = 0;
|
|
621
647
|
while (!recoveryLookupFailed) {
|
|
622
648
|
try {
|
|
623
|
-
if (!await
|
|
649
|
+
if (!await findTitleConflict(recoveryTitle))
|
|
624
650
|
break;
|
|
625
651
|
sequence += 1;
|
|
626
652
|
recoveryTitle = `${base} [${hash}${sequence > 1 ? `-${sequence}` : ''}]`;
|
|
@@ -670,6 +696,91 @@ export class Migrator {
|
|
|
670
696
|
created = await verifyConfirmedDestinationPage(destination, created, this.consistencyOptions);
|
|
671
697
|
assertDestinationContent(bootstrap.body, created.content, destination.kind, cachedPage);
|
|
672
698
|
}
|
|
699
|
+
if (!mappingRecovered && created.parentId !== parent.id) {
|
|
700
|
+
const oldPage = created;
|
|
701
|
+
if (options.dryRun) {
|
|
702
|
+
report.addHierarchyRepair({
|
|
703
|
+
sourceCanonicalId: page.canonicalId,
|
|
704
|
+
mode: destination.capabilities.reparentPages && destination.reparentPage ? 'moved' : 'recreated',
|
|
705
|
+
...(created.parentId ? { oldParentId: created.parentId } : {}),
|
|
706
|
+
newParentId: parent.id,
|
|
707
|
+
oldDestinationId: created.id,
|
|
708
|
+
newDestinationId: created.id,
|
|
709
|
+
verified: false,
|
|
710
|
+
});
|
|
711
|
+
}
|
|
712
|
+
else if (destination.capabilities.reparentPages && destination.reparentPage) {
|
|
713
|
+
created = await destination.reparentPage({
|
|
714
|
+
page: created,
|
|
715
|
+
parent,
|
|
716
|
+
...(created.fingerprint ? { expectedFingerprint: created.fingerprint } : {}),
|
|
717
|
+
});
|
|
718
|
+
created = await verifyConfirmedDestinationPage(destination, created, this.consistencyOptions);
|
|
719
|
+
if (created.parentId !== parent.id) {
|
|
720
|
+
throw new Error(`Destination hierarchy verification failed for ${page.title}: expected parent ${parent.id}, received ${created.parentId ?? 'none'}`);
|
|
721
|
+
}
|
|
722
|
+
report.addHierarchyRepair({
|
|
723
|
+
sourceCanonicalId: page.canonicalId,
|
|
724
|
+
mode: 'moved',
|
|
725
|
+
...(oldPage.parentId ? { oldParentId: oldPage.parentId } : {}),
|
|
726
|
+
newParentId: parent.id,
|
|
727
|
+
oldDestinationId: oldPage.id,
|
|
728
|
+
newDestinationId: created.id,
|
|
729
|
+
verified: true,
|
|
730
|
+
});
|
|
731
|
+
report.issue({
|
|
732
|
+
code: 'destination-hierarchy-repaired',
|
|
733
|
+
severity: 'normalization',
|
|
734
|
+
phase: 'page',
|
|
735
|
+
pageId: page.canonicalId,
|
|
736
|
+
retryable: false,
|
|
737
|
+
message: `${page.title}: moved destination page ${created.id} from parent ${oldPage.parentId ?? 'none'} to ${parent.id} and verified the hierarchy`,
|
|
738
|
+
});
|
|
739
|
+
}
|
|
740
|
+
else {
|
|
741
|
+
let replacement = await destination.findChild(parent, title);
|
|
742
|
+
const replacementMatches = replacement
|
|
743
|
+
&& sourceDerivedTextMatches(bootstrap.body, replacement.content, destination.kind, cachedPage);
|
|
744
|
+
const titleConflict = replacementMatches ? undefined : replacement ?? await findTitleConflict(title);
|
|
745
|
+
if (titleConflict) {
|
|
746
|
+
const base = collisionTitle(page);
|
|
747
|
+
const hash = sha256(page.canonicalId).slice(0, 8);
|
|
748
|
+
title = base;
|
|
749
|
+
let sequence = 0;
|
|
750
|
+
while (await findTitleConflict(title)) {
|
|
751
|
+
sequence += 1;
|
|
752
|
+
title = `${base} [${hash}${sequence > 1 ? `-${sequence}` : ''}]`;
|
|
753
|
+
}
|
|
754
|
+
replacement = undefined;
|
|
755
|
+
}
|
|
756
|
+
created = replacement ?? await destination.createPage({ container: parent, title, body: bootstrap.body });
|
|
757
|
+
created = await verifyConfirmedDestinationPage(destination, created, this.consistencyOptions);
|
|
758
|
+
assertDestinationContent(bootstrap.body, created.content, destination.kind, cachedPage);
|
|
759
|
+
if (created.parentId !== parent.id) {
|
|
760
|
+
throw new Error(`Destination hierarchy verification failed for recreated page ${page.title}: expected parent ${parent.id}, received ${created.parentId ?? 'none'}`);
|
|
761
|
+
}
|
|
762
|
+
previousDestinationIds = [...new Set([...previousDestinationIds, oldPage.id])];
|
|
763
|
+
resourcesForState = resetResourceDestinations(saved.resources);
|
|
764
|
+
mappingRecovered = true;
|
|
765
|
+
report.addHierarchyRepair({
|
|
766
|
+
sourceCanonicalId: page.canonicalId,
|
|
767
|
+
mode: 'recreated',
|
|
768
|
+
...(oldPage.parentId ? { oldParentId: oldPage.parentId } : {}),
|
|
769
|
+
newParentId: parent.id,
|
|
770
|
+
oldDestinationId: oldPage.id,
|
|
771
|
+
newDestinationId: created.id,
|
|
772
|
+
verified: true,
|
|
773
|
+
});
|
|
774
|
+
report.issue({
|
|
775
|
+
code: 'destination-hierarchy-recreated',
|
|
776
|
+
severity: 'normalization',
|
|
777
|
+
phase: 'page',
|
|
778
|
+
pageId: page.canonicalId,
|
|
779
|
+
retryable: false,
|
|
780
|
+
message: `${page.title}: created verified replacement ${created.id} below ${parent.id}; previous page ${oldPage.id} was left untouched`,
|
|
781
|
+
});
|
|
782
|
+
}
|
|
783
|
+
}
|
|
673
784
|
}
|
|
674
785
|
else if (options.dryRun) {
|
|
675
786
|
created = {
|
|
@@ -680,25 +791,45 @@ export class Migrator {
|
|
|
680
791
|
title,
|
|
681
792
|
url: container.url,
|
|
682
793
|
locator: `dry-run:${page.id}`,
|
|
794
|
+
parentId: parent.id,
|
|
683
795
|
content: bootstrap.body,
|
|
684
796
|
contentLength: Buffer.byteLength(bootstrap.body),
|
|
685
797
|
...(container.space ? { space: container.space } : {}),
|
|
686
798
|
};
|
|
687
799
|
}
|
|
688
800
|
else {
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
801
|
+
const existingChild = await destination.findChild(parent, title);
|
|
802
|
+
if (existingChild && sourceDerivedTextMatches(bootstrap.body, existingChild.content, destination.kind, cachedPage)) {
|
|
803
|
+
created = existingChild;
|
|
804
|
+
mappingRecovered = true;
|
|
805
|
+
report.issue({
|
|
806
|
+
code: 'destination-unmapped-page-recovered',
|
|
807
|
+
severity: 'normalization',
|
|
808
|
+
phase: 'page',
|
|
809
|
+
pageId: page.canonicalId,
|
|
810
|
+
retryable: false,
|
|
811
|
+
message: `${page.title}: adopted an existing source-derived page below the expected parent`,
|
|
812
|
+
});
|
|
813
|
+
}
|
|
814
|
+
else {
|
|
815
|
+
const titleConflict = existingChild ?? await findTitleConflict(title);
|
|
816
|
+
if (titleConflict) {
|
|
817
|
+
const base = collisionTitle(page);
|
|
818
|
+
const hash = sha256(page.canonicalId).slice(0, 8);
|
|
819
|
+
title = base;
|
|
820
|
+
let sequence = 0;
|
|
821
|
+
while (await findTitleConflict(title)) {
|
|
822
|
+
sequence += 1;
|
|
823
|
+
title = `${base} [${hash}${sequence > 1 ? `-${sequence}` : ''}]`;
|
|
824
|
+
}
|
|
697
825
|
}
|
|
826
|
+
created = await destination.createPage({ container: parent, title, body: bootstrap.body });
|
|
827
|
+
created = await verifyConfirmedDestinationPage(destination, created, this.consistencyOptions);
|
|
828
|
+
assertDestinationContent(bootstrap.body, created.content, destination.kind, cachedPage);
|
|
698
829
|
}
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
830
|
+
}
|
|
831
|
+
if (!options.dryRun && created.parentId !== parent.id) {
|
|
832
|
+
throw new Error(`Destination hierarchy verification failed for ${page.title}: expected parent ${parent.id}, received ${created.parentId ?? 'none'}`);
|
|
702
833
|
}
|
|
703
834
|
destinationPages.set(page.canonicalId, created);
|
|
704
835
|
const next = {
|
|
@@ -805,7 +936,9 @@ export class Migrator {
|
|
|
805
936
|
await store.setPage({ ...state, status: 'partial', lastError: detail, updatedAt: new Date().toISOString() });
|
|
806
937
|
};
|
|
807
938
|
try {
|
|
808
|
-
let remoteResources = options.dryRun
|
|
939
|
+
let remoteResources = options.dryRun || transferableResources.length === 0
|
|
940
|
+
? []
|
|
941
|
+
: await destination.listUploadedResources(destinationPage);
|
|
809
942
|
const nameAllocator = new DestinationNameAllocator(remoteResources.map((resource) => resource.name));
|
|
810
943
|
for (const resourceState of Object.values(state.resources)) {
|
|
811
944
|
if (resourceState.status === 'complete')
|
|
@@ -1004,6 +1137,9 @@ export class Migrator {
|
|
|
1004
1137
|
};
|
|
1005
1138
|
const rendered = await renderRemoteDocument({ destination, container, document, page: cachedPage, context });
|
|
1006
1139
|
if (rendered.degraded && !options.dryRun) {
|
|
1140
|
+
if (transferableResources.length === 0) {
|
|
1141
|
+
remoteResources = await destination.listUploadedResources(destinationPage);
|
|
1142
|
+
}
|
|
1007
1143
|
const extension = page.rawFormat === 'yfm' ? 'yfm' : 'storage.xml';
|
|
1008
1144
|
const snapshotName = `ywtc-source-${sha256(page.canonicalId).slice(0, 8)}.${extension}`;
|
|
1009
1145
|
const snapshotPath = path.join(options.cacheDirectory, 'snapshots', snapshotName);
|