emdash-emit 0.1.18 → 0.1.30
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 +249 -1
- package/README.md +22 -11
- package/dist/cli/commands/conflicts.d.ts.map +1 -1
- package/dist/cli/commands/conflicts.js +2 -22
- package/dist/cli/commands/conflicts.js.map +1 -1
- package/dist/cli/commands/delete.d.ts.map +1 -1
- package/dist/cli/commands/delete.js +1 -13
- package/dist/cli/commands/delete.js.map +1 -1
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.js +1 -13
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/media.d.ts.map +1 -1
- package/dist/cli/commands/media.js +1 -13
- package/dist/cli/commands/media.js.map +1 -1
- package/dist/cli/commands/new.d.ts.map +1 -1
- package/dist/cli/commands/new.js +31 -13
- package/dist/cli/commands/new.js.map +1 -1
- package/dist/cli/commands/pull.d.ts +1 -1
- package/dist/cli/commands/pull.d.ts.map +1 -1
- package/dist/cli/commands/pull.js +110 -79
- package/dist/cli/commands/pull.js.map +1 -1
- package/dist/cli/commands/push.d.ts +1 -1
- package/dist/cli/commands/push.d.ts.map +1 -1
- package/dist/cli/commands/push.js +32 -90
- package/dist/cli/commands/push.js.map +1 -1
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +7 -2
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/context.d.ts +12 -0
- package/dist/cli/context.d.ts.map +1 -1
- package/dist/cli/context.js +27 -1
- package/dist/cli/context.js.map +1 -1
- package/dist/cli/report-failure.d.ts +6 -0
- package/dist/cli/report-failure.d.ts.map +1 -0
- package/dist/cli/report-failure.js +71 -0
- package/dist/cli/report-failure.js.map +1 -0
- package/dist/client/api.d.ts +20 -0
- package/dist/client/api.d.ts.map +1 -1
- package/dist/client/api.js +90 -1
- package/dist/client/api.js.map +1 -1
- package/dist/client/lock.js.map +1 -1
- package/dist/client/mapper.js.map +1 -1
- package/dist/client/media.d.ts.map +1 -1
- package/dist/client/media.js.map +1 -1
- package/dist/db/baseline.d.ts +19 -3
- package/dist/db/baseline.d.ts.map +1 -1
- package/dist/db/baseline.js +27 -2
- package/dist/db/baseline.js.map +1 -1
- package/dist/db/cache.d.ts +7 -3
- package/dist/db/cache.d.ts.map +1 -1
- package/dist/db/cache.js +24 -295
- package/dist/db/cache.js.map +1 -1
- package/dist/db/migrations.d.ts +7 -0
- package/dist/db/migrations.d.ts.map +1 -0
- package/dist/db/migrations.js +320 -0
- package/dist/db/migrations.js.map +1 -0
- package/dist/mcp/heartbeat.d.ts +1 -34
- package/dist/mcp/heartbeat.d.ts.map +1 -1
- package/dist/mcp/heartbeat.js +1 -113
- package/dist/mcp/heartbeat.js.map +1 -1
- package/dist/mcp/tool-errors.d.ts +12 -1
- package/dist/mcp/tool-errors.d.ts.map +1 -1
- package/dist/mcp/tool-errors.js +29 -0
- package/dist/mcp/tool-errors.js.map +1 -1
- package/dist/mcp/tools/sync-conflicts.d.ts.map +1 -1
- package/dist/mcp/tools/sync-conflicts.js +46 -58
- package/dist/mcp/tools/sync-conflicts.js.map +1 -1
- package/dist/mcp/tools/sync-delete.d.ts.map +1 -1
- package/dist/mcp/tools/sync-delete.js +18 -30
- package/dist/mcp/tools/sync-delete.js.map +1 -1
- package/dist/mcp/tools/sync-diff.d.ts.map +1 -1
- package/dist/mcp/tools/sync-diff.js +10 -31
- package/dist/mcp/tools/sync-diff.js.map +1 -1
- package/dist/mcp/tools/sync-doctor.d.ts.map +1 -1
- package/dist/mcp/tools/sync-doctor.js +18 -30
- package/dist/mcp/tools/sync-doctor.js.map +1 -1
- package/dist/mcp/tools/sync-media-search.d.ts.map +1 -1
- package/dist/mcp/tools/sync-media-search.js +40 -52
- package/dist/mcp/tools/sync-media-search.js.map +1 -1
- package/dist/mcp/tools/sync-new.d.ts.map +1 -1
- package/dist/mcp/tools/sync-new.js +54 -34
- package/dist/mcp/tools/sync-new.js.map +1 -1
- package/dist/mcp/tools/sync-pull.d.ts.map +1 -1
- package/dist/mcp/tools/sync-pull.js +194 -220
- package/dist/mcp/tools/sync-pull.js.map +1 -1
- package/dist/mcp/tools/sync-push.d.ts.map +1 -1
- package/dist/mcp/tools/sync-push.js +64 -84
- package/dist/mcp/tools/sync-push.js.map +1 -1
- package/dist/mcp/tools/sync-status.d.ts.map +1 -1
- package/dist/mcp/tools/sync-status.js +4 -13
- package/dist/mcp/tools/sync-status.js.map +1 -1
- package/dist/sync/baseline-reconstruction.d.ts +43 -0
- package/dist/sync/baseline-reconstruction.d.ts.map +1 -0
- package/dist/sync/baseline-reconstruction.js +103 -0
- package/dist/sync/baseline-reconstruction.js.map +1 -0
- package/dist/sync/bylines.d.ts +5 -0
- package/dist/sync/bylines.d.ts.map +1 -1
- package/dist/sync/bylines.js +29 -0
- package/dist/sync/bylines.js.map +1 -1
- package/dist/sync/conflicts.d.ts.map +1 -1
- package/dist/sync/conflicts.js +21 -4
- package/dist/sync/conflicts.js.map +1 -1
- package/dist/sync/delete.d.ts.map +1 -1
- package/dist/sync/delete.js +12 -1
- package/dist/sync/delete.js.map +1 -1
- package/dist/sync/diff.d.ts.map +1 -1
- package/dist/sync/diff.js +62 -26
- package/dist/sync/diff.js.map +1 -1
- package/dist/sync/doctor.d.ts.map +1 -1
- package/dist/sync/doctor.js +13 -3
- package/dist/sync/doctor.js.map +1 -1
- package/dist/sync/guards.d.ts +1 -1
- package/dist/sync/guards.d.ts.map +1 -1
- package/dist/sync/guards.js +3 -2
- package/dist/sync/guards.js.map +1 -1
- package/dist/sync/media/companions.d.ts.map +1 -1
- package/dist/sync/media/companions.js.map +1 -1
- package/dist/sync/media/naming_mirror.d.ts.map +1 -1
- package/dist/sync/media/naming_mirror.js +11 -2
- package/dist/sync/media/naming_mirror.js.map +1 -1
- package/dist/sync/media/pull_article.d.ts +2 -0
- package/dist/sync/media/pull_article.d.ts.map +1 -1
- package/dist/sync/media/pull_article.js +74 -25
- package/dist/sync/media/pull_article.js.map +1 -1
- package/dist/sync/media/pull_library.d.ts.map +1 -1
- package/dist/sync/media/pull_library.js +34 -61
- package/dist/sync/media/pull_library.js.map +1 -1
- package/dist/sync/media/remote_index.d.ts +16 -1
- package/dist/sync/media/remote_index.d.ts.map +1 -1
- package/dist/sync/media/remote_index.js +2 -2
- package/dist/sync/media/remote_index.js.map +1 -1
- package/dist/sync/merge.d.ts +1 -1
- package/dist/sync/merge.d.ts.map +1 -1
- package/dist/sync/merge.js +50 -17
- package/dist/sync/merge.js.map +1 -1
- package/dist/sync/new.d.ts +11 -0
- package/dist/sync/new.d.ts.map +1 -1
- package/dist/sync/new.js +81 -3
- package/dist/sync/new.js.map +1 -1
- package/dist/sync/orchestrator.d.ts +34 -0
- package/dist/sync/orchestrator.d.ts.map +1 -1
- package/dist/sync/orchestrator.js +89 -80
- package/dist/sync/orchestrator.js.map +1 -1
- package/dist/sync/preflight/image_probe.d.ts +28 -0
- package/dist/sync/preflight/image_probe.d.ts.map +1 -0
- package/dist/sync/preflight/image_probe.js +70 -0
- package/dist/sync/preflight/image_probe.js.map +1 -0
- package/dist/sync/preflight.d.ts +7 -0
- package/dist/sync/preflight.d.ts.map +1 -1
- package/dist/sync/preflight.js +127 -31
- package/dist/sync/preflight.js.map +1 -1
- package/dist/sync/pull/fast_path.d.ts +9 -0
- package/dist/sync/pull/fast_path.d.ts.map +1 -0
- package/dist/sync/pull/fast_path.js +341 -0
- package/dist/sync/pull/fast_path.js.map +1 -0
- package/dist/sync/pull/index.d.ts +15 -0
- package/dist/sync/pull/index.d.ts.map +1 -0
- package/dist/sync/pull/index.js +363 -0
- package/dist/sync/pull/index.js.map +1 -0
- package/dist/sync/pull/list.d.ts +22 -0
- package/dist/sync/pull/list.d.ts.map +1 -0
- package/dist/sync/pull/list.js +175 -0
- package/dist/sync/pull/list.js.map +1 -0
- package/dist/sync/pull/media_stage.d.ts +67 -0
- package/dist/sync/pull/media_stage.d.ts.map +1 -0
- package/dist/sync/pull/media_stage.js +599 -0
- package/dist/sync/pull/media_stage.js.map +1 -0
- package/dist/sync/pull/quarantine.d.ts +22 -0
- package/dist/sync/pull/quarantine.d.ts.map +1 -0
- package/dist/sync/pull/quarantine.js +174 -0
- package/dist/sync/pull/quarantine.js.map +1 -0
- package/dist/sync/pull/types.d.ts +125 -0
- package/dist/sync/pull/types.d.ts.map +1 -0
- package/dist/sync/pull/types.js +23 -0
- package/dist/sync/pull/types.js.map +1 -0
- package/dist/sync/pull.d.ts +1 -114
- package/dist/sync/pull.d.ts.map +1 -1
- package/dist/sync/pull.js +1 -806
- package/dist/sync/pull.js.map +1 -1
- package/dist/sync/push/commit.d.ts +1 -0
- package/dist/sync/push/commit.d.ts.map +1 -1
- package/dist/sync/push/commit.js +58 -31
- package/dist/sync/push/commit.js.map +1 -1
- package/dist/sync/push/index.d.ts.map +1 -1
- package/dist/sync/push/index.js +30 -8
- package/dist/sync/push/index.js.map +1 -1
- package/dist/sync/push/media_stage.d.ts +17 -2
- package/dist/sync/push/media_stage.d.ts.map +1 -1
- package/dist/sync/push/media_stage.js +31 -2
- package/dist/sync/push/media_stage.js.map +1 -1
- package/dist/sync/push/merge_stage.d.ts.map +1 -1
- package/dist/sync/push/merge_stage.js +36 -22
- package/dist/sync/push/merge_stage.js.map +1 -1
- package/dist/sync/push/transport.d.ts +6 -2
- package/dist/sync/push/transport.d.ts.map +1 -1
- package/dist/sync/push/transport.js +5 -5
- package/dist/sync/push/transport.js.map +1 -1
- package/dist/sync/status.d.ts +3 -0
- package/dist/sync/status.d.ts.map +1 -1
- package/dist/sync/status.js +18 -55
- package/dist/sync/status.js.map +1 -1
- package/dist/sync/taxonomies.d.ts +25 -0
- package/dist/sync/taxonomies.d.ts.map +1 -1
- package/dist/sync/taxonomies.js +180 -127
- package/dist/sync/taxonomies.js.map +1 -1
- package/dist/sync/workspace/commit.d.ts +46 -0
- package/dist/sync/workspace/commit.d.ts.map +1 -0
- package/dist/sync/workspace/commit.js +85 -0
- package/dist/sync/workspace/commit.js.map +1 -0
- package/dist/sync/workspace/index.d.ts +1 -0
- package/dist/sync/workspace/index.d.ts.map +1 -1
- package/dist/sync/workspace/index.js +1 -0
- package/dist/sync/workspace/index.js.map +1 -1
- package/dist/utils/disk-spelling.d.ts +26 -0
- package/dist/utils/disk-spelling.d.ts.map +1 -0
- package/dist/utils/disk-spelling.js +51 -0
- package/dist/utils/disk-spelling.js.map +1 -0
- package/dist/utils/draft-revision.d.ts +15 -0
- package/dist/utils/draft-revision.d.ts.map +1 -0
- package/dist/utils/draft-revision.js +36 -0
- package/dist/utils/draft-revision.js.map +1 -0
- package/dist/utils/frontmatter.d.ts +21 -2
- package/dist/utils/frontmatter.d.ts.map +1 -1
- package/dist/utils/frontmatter.js +70 -7
- package/dist/utils/frontmatter.js.map +1 -1
- package/dist/utils/mcp-heartbeat.d.ts +36 -0
- package/dist/utils/mcp-heartbeat.d.ts.map +1 -0
- package/dist/utils/mcp-heartbeat.js +126 -0
- package/dist/utils/mcp-heartbeat.js.map +1 -0
- package/dist/utils/media-body-refs.d.ts.map +1 -1
- package/dist/utils/media-body-refs.js +2 -2
- package/dist/utils/media-body-refs.js.map +1 -1
- package/dist/utils/taxonomy-key.d.ts +25 -0
- package/dist/utils/taxonomy-key.d.ts.map +1 -0
- package/dist/utils/taxonomy-key.js +51 -0
- package/dist/utils/taxonomy-key.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media_stage.js","sourceRoot":"","sources":["../../../src/sync/pull/media_stage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { SyncState } from '../../db/cache.js';
|
|
2
|
+
import type { TaxonomyCandidates } from '../../utils/frontmatter.js';
|
|
3
|
+
import type { PullOptions, PullResult, QuarantinedLocalCopy } from './types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Human/agent readable notice describing preserved local copies.
|
|
6
|
+
* Returns an empty string when nothing was preserved.
|
|
7
|
+
*/
|
|
8
|
+
export declare function formatQuarantineNotice(quarantined?: QuarantinedLocalCopy[]): string;
|
|
9
|
+
/**
|
|
10
|
+
* Discovers local files for this article that are about to be overwritten or unlinked, and
|
|
11
|
+
* preserves every copy whose content does not match the last synced baseline hash (or its
|
|
12
|
+
* reconstructed disk-spelling baseline) or the content Emit is about to write.
|
|
13
|
+
*/
|
|
14
|
+
export declare function quarantineDivergentLocalCopies(options: PullOptions, collection: string, localRelPaths: Set<string>, baselineHash: string | undefined, canonicalContent: string, existingCopyHash?: string | null, existingSync?: SyncState | null, candidates?: TaxonomyCandidates): QuarantinedLocalCopy[];
|
|
15
|
+
/**
|
|
16
|
+
* Handles remote 404/410 article deletion during pull:
|
|
17
|
+
* - Unlinks local file and deletes cache entry if the local file is unmodified.
|
|
18
|
+
* - Quarantines local edits and unlinks if `force: true`.
|
|
19
|
+
* - Preserves local edits as `orphan: true` otherwise.
|
|
20
|
+
*/
|
|
21
|
+
export declare function handleRemoteDeletedArticle(collection: string, id: string, options: PullOptions, candidates?: TaxonomyCandidates): PullResult | null;
|
|
22
|
+
//# sourceMappingURL=quarantine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quarantine.d.ts","sourceRoot":"","sources":["../../../src/sync/pull/quarantine.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAGrE,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEhF;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,CAAC,EAAE,oBAAoB,EAAE,GAAG,MAAM,CASnF;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,WAAW,EACpB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,EAC1B,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,gBAAgB,EAAE,MAAM,EACxB,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,EAChC,YAAY,CAAC,EAAE,SAAS,GAAG,IAAI,EAC/B,UAAU,CAAC,EAAE,kBAAkB,GAC9B,oBAAoB,EAAE,CAsDxB;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,WAAW,EACpB,UAAU,CAAC,EAAE,kBAAkB,GAC9B,UAAU,GAAG,IAAI,CAoFnB"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (C) 2026 SPORT-SERVICE RS★R
|
|
3
|
+
*
|
|
4
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
5
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
6
|
+
* in the Software without restriction, including without limitation the rights
|
|
7
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
8
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
9
|
+
* furnished to do so, subject to the following conditions:
|
|
10
|
+
*
|
|
11
|
+
* The above copyright notice and this permission notice shall be included in all
|
|
12
|
+
* copies or substantial portions of the Software.
|
|
13
|
+
*
|
|
14
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
15
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
16
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
17
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
18
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
19
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
20
|
+
* SOFTWARE.
|
|
21
|
+
*/
|
|
22
|
+
import fs from 'node:fs';
|
|
23
|
+
import path from 'node:path';
|
|
24
|
+
import { isLocalFileUnmodified } from '../baseline-reconstruction.js';
|
|
25
|
+
import { CONFLICTS_SUBDIR, calculateHash, quarantineLocalCopy } from '../workspace/index.js';
|
|
26
|
+
/**
|
|
27
|
+
* Human/agent readable notice describing preserved local copies.
|
|
28
|
+
* Returns an empty string when nothing was preserved.
|
|
29
|
+
*/
|
|
30
|
+
export function formatQuarantineNotice(quarantined) {
|
|
31
|
+
if (!quarantined || quarantined.length === 0)
|
|
32
|
+
return '';
|
|
33
|
+
const lines = [
|
|
34
|
+
`🩹 ${quarantined.length} divergent local copy(ies) preserved under ${CONFLICTS_SUBDIR}/ before being overwritten:`,
|
|
35
|
+
...quarantined.map((q) => ` - ${q.sourceFilePath} -> ${q.quarantineFilePath} (${q.reason})`),
|
|
36
|
+
' Review each rescue copy, merge any valuable content into the canonical article, then delete it.',
|
|
37
|
+
` Preserved copies are never pushed or pruned; pushing a rescue copy directly is refused (QUARANTINED_COPY_NOT_PUSHABLE).`,
|
|
38
|
+
];
|
|
39
|
+
return lines.join('\n');
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Discovers local files for this article that are about to be overwritten or unlinked, and
|
|
43
|
+
* preserves every copy whose content does not match the last synced baseline hash (or its
|
|
44
|
+
* reconstructed disk-spelling baseline) or the content Emit is about to write.
|
|
45
|
+
*/
|
|
46
|
+
export function quarantineDivergentLocalCopies(options, collection, localRelPaths, baselineHash, canonicalContent, existingCopyHash, existingSync, candidates) {
|
|
47
|
+
const quarantined = [];
|
|
48
|
+
for (const localRel of localRelPaths) {
|
|
49
|
+
const localFull = path.resolve(options.workspaceRoot, localRel);
|
|
50
|
+
if (!fs.existsSync(localFull))
|
|
51
|
+
continue;
|
|
52
|
+
let localContent;
|
|
53
|
+
try {
|
|
54
|
+
localContent = fs.readFileSync(localFull, 'utf8');
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
// Already identical to what is about to be written: nothing to preserve.
|
|
60
|
+
if (localContent === canonicalContent)
|
|
61
|
+
continue;
|
|
62
|
+
// Identical to the last synced state (raw hash or reconstructed disk spelling): carries no information worth preserving.
|
|
63
|
+
if ((baselineHash && calculateHash(localContent) === baselineHash) ||
|
|
64
|
+
(existingSync &&
|
|
65
|
+
isLocalFileUnmodified({
|
|
66
|
+
workspaceRoot: options.workspaceRoot,
|
|
67
|
+
cache: options.cache,
|
|
68
|
+
id: existingSync.id,
|
|
69
|
+
relPath: localRel,
|
|
70
|
+
localContent,
|
|
71
|
+
syncState: existingSync,
|
|
72
|
+
candidates,
|
|
73
|
+
healOnSpellingMatch: false,
|
|
74
|
+
}))) {
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
const quarantineRel = quarantineLocalCopy(options.workspaceRoot, collection, localRel, localContent, {
|
|
78
|
+
isForce: Boolean(options.force),
|
|
79
|
+
existingCopyHash,
|
|
80
|
+
});
|
|
81
|
+
if (quarantineRel) {
|
|
82
|
+
quarantined.push({
|
|
83
|
+
sourceFilePath: localRel,
|
|
84
|
+
quarantineFilePath: quarantineRel,
|
|
85
|
+
reason: baselineHash ? 'diverged-from-baseline' : 'no-cache-baseline',
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return quarantined;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Handles remote 404/410 article deletion during pull:
|
|
93
|
+
* - Unlinks local file and deletes cache entry if the local file is unmodified.
|
|
94
|
+
* - Quarantines local edits and unlinks if `force: true`.
|
|
95
|
+
* - Preserves local edits as `orphan: true` otherwise.
|
|
96
|
+
*/
|
|
97
|
+
export function handleRemoteDeletedArticle(collection, id, options, candidates) {
|
|
98
|
+
const existingSync = options.cache.getSyncState(id);
|
|
99
|
+
if (!existingSync)
|
|
100
|
+
return null;
|
|
101
|
+
const fullPath = path.join(options.workspaceRoot, existingSync.localFilePath);
|
|
102
|
+
if (!fs.existsSync(fullPath))
|
|
103
|
+
return null;
|
|
104
|
+
const diskContent = fs.readFileSync(fullPath, 'utf8');
|
|
105
|
+
const isUnmodified = calculateHash(diskContent) === existingSync.localHash ||
|
|
106
|
+
isLocalFileUnmodified({
|
|
107
|
+
workspaceRoot: options.workspaceRoot,
|
|
108
|
+
cache: options.cache,
|
|
109
|
+
id,
|
|
110
|
+
relPath: existingSync.localFilePath,
|
|
111
|
+
localContent: diskContent,
|
|
112
|
+
syncState: existingSync,
|
|
113
|
+
candidates,
|
|
114
|
+
healOnSpellingMatch: false,
|
|
115
|
+
});
|
|
116
|
+
// Only delete if local file has no unpushed edits
|
|
117
|
+
if (isUnmodified) {
|
|
118
|
+
try {
|
|
119
|
+
fs.unlinkSync(fullPath);
|
|
120
|
+
}
|
|
121
|
+
catch {
|
|
122
|
+
// Ignore unlink error
|
|
123
|
+
}
|
|
124
|
+
options.cache.deleteEntry(id);
|
|
125
|
+
return {
|
|
126
|
+
id,
|
|
127
|
+
slug: existingSync.slug,
|
|
128
|
+
status: existingSync.status,
|
|
129
|
+
filePath: existingSync.localFilePath,
|
|
130
|
+
updated: false,
|
|
131
|
+
deleted: true,
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
if (options.force) {
|
|
135
|
+
const quarantineRel = quarantineLocalCopy(options.workspaceRoot, collection, existingSync.localFilePath, diskContent, { isForce: true });
|
|
136
|
+
try {
|
|
137
|
+
fs.unlinkSync(fullPath);
|
|
138
|
+
}
|
|
139
|
+
catch {
|
|
140
|
+
// Ignore unlink error
|
|
141
|
+
}
|
|
142
|
+
options.cache.deleteEntry(id);
|
|
143
|
+
return {
|
|
144
|
+
id,
|
|
145
|
+
slug: existingSync.slug,
|
|
146
|
+
status: existingSync.status,
|
|
147
|
+
filePath: existingSync.localFilePath,
|
|
148
|
+
updated: false,
|
|
149
|
+
deleted: true,
|
|
150
|
+
quarantined: quarantineRel
|
|
151
|
+
? [
|
|
152
|
+
{
|
|
153
|
+
sourceFilePath: existingSync.localFilePath,
|
|
154
|
+
quarantineFilePath: quarantineRel,
|
|
155
|
+
reason: 'diverged-from-baseline',
|
|
156
|
+
},
|
|
157
|
+
]
|
|
158
|
+
: undefined,
|
|
159
|
+
quarantineFilePath: quarantineRel ?? undefined,
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
// Local file has unpushed edits: preserve as orphan!
|
|
163
|
+
return {
|
|
164
|
+
id,
|
|
165
|
+
slug: existingSync.slug,
|
|
166
|
+
status: existingSync.status,
|
|
167
|
+
filePath: existingSync.localFilePath,
|
|
168
|
+
updated: false,
|
|
169
|
+
orphan: true,
|
|
170
|
+
localEditsPreserved: true,
|
|
171
|
+
suggestion: 'Pass --force to preserve your edits under posts/conflicts/ and remove tracking.',
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=quarantine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quarantine.js","sourceRoot":"","sources":["../../../src/sync/pull/quarantine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import type { CacheDatabase } from '../../db/cache.js';
|
|
2
|
+
import type { MapperOptions } from '../../client/mapper.js';
|
|
3
|
+
import type { TaxonomyCandidates } from '../../utils/frontmatter.js';
|
|
4
|
+
export interface PullArticleMediaSummary {
|
|
5
|
+
total: number;
|
|
6
|
+
downloaded: number;
|
|
7
|
+
skipped: number;
|
|
8
|
+
mirroredStorageKeys: string[];
|
|
9
|
+
verifiedStorageKeys: string[];
|
|
10
|
+
orphanStorageKeys: string[];
|
|
11
|
+
unresolvedFeaturedImageId?: string;
|
|
12
|
+
mediaFetchFailed?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export interface MediaMirrorSession {
|
|
15
|
+
mirrorArticleReferencedMedia(options: {
|
|
16
|
+
canonicalMarkdown: string;
|
|
17
|
+
featuredImage?: string | null;
|
|
18
|
+
}): Promise<PullArticleMediaSummary | undefined>;
|
|
19
|
+
finalizeBatchMediaResult(): Promise<{
|
|
20
|
+
walkedCount: number;
|
|
21
|
+
remoteTotalCount: number | null;
|
|
22
|
+
complete: boolean;
|
|
23
|
+
downloaded: number;
|
|
24
|
+
skipped: number;
|
|
25
|
+
mirroredStorageKeys: string[];
|
|
26
|
+
verifiedStorageKeys: string[];
|
|
27
|
+
orphanStorageKeys: string[];
|
|
28
|
+
}>;
|
|
29
|
+
}
|
|
30
|
+
export interface PullOptions extends MapperOptions {
|
|
31
|
+
workspaceRoot: string;
|
|
32
|
+
cache: CacheDatabase;
|
|
33
|
+
origin: string;
|
|
34
|
+
token: string;
|
|
35
|
+
refreshToken?: string;
|
|
36
|
+
fetchFn?: typeof fetch;
|
|
37
|
+
candidates?: TaxonomyCandidates;
|
|
38
|
+
rawItem?: Record<string, unknown>;
|
|
39
|
+
force?: boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Write mirrored body images into the local file as article-relative `../../media/<storageKey>` references,
|
|
42
|
+
* at the depth derived from the article's own path.
|
|
43
|
+
* The cache baseline always keeps the canonical remote URL, so this only changes the disk spelling and an
|
|
44
|
+
* editor preview can render the image from the mirror. Push restores the canonical form before any payload.
|
|
45
|
+
*/
|
|
46
|
+
localMediaRefs?: boolean;
|
|
47
|
+
/**
|
|
48
|
+
* When false, skips on-demand mirroring of media referenced by the article.
|
|
49
|
+
* Defaults to true.
|
|
50
|
+
*/
|
|
51
|
+
mediaSync?: boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Optional shared media mirror session across multiple pull operations (e.g. in pullBatch).
|
|
54
|
+
*/
|
|
55
|
+
mediaSession?: MediaMirrorSession;
|
|
56
|
+
/**
|
|
57
|
+
* Bounds the library walk a single-article pull uses to resolve body storageKeys and an unresolved
|
|
58
|
+
* `featuredImage` (default `mediaSyncLimit`). Ignored when a shared `mediaSession` already owns the walk.
|
|
59
|
+
*/
|
|
60
|
+
mediaSyncLimit?: number;
|
|
61
|
+
}
|
|
62
|
+
export interface PullResult {
|
|
63
|
+
id: string;
|
|
64
|
+
slug: string;
|
|
65
|
+
status: string;
|
|
66
|
+
filePath: string;
|
|
67
|
+
updated: boolean;
|
|
68
|
+
skipped?: boolean;
|
|
69
|
+
deleted?: boolean;
|
|
70
|
+
orphan?: boolean;
|
|
71
|
+
title?: string;
|
|
72
|
+
/** True when the local file has unpushed edits and Emit kept them instead of applying remote changes. */
|
|
73
|
+
localEditsPreserved?: boolean;
|
|
74
|
+
/** True when frontmatter syntax was non-destructively healed while preserving unpushed local body content. */
|
|
75
|
+
healed?: boolean;
|
|
76
|
+
/** True if frontmatter meaning or keys/values were altered during heal (false for syntax-only repair). */
|
|
77
|
+
meaningChanged?: boolean;
|
|
78
|
+
/** Local copies that diverged from the last synced baseline and were preserved in `<collection>/conflicts/`. */
|
|
79
|
+
quarantined?: QuarantinedLocalCopy[];
|
|
80
|
+
quarantineFilePath?: string;
|
|
81
|
+
suggestion?: string;
|
|
82
|
+
/** Media assets referenced by this article that were mirrored or verified during pull. */
|
|
83
|
+
media?: PullArticleMediaSummary;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* A local Markdown copy whose content differed from Emit's last synced baseline and was
|
|
87
|
+
* therefore preserved under `<collection>/conflicts/` before the canonical file was written.
|
|
88
|
+
* Quarantined copies are informational only: they are not tracked, pushed, or pruned.
|
|
89
|
+
*/
|
|
90
|
+
export interface QuarantinedLocalCopy {
|
|
91
|
+
/** Relative path of the local file that would have been overwritten or removed. */
|
|
92
|
+
sourceFilePath: string;
|
|
93
|
+
/** Relative path of the preserved copy inside `<collection>/conflicts/`. */
|
|
94
|
+
quarantineFilePath: string;
|
|
95
|
+
/** Why the copy was preserved: no cache baseline existed, or content diverged from it. */
|
|
96
|
+
reason: 'no-cache-baseline' | 'diverged-from-baseline';
|
|
97
|
+
}
|
|
98
|
+
export interface RemoteArticleItem {
|
|
99
|
+
id: string;
|
|
100
|
+
slug: string;
|
|
101
|
+
status: string;
|
|
102
|
+
title: string;
|
|
103
|
+
_rev: string;
|
|
104
|
+
rawItem: Record<string, unknown>;
|
|
105
|
+
}
|
|
106
|
+
export interface ListRemoteArticlesOptions {
|
|
107
|
+
origin: string;
|
|
108
|
+
token: string;
|
|
109
|
+
refreshToken?: string;
|
|
110
|
+
limit?: number;
|
|
111
|
+
all?: boolean;
|
|
112
|
+
status?: 'draft' | 'published' | 'all';
|
|
113
|
+
batchSize?: number;
|
|
114
|
+
fetchFn?: typeof fetch;
|
|
115
|
+
}
|
|
116
|
+
export interface FastPathContext {
|
|
117
|
+
collection: string;
|
|
118
|
+
id: string;
|
|
119
|
+
options: PullOptions;
|
|
120
|
+
fetchAssignedTerms: (taxonomy: 'category' | 'tag') => Promise<string[] | null>;
|
|
121
|
+
getBylineIdToSlug: () => Promise<Record<string, string>>;
|
|
122
|
+
getTaxonomyCandidates: () => TaxonomyCandidates | undefined;
|
|
123
|
+
localizeDiskMarkdown: (canonicalContent: string, articleRelPath?: string, preferLegacyRef?: boolean) => string;
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/sync/pull/types.ts"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAErE,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB;IACjC,4BAA4B,CAAC,OAAO,EAAE;QACpC,iBAAiB,EAAE,MAAM,CAAC;QAC1B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC/B,GAAG,OAAO,CAAC,uBAAuB,GAAG,SAAS,CAAC,CAAC;IACjD,wBAAwB,IAAI,OAAO,CAAC;QAClC,WAAW,EAAE,MAAM,CAAC;QACpB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;QAChC,QAAQ,EAAE,OAAO,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,mBAAmB,EAAE,MAAM,EAAE,CAAC;QAC9B,mBAAmB,EAAE,MAAM,EAAE,CAAC;QAC9B,iBAAiB,EAAE,MAAM,EAAE,CAAC;KAC7B,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,WAAY,SAAQ,aAAa;IAChD,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;IACvB,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yGAAyG;IACzG,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,8GAA8G;IAC9G,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,0GAA0G;IAC1G,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gHAAgH;IAChH,WAAW,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACrC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0FAA0F;IAC1F,KAAK,CAAC,EAAE,uBAAuB,CAAC;CACjC;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,mFAAmF;IACnF,cAAc,EAAE,MAAM,CAAC;IACvB,4EAA4E;IAC5E,kBAAkB,EAAE,MAAM,CAAC;IAC3B,0FAA0F;IAC1F,MAAM,EAAE,mBAAmB,GAAG,wBAAwB,CAAC;CACxD;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,GAAG,WAAW,GAAG,KAAK,CAAC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,WAAW,CAAC;IACrB,kBAAkB,EAAE,CAAC,QAAQ,EAAE,UAAU,GAAG,KAAK,KAAK,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;IAC/E,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACzD,qBAAqB,EAAE,MAAM,kBAAkB,GAAG,SAAS,CAAC;IAC5D,oBAAoB,EAAE,CACpB,gBAAgB,EAAE,MAAM,EACxB,cAAc,CAAC,EAAE,MAAM,EACvB,eAAe,CAAC,EAAE,OAAO,KACtB,MAAM,CAAC;CACb"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (C) 2026 SPORT-SERVICE RS★R
|
|
3
|
+
*
|
|
4
|
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
5
|
+
* of this software and associated documentation files (the "Software"), to deal
|
|
6
|
+
* in the Software without restriction, including without limitation the rights
|
|
7
|
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
8
|
+
* copies of the Software, and to permit persons to whom the Software is
|
|
9
|
+
* furnished to do so, subject to the following conditions:
|
|
10
|
+
*
|
|
11
|
+
* The above copyright notice and this permission notice shall be included in all
|
|
12
|
+
* copies or substantial portions of the Software.
|
|
13
|
+
*
|
|
14
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
15
|
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
16
|
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
17
|
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
18
|
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
19
|
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
20
|
+
* SOFTWARE.
|
|
21
|
+
*/
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/sync/pull/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG"}
|
package/dist/sync/pull.d.ts
CHANGED
|
@@ -1,115 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
import { type MapperOptions } from '../client/mapper.js';
|
|
3
|
-
import { type TaxonomyCandidates } from '../utils/frontmatter.js';
|
|
4
|
-
import { carriesDepthFreeMediaRef, shouldPreferLegacyRef } from '../utils/media-body-refs.js';
|
|
5
|
-
import { CONFLICTS_SUBDIR, calculateHash, findLocalFilesByUlid, isQuarantinedRelativePath, quarantineLocalCopy, resolveCanonicalArticlePath } from './workspace/index.js';
|
|
6
|
-
export { CONFLICTS_SUBDIR, calculateHash, findLocalFilesByUlid, isQuarantinedRelativePath, quarantineLocalCopy, resolveCanonicalArticlePath, carriesDepthFreeMediaRef, shouldPreferLegacyRef, };
|
|
7
|
-
export interface PullOptions extends MapperOptions {
|
|
8
|
-
workspaceRoot: string;
|
|
9
|
-
cache: CacheDatabase;
|
|
10
|
-
origin: string;
|
|
11
|
-
token: string;
|
|
12
|
-
refreshToken?: string;
|
|
13
|
-
fetchFn?: typeof fetch;
|
|
14
|
-
candidates?: TaxonomyCandidates;
|
|
15
|
-
rawItem?: Record<string, unknown>;
|
|
16
|
-
force?: boolean;
|
|
17
|
-
/**
|
|
18
|
-
* Write mirrored body images into the local file as article-relative `../../media/<storageKey>` references,
|
|
19
|
-
* at the depth derived from the article's own path.
|
|
20
|
-
* The cache baseline always keeps the canonical remote URL, so this only changes the disk spelling and an
|
|
21
|
-
* editor preview can render the image from the mirror. Push restores the canonical form before any payload.
|
|
22
|
-
*/
|
|
23
|
-
localMediaRefs?: boolean;
|
|
24
|
-
}
|
|
25
|
-
export interface PullResult {
|
|
26
|
-
id: string;
|
|
27
|
-
slug: string;
|
|
28
|
-
status: string;
|
|
29
|
-
filePath: string;
|
|
30
|
-
updated: boolean;
|
|
31
|
-
skipped?: boolean;
|
|
32
|
-
deleted?: boolean;
|
|
33
|
-
orphan?: boolean;
|
|
34
|
-
title?: string;
|
|
35
|
-
/** True when the local file has unpushed edits and Emit kept them instead of applying remote changes. */
|
|
36
|
-
localEditsPreserved?: boolean;
|
|
37
|
-
/** True when frontmatter syntax was non-destructively healed while preserving unpushed local body content. */
|
|
38
|
-
healed?: boolean;
|
|
39
|
-
/** True if frontmatter meaning or keys/values were altered during heal (false for syntax-only repair). */
|
|
40
|
-
meaningChanged?: boolean;
|
|
41
|
-
/** Local copies that diverged from the last synced baseline and were preserved in `<collection>/conflicts/`. */
|
|
42
|
-
quarantined?: QuarantinedLocalCopy[];
|
|
43
|
-
quarantineFilePath?: string;
|
|
44
|
-
suggestion?: string;
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* A local Markdown copy whose content differed from Emit's last synced baseline and was
|
|
48
|
-
* therefore preserved under `<collection>/conflicts/` before the canonical file was written.
|
|
49
|
-
* Quarantined copies are informational only: they are not tracked, pushed, or pruned.
|
|
50
|
-
*/
|
|
51
|
-
export interface QuarantinedLocalCopy {
|
|
52
|
-
/** Relative path of the local file that would have been overwritten or removed. */
|
|
53
|
-
sourceFilePath: string;
|
|
54
|
-
/** Relative path of the preserved copy inside `<collection>/conflicts/`. */
|
|
55
|
-
quarantineFilePath: string;
|
|
56
|
-
/** Why the copy was preserved: no cache baseline existed, or content diverged from it. */
|
|
57
|
-
reason: 'no-cache-baseline' | 'diverged-from-baseline';
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Human/agent readable notice describing preserved local copies.
|
|
61
|
-
* Returns an empty string when nothing was preserved.
|
|
62
|
-
*/
|
|
63
|
-
export declare function formatQuarantineNotice(quarantined?: QuarantinedLocalCopy[]): string;
|
|
64
|
-
export interface RemoteArticleItem {
|
|
65
|
-
id: string;
|
|
66
|
-
slug: string;
|
|
67
|
-
status: string;
|
|
68
|
-
title: string;
|
|
69
|
-
_rev: string;
|
|
70
|
-
rawItem: Record<string, unknown>;
|
|
71
|
-
}
|
|
72
|
-
export interface ListRemoteArticlesOptions {
|
|
73
|
-
origin: string;
|
|
74
|
-
token: string;
|
|
75
|
-
refreshToken?: string;
|
|
76
|
-
limit?: number;
|
|
77
|
-
all?: boolean;
|
|
78
|
-
status?: 'draft' | 'published' | 'all';
|
|
79
|
-
batchSize?: number;
|
|
80
|
-
fetchFn?: typeof fetch;
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* Preserves a local Markdown copy verbatim under `<collection>/conflicts/` before Emit
|
|
84
|
-
* overwrites or removes the original path. Used to guarantee that no divergent local
|
|
85
|
-
* content (e.g. an uncached file written by another tool or an older serializer) is
|
|
86
|
-
* silently discarded during a pull.
|
|
87
|
-
* Returns the relative path of the preserved copy, or null when preservation failed.
|
|
88
|
-
*/
|
|
89
|
-
/**
|
|
90
|
-
* Resolves the canonical article title from remote data symmetrically across
|
|
91
|
-
* fast-path and full-pull (EMIT-005 / v0.1.14 backlog §1).
|
|
92
|
-
*/
|
|
93
|
-
export declare function extractCanonicalRemoteTitle(rawObj: Record<string, unknown>, fallbackSlug?: string): string;
|
|
94
|
-
/**
|
|
95
|
-
* Discovers the server's maximum allowed limit for content list queries from /_emdash/api/openapi.json.
|
|
96
|
-
* Defaults to 100 if openapi.json cannot be fetched or parsed.
|
|
97
|
-
*/
|
|
98
|
-
export declare function getRemoteMaxBatchLimit(options: {
|
|
99
|
-
origin: string;
|
|
100
|
-
token?: string;
|
|
101
|
-
fetchFn?: typeof fetch;
|
|
102
|
-
}): Promise<number>;
|
|
103
|
-
/**
|
|
104
|
-
* Lists articles from EmDash API with cursor pagination and dynamic batch size detection.
|
|
105
|
-
* When status is not specified or 'all', fetches up to `limit` published articles AND
|
|
106
|
-
* up to `limit` draft articles in parallel, ensuring drafts and published posts are both covered.
|
|
107
|
-
*/
|
|
108
|
-
export declare function listRemoteArticles(collection: string, options: ListRemoteArticlesOptions): Promise<RemoteArticleItem[]>;
|
|
109
|
-
/**
|
|
110
|
-
* Pulls a content item from EmDash and updates local files and cache.
|
|
111
|
-
* Implements Differential Skip: if remote _rev matches cached rev and local file is untouched,
|
|
112
|
-
* skips disk write and AST conversion.
|
|
113
|
-
*/
|
|
114
|
-
export declare function pullArticle(collection: string, id: string, options: PullOptions): Promise<PullResult>;
|
|
1
|
+
export * from './pull/index.js';
|
|
115
2
|
//# sourceMappingURL=pull.d.ts.map
|
package/dist/sync/pull.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../src/sync/pull.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pull.d.ts","sourceRoot":"","sources":["../../src/sync/pull.ts"],"names":[],"mappings":"AAsBA,cAAc,iBAAiB,CAAC"}
|