@thallylabs/migrate 0.2.38 → 0.2.40

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.
@@ -7,6 +7,8 @@ interface MigrationNavigationOccurrence {
7
7
  label: string;
8
8
  /** Structured source roles retain top-level tabs separately from sidebar groups. */
9
9
  kind?: 'tab' | 'group' | 'page';
10
+ /** Authored collection switchers retain their dropdown presentation. */
11
+ presentation?: 'dropdown';
10
12
  /** A localized collection never merges with a same-named collection in another language. */
11
13
  locale?: string;
12
14
  url?: string;
@@ -22,6 +24,12 @@ interface MigrationCapturedAsset {
22
24
  url: string;
23
25
  contentType: string;
24
26
  content: Uint8Array;
27
+ /** A trusted fetch boundary proved the original asset is already absent. */
28
+ unavailable?: {
29
+ status: 404 | 410;
30
+ };
31
+ /** Original SVG digest when a trusted host supplied an inert PNG rendering. */
32
+ derivedFromSha256?: string;
25
33
  }
26
34
  interface MigrationCapture extends MigrationFetchResponse {
27
35
  /** Capture adapters expand only safe read-only states; no forms or API actions. */
@@ -55,6 +63,12 @@ interface MigrationEvidence {
55
63
  code: Array<string>;
56
64
  anchors: Array<string>;
57
65
  links: Array<string>;
66
+ /** Exact observed canonical/article equality proof; never inferred from query names. */
67
+ articleIdentity?: {
68
+ canonicalUrl: string;
69
+ articleSha256: string;
70
+ sectionAnchor?: string;
71
+ };
58
72
  }
59
73
  interface MigrationJournalAsset {
60
74
  url: string;
@@ -63,6 +77,8 @@ interface MigrationJournalAsset {
63
77
  sha256: string;
64
78
  /** Base64 keeps checkpoints portable through JSON persistence. */
65
79
  base64: string;
80
+ /** Binds an optional trusted SVG rasterization to the original source bytes. */
81
+ derivedFromSha256?: string;
66
82
  }
67
83
  interface UrlMigrationRecord {
68
84
  url: string;
@@ -70,6 +86,10 @@ interface UrlMigrationRecord {
70
86
  outcome: 'pending' | 'imported' | 'excluded' | 'failed' | 'alias';
71
87
  reason?: string;
72
88
  aliasOf?: string;
89
+ /** A proven query section is projected to its captured article anchor. */
90
+ aliasAnchor?: string;
91
+ /** Observed redirect destination; external pages are links, never captured articles. */
92
+ redirectTo?: string;
73
93
  /** Publisher-declared Markdown representation of this exact same-origin article. */
74
94
  representationOf?: string;
75
95
  /** Complete inert API schema observed at a declared same-route Markdown representation. */
@@ -82,6 +102,8 @@ interface UrlMigrationRecord {
82
102
  page?: MigrationPage;
83
103
  pageSha256?: string;
84
104
  assets?: Array<MigrationJournalAsset>;
105
+ /** Proven source defects are retained for review without hiding import failures. */
106
+ warnings?: Array<UrlMigrationIssue>;
85
107
  version?: string;
86
108
  issues?: Array<UrlMigrationIssue>;
87
109
  }
@@ -105,7 +127,7 @@ interface UrlMigrationCheckpointDelta {
105
127
  navigation?: Array<MigrationNavigationOccurrence>;
106
128
  }
107
129
  interface UrlMigrationIssue {
108
- code: 'missing-page' | 'missing-anchor' | 'source-link-warning' | 'code-mismatch' | 'asset-failed' | 'unsafe-content' | 'unsupported-component' | 'navigation-missing' | 'collision';
130
+ code: 'missing-page' | 'missing-anchor' | 'source-link-warning' | 'source-asset-warning' | 'code-mismatch' | 'asset-failed' | 'unsafe-content' | 'unsupported-component' | 'navigation-missing' | 'collision';
109
131
  source: string;
110
132
  message: string;
111
133
  }
@@ -135,6 +157,8 @@ interface UrlMigrationRunOptions {
135
157
  fetcher?: MigrationFetcher;
136
158
  /** Hosts that inject text fetching must also inject their safe binary boundary. */
137
159
  assetFetcher?: (url: URL, signal?: AbortSignal) => Promise<MigrationCapturedAsset>;
160
+ /** Optional trusted, offline SVG renderer. Unsupported SVG stays rejected by default. */
161
+ rasterizeSvg?: (asset: MigrationCapturedAsset, signal?: AbortSignal) => Promise<MigrationCapturedAsset>;
138
162
  captureProvider?: MigrationCaptureProvider;
139
163
  /** Change this when browser/extraction policy changes; prevents stale reuse. */
140
164
  captureVersion?: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thallylabs/migrate",
3
- "version": "0.2.38",
3
+ "version": "0.2.40",
4
4
  "description": "Shared repository and live-site migration engine for Thally",
5
5
  "type": "module",
6
6
  "publishConfig": {