emdash-emit 0.1.13 → 0.1.15
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 +108 -1
- package/README.md +235 -187
- package/dist/cli/commands/delete.d.ts.map +1 -1
- package/dist/cli/commands/delete.js +2 -0
- 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 +9 -0
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/pull.d.ts +32 -0
- package/dist/cli/commands/pull.d.ts.map +1 -1
- package/dist/cli/commands/pull.js +108 -9
- package/dist/cli/commands/pull.js.map +1 -1
- package/dist/cli/commands/push.d.ts.map +1 -1
- package/dist/cli/commands/push.js +18 -0
- 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 +15 -5
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/client/media.d.ts.map +1 -1
- package/dist/client/media.js +16 -5
- package/dist/client/media.js.map +1 -1
- package/dist/db/cache.d.ts +24 -5
- package/dist/db/cache.d.ts.map +1 -1
- package/dist/db/cache.js +308 -61
- package/dist/db/cache.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +5 -3
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools/sync-delete.d.ts.map +1 -1
- package/dist/mcp/tools/sync-delete.js +5 -0
- package/dist/mcp/tools/sync-delete.js.map +1 -1
- package/dist/mcp/tools/sync-doctor.d.ts.map +1 -1
- package/dist/mcp/tools/sync-doctor.js +12 -0
- package/dist/mcp/tools/sync-doctor.js.map +1 -1
- package/dist/mcp/tools/sync-pull.d.ts.map +1 -1
- package/dist/mcp/tools/sync-pull.js +49 -12
- 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 +5 -0
- 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 +6 -2
- package/dist/mcp/tools/sync-status.js.map +1 -1
- package/dist/sync/conflicts.d.ts.map +1 -1
- package/dist/sync/conflicts.js +44 -0
- package/dist/sync/conflicts.js.map +1 -1
- package/dist/sync/delete.d.ts +3 -1
- package/dist/sync/delete.d.ts.map +1 -1
- package/dist/sync/delete.js +7 -20
- package/dist/sync/delete.js.map +1 -1
- package/dist/sync/diff.d.ts.map +1 -1
- package/dist/sync/diff.js +18 -2
- package/dist/sync/diff.js.map +1 -1
- package/dist/sync/doctor.d.ts +28 -1
- package/dist/sync/doctor.d.ts.map +1 -1
- package/dist/sync/doctor.js +393 -45
- package/dist/sync/doctor.js.map +1 -1
- package/dist/sync/guards.d.ts +45 -0
- package/dist/sync/guards.d.ts.map +1 -0
- package/dist/sync/guards.js +235 -0
- package/dist/sync/guards.js.map +1 -0
- package/dist/sync/media/body_scan.d.ts +15 -0
- package/dist/sync/media/body_scan.d.ts.map +1 -0
- package/dist/sync/media/body_scan.js +132 -0
- package/dist/sync/media/body_scan.js.map +1 -0
- package/dist/sync/media/companions.d.ts +20 -0
- package/dist/sync/media/companions.d.ts.map +1 -0
- package/dist/sync/media/companions.js +111 -0
- package/dist/sync/media/companions.js.map +1 -0
- package/dist/sync/media/index.d.ts +9 -0
- package/dist/sync/media/index.d.ts.map +1 -0
- package/dist/sync/media/index.js +9 -0
- package/dist/sync/media/index.js.map +1 -0
- package/dist/sync/media/mirror_item.d.ts +27 -0
- package/dist/sync/media/mirror_item.d.ts.map +1 -0
- package/dist/sync/media/mirror_item.js +207 -0
- package/dist/sync/media/mirror_item.js.map +1 -0
- package/dist/sync/media/naming_mirror.d.ts +36 -0
- package/dist/sync/media/naming_mirror.d.ts.map +1 -0
- package/dist/sync/media/naming_mirror.js +143 -0
- package/dist/sync/media/naming_mirror.js.map +1 -0
- package/dist/sync/media/pull_article.d.ts +37 -0
- package/dist/sync/media/pull_article.d.ts.map +1 -0
- package/dist/sync/media/pull_article.js +273 -0
- package/dist/sync/media/pull_article.js.map +1 -0
- package/dist/sync/media/pull_library.d.ts +12 -0
- package/dist/sync/media/pull_library.d.ts.map +1 -0
- package/dist/sync/media/pull_library.js +207 -0
- package/dist/sync/media/pull_library.js.map +1 -0
- package/dist/sync/media/remote_index.d.ts +18 -0
- package/dist/sync/media/remote_index.d.ts.map +1 -0
- package/dist/sync/media/remote_index.js +94 -0
- package/dist/sync/media/remote_index.js.map +1 -0
- package/dist/sync/media/types.d.ts +191 -0
- package/dist/sync/media/types.d.ts.map +1 -0
- package/dist/sync/media/types.js +11 -0
- package/dist/sync/media/types.js.map +1 -0
- package/dist/sync/media.d.ts +1 -74
- package/dist/sync/media.d.ts.map +1 -1
- package/dist/sync/media.js +1 -592
- package/dist/sync/media.js.map +1 -1
- package/dist/sync/merge.d.ts +11 -0
- package/dist/sync/merge.d.ts.map +1 -1
- package/dist/sync/merge.js +53 -6
- package/dist/sync/merge.js.map +1 -1
- package/dist/sync/orchestrator.d.ts +23 -0
- package/dist/sync/orchestrator.d.ts.map +1 -1
- package/dist/sync/orchestrator.js +85 -1
- package/dist/sync/orchestrator.js.map +1 -1
- package/dist/sync/preflight.d.ts +1 -1
- package/dist/sync/preflight.d.ts.map +1 -1
- package/dist/sync/preflight.js +127 -15
- package/dist/sync/preflight.js.map +1 -1
- package/dist/sync/pull.d.ts +21 -0
- package/dist/sync/pull.d.ts.map +1 -1
- package/dist/sync/pull.js +278 -17
- package/dist/sync/pull.js.map +1 -1
- package/dist/sync/push.d.ts +7 -0
- package/dist/sync/push.d.ts.map +1 -1
- package/dist/sync/push.js +135 -58
- package/dist/sync/push.js.map +1 -1
- package/dist/sync/status.d.ts +4 -0
- package/dist/sync/status.d.ts.map +1 -1
- package/dist/sync/status.js +68 -4
- package/dist/sync/status.js.map +1 -1
- package/dist/utils/config.d.ts +25 -0
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +28 -2
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/frontmatter.d.ts +1 -1
- package/dist/utils/frontmatter.d.ts.map +1 -1
- package/dist/utils/frontmatter.js +15 -4
- package/dist/utils/frontmatter.js.map +1 -1
- package/dist/utils/media-body-refs.d.ts +81 -0
- package/dist/utils/media-body-refs.d.ts.map +1 -0
- package/dist/utils/media-body-refs.js +240 -0
- package/dist/utils/media-body-refs.js.map +1 -0
- package/dist/utils/media-refs.d.ts +44 -0
- package/dist/utils/media-refs.d.ts.map +1 -0
- package/dist/utils/media-refs.js +101 -0
- package/dist/utils/media-refs.js.map +1 -0
- package/dist/utils/naming.d.ts +31 -0
- package/dist/utils/naming.d.ts.map +1 -1
- package/dist/utils/naming.js +58 -0
- package/dist/utils/naming.js.map +1 -1
- package/package.json +1 -1
package/dist/sync/status.js
CHANGED
|
@@ -21,8 +21,10 @@
|
|
|
21
21
|
*/
|
|
22
22
|
import fs from 'node:fs';
|
|
23
23
|
import path from 'node:path';
|
|
24
|
-
import { formatFrontmatterParseError, parseMarkdown } from '../utils/frontmatter.js';
|
|
25
|
-
import { calculateHash, CONFLICTS_SUBDIR } from './pull.js';
|
|
24
|
+
import { formatFrontmatterParseError, lenientRepairMarkdownFrontmatter, parseMarkdown, serializeMarkdown, } from '../utils/frontmatter.js';
|
|
25
|
+
import { calculateHash, carriesDepthFreeMediaRef, CONFLICTS_SUBDIR } from './pull.js';
|
|
26
|
+
import { localizeArticleMediaRefs } from '../utils/media-body-refs.js';
|
|
27
|
+
import { loadLocalTaxonomyCandidates } from './taxonomies.js';
|
|
26
28
|
import { compareArticleFilenameDesc, extractUlidFromFilename, stripDatePrefix, } from '../utils/naming.js';
|
|
27
29
|
/**
|
|
28
30
|
* Filters a list of article status items based on search term, slug, publication status, or sync status.
|
|
@@ -65,6 +67,39 @@ export function countQuarantinedCopies(workspaceRoot, collection = 'posts') {
|
|
|
65
67
|
return 0;
|
|
66
68
|
}
|
|
67
69
|
}
|
|
70
|
+
/**
|
|
71
|
+
* Reports whether a file whose hash disagrees with `sync_state.local_hash` is still byte-identical to its
|
|
72
|
+
* baseline once the baseline is spelled the way the disk spells it.
|
|
73
|
+
*
|
|
74
|
+
* `base_snapshots` always stores the canonical `/_emdash/api/media/file/<storageKey>` form, so re-spelling it
|
|
75
|
+
* through `localizeArticleMediaRefs` reproduces either local spelling a workspace carries — the article-relative
|
|
76
|
+
* `../../media/<key>` or the older depth-free `media/<key>`. A match proves the divergence is purely reference
|
|
77
|
+
* spelling and not an edit, which is exactly the case `emit diff` already treats as clean; status must agree or
|
|
78
|
+
* the two diagnostics disagree. Anything that still differs after this pass is a real local edit.
|
|
79
|
+
*/
|
|
80
|
+
function isBaselineSpellingMatch(workspaceRoot, cache, relPath, localContent, currentHash) {
|
|
81
|
+
const id = extractUlidFromFilename(path.basename(relPath));
|
|
82
|
+
if (!id)
|
|
83
|
+
return false;
|
|
84
|
+
const snapshot = cache.getBaseSnapshot(id);
|
|
85
|
+
if (!snapshot)
|
|
86
|
+
return false;
|
|
87
|
+
try {
|
|
88
|
+
const candidates = loadLocalTaxonomyCandidates(workspaceRoot);
|
|
89
|
+
const baseMarkdown = serializeMarkdown(JSON.parse(snapshot.frontmatterYaml), snapshot.bodyMarkdown, candidates);
|
|
90
|
+
const localizedBase = localizeArticleMediaRefs(baseMarkdown, {
|
|
91
|
+
workspaceRoot,
|
|
92
|
+
articleRelPath: relPath,
|
|
93
|
+
fs,
|
|
94
|
+
preferLegacyRef: carriesDepthFreeMediaRef(localContent),
|
|
95
|
+
});
|
|
96
|
+
return calculateHash(localizedBase) === currentHash;
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
// An unreadable or malformed baseline cannot certify the file as untouched.
|
|
100
|
+
return false;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
68
103
|
/**
|
|
69
104
|
* Scans the workspace directory and compares files against cache.db to compute sync status.
|
|
70
105
|
*/
|
|
@@ -74,7 +109,15 @@ export function getWorkspaceStatus(workspaceRoot, cache, collection = 'posts') {
|
|
|
74
109
|
if (!fs.existsSync(collectionDir)) {
|
|
75
110
|
return {
|
|
76
111
|
items: [],
|
|
77
|
-
summary: {
|
|
112
|
+
summary: {
|
|
113
|
+
total: 0,
|
|
114
|
+
synced: 0,
|
|
115
|
+
modified: 0,
|
|
116
|
+
untracked: 0,
|
|
117
|
+
invalid: 0,
|
|
118
|
+
healableInvalid: 0,
|
|
119
|
+
conflicts: 0,
|
|
120
|
+
},
|
|
78
121
|
};
|
|
79
122
|
}
|
|
80
123
|
// Scan draft/ and published/ subdirectories
|
|
@@ -97,7 +140,23 @@ export function getWorkspaceStatus(workspaceRoot, cache, collection = 'posts') {
|
|
|
97
140
|
const deletePending = syncState?.deletePending === 1;
|
|
98
141
|
const taxonomyApplyPending = syncState?.taxonomyApplyPending === 1;
|
|
99
142
|
if (syncState) {
|
|
100
|
-
|
|
143
|
+
// `local_hash` is supposed to record the exact bytes on disk, but a workspace whose articles were
|
|
144
|
+
// written before media-ref localization existed keeps a hash of the *canonical* spelling while the
|
|
145
|
+
// file itself carries `../../media/<storageKey>` — pull's post-pass re-spelled the disk without
|
|
146
|
+
// re-tracking it. A legacy cache can therefore disagree with the disk purely on reference spelling.
|
|
147
|
+
// Ask the baseline, which stores the canonical form: when localizing it reproduces exactly what the
|
|
148
|
+
// disk carries, the article is untouched and must read as synced, the same rule `emit diff` applies.
|
|
149
|
+
// Only a file that actually diverges from its baseline falls through to 'modified'.
|
|
150
|
+
const hashMatches = syncState.localHash === currentHash;
|
|
151
|
+
const spellingMatch = !hashMatches &&
|
|
152
|
+
isBaselineSpellingMatch(workspaceRoot, cache, relPath, content, currentHash);
|
|
153
|
+
if (spellingMatch) {
|
|
154
|
+
// Re-track the file against its own bytes so later passes skip it outright instead of re-reading
|
|
155
|
+
// and re-localizing the baseline on every status call. Values are untouched — only the recorded
|
|
156
|
+
// hash catches up with the spelling already on disk.
|
|
157
|
+
cache.saveSyncState({ ...syncState, localHash: currentHash });
|
|
158
|
+
}
|
|
159
|
+
if ((hashMatches || spellingMatch) && !conflictPending && !taxonomyApplyPending) {
|
|
101
160
|
syncStatus = 'synced';
|
|
102
161
|
}
|
|
103
162
|
else {
|
|
@@ -125,6 +184,9 @@ export function getWorkspaceStatus(workspaceRoot, cache, collection = 'posts') {
|
|
|
125
184
|
: baseWithoutDate;
|
|
126
185
|
const syncState = fallbackId !== 'unknown' ? cache.getSyncState(fallbackId) : null;
|
|
127
186
|
const errorMsg = formatFrontmatterParseError(err);
|
|
187
|
+
// Match `emit doctor`: distinguish files that a syntax-only lenient repair can recover from
|
|
188
|
+
// files with unrecoverable frontmatter, so status and doctor never disagree.
|
|
189
|
+
const healable = lenientRepairMarkdownFrontmatter(content) !== null;
|
|
128
190
|
items.push({
|
|
129
191
|
id: fallbackId,
|
|
130
192
|
slug: syncState?.slug || 'invalid-frontmatter',
|
|
@@ -134,6 +196,7 @@ export function getWorkspaceStatus(workspaceRoot, cache, collection = 'posts') {
|
|
|
134
196
|
filePath: relPath,
|
|
135
197
|
rev: syncState?.remoteRev,
|
|
136
198
|
cached: Boolean(syncState),
|
|
199
|
+
healable: healable || undefined,
|
|
137
200
|
error: errorMsg,
|
|
138
201
|
});
|
|
139
202
|
}
|
|
@@ -147,6 +210,7 @@ export function getWorkspaceStatus(workspaceRoot, cache, collection = 'posts') {
|
|
|
147
210
|
modified: items.filter((i) => i.syncStatus === 'modified').length,
|
|
148
211
|
untracked: items.filter((i) => i.syncStatus === 'untracked').length,
|
|
149
212
|
invalid: items.filter((i) => i.syncStatus === 'invalid').length,
|
|
213
|
+
healableInvalid: items.filter((i) => i.syncStatus === 'invalid' && i.healable).length,
|
|
150
214
|
conflicts: countQuarantinedCopies(workspaceRoot, collection),
|
|
151
215
|
flags: {
|
|
152
216
|
conflictPending: items.filter((i) => i.conflictPending).length,
|
package/dist/sync/status.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/sync/status.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/sync/status.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/config.d.ts
CHANGED
|
@@ -7,6 +7,14 @@ export interface EmitConfig {
|
|
|
7
7
|
postsSyncLimit?: number;
|
|
8
8
|
mediaSyncLimit?: number;
|
|
9
9
|
concurrency?: number;
|
|
10
|
+
/**
|
|
11
|
+
* When true (the default), a pulled article writes mirrored body images as article-relative
|
|
12
|
+
* `../../media/<storageKey>` references — the depth derived from the article's own path — so an editor
|
|
13
|
+
* preview renders them from the local mirror. The cache baseline and every remote payload keep the canonical
|
|
14
|
+
* `/_emdash/api/media/file/<storageKey>` URL regardless, so this only changes how the file on disk spells an
|
|
15
|
+
* asset Emit already mirrors.
|
|
16
|
+
*/
|
|
17
|
+
localMediaRefs?: boolean;
|
|
10
18
|
/**
|
|
11
19
|
* Package version that initialized this workspace.
|
|
12
20
|
*/
|
|
@@ -26,10 +34,27 @@ export declare const DEFAULT_ORIGIN = "https://example.com";
|
|
|
26
34
|
* Returns the trimmed `EMDASH_ORIGIN` override, or undefined when unset.
|
|
27
35
|
*/
|
|
28
36
|
export declare function getEnvOrigin(): string | undefined;
|
|
37
|
+
export declare const DEFAULT_CONFIG: {
|
|
38
|
+
readonly origin: "https://example.com";
|
|
39
|
+
readonly defaultCollection: 'posts';
|
|
40
|
+
readonly defaultLocale: 'ja';
|
|
41
|
+
readonly postsSyncLimit: 30;
|
|
42
|
+
readonly mediaSyncLimit: 300;
|
|
43
|
+
readonly concurrency: 8;
|
|
44
|
+
readonly localMediaRefs: true;
|
|
45
|
+
};
|
|
29
46
|
/**
|
|
30
47
|
* Initializes a new .emit workspace directory with default config.
|
|
31
48
|
*/
|
|
32
49
|
export declare function initWorkspace(workspaceRoot: string, initialConfig?: Partial<EmitConfig>): void;
|
|
50
|
+
/**
|
|
51
|
+
* Persists the `localMediaRefs` workspace preference into `.emit/config.json`.
|
|
52
|
+
*
|
|
53
|
+
* The setting decides how mirrored body images are spelled on disk, so it must survive across commands: a pull
|
|
54
|
+
* that writes `media/<storageKey>` references has to be matched by every later push and diff. Only touches the
|
|
55
|
+
* one key and leaves the rest of the config untouched.
|
|
56
|
+
*/
|
|
57
|
+
export declare function persistLocalMediaRefs(workspaceRoot: string, value: boolean): void;
|
|
33
58
|
/**
|
|
34
59
|
* Updates `lastSyncedVersion` in `.emit/config.json` after a successful sync operation.
|
|
35
60
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AA2BA,MAAM,WAAW,UAAU;IACzB,iGAAiG;IACjG,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,cAAc,wBAAwB,CAAC;AAEpD;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,GAAG,SAAS,CAGjD;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AA2BA,MAAM,WAAW,UAAU;IACzB,iGAAiG;IACjG,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,cAAc,wBAAwB,CAAC;AAEpD;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,GAAG,SAAS,CAGjD;AAED,eAAO,MAAM,cAAc;;gCAEN,OAAO;4BACX,IAAI;6BACH,EAAE;6BACF,GAAG;0BACN,CAAC;;CAEe,CAAC;AAEhC;;GAEG;AACH,wBAAgB,aAAa,CAAC,aAAa,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,CAqB9F;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI,CAYjF;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAgBvF;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,UAAU,CAiC7D"}
|
package/dist/utils/config.js
CHANGED
|
@@ -31,13 +31,14 @@ export function getEnvOrigin() {
|
|
|
31
31
|
const value = process.env.EMDASH_ORIGIN?.trim();
|
|
32
32
|
return value ? value : undefined;
|
|
33
33
|
}
|
|
34
|
-
const DEFAULT_CONFIG = {
|
|
34
|
+
export const DEFAULT_CONFIG = {
|
|
35
35
|
origin: DEFAULT_ORIGIN,
|
|
36
36
|
defaultCollection: 'posts',
|
|
37
37
|
defaultLocale: 'ja',
|
|
38
|
-
postsSyncLimit:
|
|
38
|
+
postsSyncLimit: 30,
|
|
39
39
|
mediaSyncLimit: 300,
|
|
40
40
|
concurrency: 8,
|
|
41
|
+
localMediaRefs: true,
|
|
41
42
|
};
|
|
42
43
|
/**
|
|
43
44
|
* Initializes a new .emit workspace directory with default config.
|
|
@@ -60,6 +61,27 @@ export function initWorkspace(workspaceRoot, initialConfig) {
|
|
|
60
61
|
};
|
|
61
62
|
fs.writeFileSync(paths.configPath, JSON.stringify(config, null, 2), 'utf8');
|
|
62
63
|
}
|
|
64
|
+
/**
|
|
65
|
+
* Persists the `localMediaRefs` workspace preference into `.emit/config.json`.
|
|
66
|
+
*
|
|
67
|
+
* The setting decides how mirrored body images are spelled on disk, so it must survive across commands: a pull
|
|
68
|
+
* that writes `media/<storageKey>` references has to be matched by every later push and diff. Only touches the
|
|
69
|
+
* one key and leaves the rest of the config untouched.
|
|
70
|
+
*/
|
|
71
|
+
export function persistLocalMediaRefs(workspaceRoot, value) {
|
|
72
|
+
try {
|
|
73
|
+
const paths = getWorkspacePaths(workspaceRoot);
|
|
74
|
+
if (!fs.existsSync(paths.configPath))
|
|
75
|
+
return;
|
|
76
|
+
const raw = fs.readFileSync(paths.configPath, 'utf8');
|
|
77
|
+
const parsed = JSON.parse(raw);
|
|
78
|
+
parsed.localMediaRefs = value;
|
|
79
|
+
fs.writeFileSync(paths.configPath, JSON.stringify(parsed, null, 2), 'utf8');
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
// Non-fatal if config update fails
|
|
83
|
+
}
|
|
84
|
+
}
|
|
63
85
|
/**
|
|
64
86
|
* Updates `lastSyncedVersion` in `.emit/config.json` after a successful sync operation.
|
|
65
87
|
*/
|
|
@@ -104,6 +126,10 @@ export function loadConfig(workspaceRoot) {
|
|
|
104
126
|
postsSyncLimit: parsed.postsSyncLimit || DEFAULT_CONFIG.postsSyncLimit,
|
|
105
127
|
mediaSyncLimit: parsed.mediaSyncLimit || DEFAULT_CONFIG.mediaSyncLimit,
|
|
106
128
|
concurrency: parsed.concurrency || DEFAULT_CONFIG.concurrency,
|
|
129
|
+
// Local-first media refs are default-ON: a mirrored body image is spelled as an article-relative
|
|
130
|
+
// `../../media/<storageKey>` reference so preview resolves offline. Only an explicit `false` opts back out;
|
|
131
|
+
// an absent key (a workspace predating the setting) now defaults to local refs rather than canonical URLs.
|
|
132
|
+
localMediaRefs: parsed.localMediaRefs ?? DEFAULT_CONFIG.localMediaRefs,
|
|
107
133
|
createdWithVersion: parsed.createdWithVersion,
|
|
108
134
|
lastSyncedVersion: parsed.lastSyncedVersion,
|
|
109
135
|
envOrigin,
|
package/dist/utils/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -158,5 +158,5 @@ export declare function formatFrontmatterYaml(data: Frontmatter, candidates?: Ta
|
|
|
158
158
|
* Serializes frontmatter and markdown body into a full document.
|
|
159
159
|
*/
|
|
160
160
|
export declare function serializeMarkdown(frontmatter: Frontmatter, body: string, candidates?: TaxonomyCandidates): string;
|
|
161
|
-
export { formatDatePrefix, extractDatePrefixFromPath, computeArticleRelativePath, sanitizeTitleForFilename, DEFAULT_MAX_TITLE_BYTES, truncateUtf8Bytes, } from './naming.js';
|
|
161
|
+
export { formatDatePrefix, extractDatePrefixFromPath, computeArticleRelativePath, sanitizeTitleForFilename, storageKeyToMarkdownRef, collisionSuffixedMarkdownRef, DEFAULT_MAX_TITLE_BYTES, DEFAULT_MAX_MEDIA_REF_BYTES, truncateUtf8Bytes, } from './naming.js';
|
|
162
162
|
//# sourceMappingURL=frontmatter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frontmatter.d.ts","sourceRoot":"","sources":["../../src/utils/frontmatter.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;EAM/B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAY5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,MAAM,WAAW,kBAAkB;IACjC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,CAAC,EAAE;QACX,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAClC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;KACnD,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAA;KAAE,GAAG,SAAS,CAAC;CAC3F;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,WAAW,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD;;;GAGG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,QAAQ,CAAC,IAAI,6BAA6B;IAC1C,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEvB,YAAY,OAAO,EAAE;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,EASA;CACF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,cAAc,CAsDhF;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAgBhE;AAcD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAUtD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"frontmatter.d.ts","sourceRoot":"","sources":["../../src/utils/frontmatter.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;EAM/B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAY5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,MAAM,WAAW,kBAAkB;IACjC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,CAAC,EAAE;QACX,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAClC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;KACnD,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG;QAAE,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAAA;KAAE,GAAG,SAAS,CAAC;CAC3F;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,WAAW,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD;;;GAGG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,QAAQ,CAAC,IAAI,6BAA6B;IAC1C,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEvB,YAAY,OAAO,EAAE;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,EASA;CACF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,cAAc,CAsDhF;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAgBhE;AAcD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAUtD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAsI/E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,kBAAkB,GAAG,MAAM,CAmEhG;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,kBAAkB,GAC9B,MAAM,CAIR;AAED,OAAO,EACL,gBAAgB,EAChB,yBAAyB,EACzB,0BAA0B,EAC1B,wBAAwB,EACxB,uBAAuB,EACvB,4BAA4B,EAC5B,uBAAuB,EACvB,2BAA2B,EAC3B,iBAAiB,GAClB,MAAM,aAAa,CAAC"}
|
|
@@ -198,6 +198,9 @@ export function lenientRepairMarkdownFrontmatter(content) {
|
|
|
198
198
|
const repairedLines = [];
|
|
199
199
|
let inTaxonomiesBlock = false;
|
|
200
200
|
let inSequenceBlock = false;
|
|
201
|
+
// Indentation level (leading spaces) of the taxonomy key line that opened the current
|
|
202
|
+
// sequence block, so nested sequences can be re-indented relative to their own parent key.
|
|
203
|
+
let sequenceParentIndent = 2;
|
|
201
204
|
for (const line of lines) {
|
|
202
205
|
let repairedLine = line;
|
|
203
206
|
if (/^taxonomies:\s*$/.test(line)) {
|
|
@@ -209,6 +212,7 @@ export function lenientRepairMarkdownFrontmatter(content) {
|
|
|
209
212
|
else if (/^bylines:\s*$/.test(line)) {
|
|
210
213
|
inTaxonomiesBlock = false;
|
|
211
214
|
inSequenceBlock = true;
|
|
215
|
+
sequenceParentIndent = 0;
|
|
212
216
|
repairedLines.push(line);
|
|
213
217
|
continue;
|
|
214
218
|
}
|
|
@@ -217,8 +221,9 @@ export function lenientRepairMarkdownFrontmatter(content) {
|
|
|
217
221
|
inTaxonomiesBlock = false;
|
|
218
222
|
inSequenceBlock = false;
|
|
219
223
|
}
|
|
220
|
-
else if (inTaxonomiesBlock && /^\s
|
|
224
|
+
else if (inTaxonomiesBlock && /^\s+(categories|tags|[a-zA-Z0-9_-]+):\s*$/.test(line)) {
|
|
221
225
|
inSequenceBlock = true;
|
|
226
|
+
sequenceParentIndent = line.match(/^\s*/)[0].length;
|
|
222
227
|
repairedLines.push(line);
|
|
223
228
|
continue;
|
|
224
229
|
}
|
|
@@ -236,8 +241,10 @@ export function lenientRepairMarkdownFrontmatter(content) {
|
|
|
236
241
|
if (value.startsWith('%') && !value.startsWith('"') && !value.startsWith("'")) {
|
|
237
242
|
value = JSON.stringify(value);
|
|
238
243
|
}
|
|
239
|
-
//
|
|
240
|
-
|
|
244
|
+
// Re-indent only when the item sits shallower than its parent key's indentation, which
|
|
245
|
+
// js-yaml rejects (legacy serialization emitted 2-space items under a 2-space taxonomy key).
|
|
246
|
+
const needsReindent = leadingSpace.length < sequenceParentIndent + 2;
|
|
247
|
+
const indent = needsReindent ? ' '.repeat(sequenceParentIndent + 2) : leadingSpace;
|
|
241
248
|
repairedLine = `${indent}- ${value}${trailingComment}`;
|
|
242
249
|
repairedLines.push(repairedLine);
|
|
243
250
|
continue;
|
|
@@ -262,6 +269,10 @@ export function lenientRepairMarkdownFrontmatter(content) {
|
|
|
262
269
|
const candidateYaml = repairedLines.join(eol);
|
|
263
270
|
const candidateFull = `---${eol}${candidateYaml}${eol}---${bodyWithLeadingNewline}`;
|
|
264
271
|
try {
|
|
272
|
+
const candidateData = matter(`---${eol}${candidateYaml}${eol}---`).data;
|
|
273
|
+
if (!candidateData || typeof candidateData !== 'object' || Array.isArray(candidateData)) {
|
|
274
|
+
return null;
|
|
275
|
+
}
|
|
265
276
|
const reparsed = parseMarkdown(candidateFull);
|
|
266
277
|
// Extra validation: verify that slug, IDs, taxonomies, and bylines were not corrupted by comments
|
|
267
278
|
if (reparsed.frontmatter.slug.includes('#') || reparsed.frontmatter.id.includes('#')) {
|
|
@@ -358,5 +369,5 @@ export function serializeMarkdown(frontmatter, body, candidates) {
|
|
|
358
369
|
const cleanBody = body.startsWith('\n') ? body : `\n${body}`;
|
|
359
370
|
return `${yaml}${cleanBody.endsWith('\n') ? cleanBody : cleanBody + '\n'}`;
|
|
360
371
|
}
|
|
361
|
-
export { formatDatePrefix, extractDatePrefixFromPath, computeArticleRelativePath, sanitizeTitleForFilename, DEFAULT_MAX_TITLE_BYTES, truncateUtf8Bytes, } from './naming.js';
|
|
372
|
+
export { formatDatePrefix, extractDatePrefixFromPath, computeArticleRelativePath, sanitizeTitleForFilename, storageKeyToMarkdownRef, collisionSuffixedMarkdownRef, DEFAULT_MAX_TITLE_BYTES, DEFAULT_MAX_MEDIA_REF_BYTES, truncateUtf8Bytes, } from './naming.js';
|
|
362
373
|
//# sourceMappingURL=frontmatter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frontmatter.js","sourceRoot":"","sources":["../../src/utils/frontmatter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"frontmatter.js","sourceRoot":"","sources":["../../src/utils/frontmatter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/** Canonical root-relative media route prefix EmDash writes into Portable Text image blocks. */
|
|
2
|
+
export declare const MEDIA_FILE_ROUTE_PREFIX = "/_emdash/api/media/file/";
|
|
3
|
+
/** Workspace-relative directory a mirrored asset lives in. */
|
|
4
|
+
export declare const MEDIA_DIR_PREFIX = "media/";
|
|
5
|
+
/** Extracts the storageKey from a canonical `/_emdash/api/media/file/<storageKey>` URL. */
|
|
6
|
+
export declare function storageKeyFromCanonicalUrl(url: string): string | null;
|
|
7
|
+
/** Reports whether a Markdown image URL already carries the canonical EmDash media file route. */
|
|
8
|
+
export declare function isCanonicalMediaUrl(url: string): boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Reports whether a Markdown image URL is a reference into `media/` — either workspace-relative (`media/<key>`)
|
|
11
|
+
* or spelled from the article's own directory (`../../media/<key>`). Deliberately strict so an arbitrary
|
|
12
|
+
* hand-written path (`./hero.png`, `../uploads/x.jpg`) or a staging draft (`media/drafts/x.png`) is never
|
|
13
|
+
* mistaken for a canonicalized local reference.
|
|
14
|
+
*/
|
|
15
|
+
export declare function isLocalMediaRef(url: string): boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Rewrites canonical body image URLs into local mirror references.
|
|
18
|
+
*
|
|
19
|
+
* Only a standalone Markdown image line whose URL is the canonical media route AND whose storageKey names an
|
|
20
|
+
* existing file under `media/` is rewritten. Anything else — an external `https://` src, a data URL, a
|
|
21
|
+
* reference whose asset is not mirrored, an inline image inside a paragraph, an opaque EmDash block fence —
|
|
22
|
+
* is left exactly as it arrived, so the transform never invents a broken local link and never rewrites a line
|
|
23
|
+
* Emit's push guards would refuse to restore.
|
|
24
|
+
*
|
|
25
|
+
* A line that already carries a local mirror reference is normalized rather than skipped: its storageKey is
|
|
26
|
+
* recovered through `storageKeyFromMirrorRef` and rewritten into this function's own spelling, so re-localizing
|
|
27
|
+
* a document is idempotent and a file written at another depth (a legacy workspace ref, or an article moved
|
|
28
|
+
* between `draft/` and `published/`) converges on the requested form instead of being reported as an edit.
|
|
29
|
+
*
|
|
30
|
+
* When `articleRelPath` is supplied the reference is spelled relative to that article's own directory
|
|
31
|
+
* (`../../media/<storageKey>` for `posts/draft/…`), which is what lets a Markdown preview resolve the mirror
|
|
32
|
+
* offline. Without it the reference stays workspace-relative (`media/<storageKey>`), the spelling older
|
|
33
|
+
* workspaces carry on disk.
|
|
34
|
+
*/
|
|
35
|
+
export declare function canonicalToLocalMediaRefs(body: string, options: {
|
|
36
|
+
mediaDir: string;
|
|
37
|
+
fs: {
|
|
38
|
+
existsSync(p: string): boolean;
|
|
39
|
+
};
|
|
40
|
+
articleRelPath?: string;
|
|
41
|
+
}): string;
|
|
42
|
+
/**
|
|
43
|
+
* Resolves a local mirror reference back to its storageKey.
|
|
44
|
+
*
|
|
45
|
+
* A reference that spells a storageKey outright (`media/<storageKey>` or the article-relative
|
|
46
|
+
* `../../media/<storageKey>`) is returned verbatim: the key names its own mirror, so no lookup is needed. Any
|
|
47
|
+
* other name — a `<stem>--<mediaId>` collision suffix or a truncated stem — is recovered by asking
|
|
48
|
+
* `candidateStorageKeys`, the storageKeys Emit has confirmed through `media_state` and companion YAML, which
|
|
49
|
+
* one sanitizes to that stem. A reference no confirmed mirror owns yields null, so a hand-written path still
|
|
50
|
+
* reaches the push guards instead of being silently rewritten.
|
|
51
|
+
*/
|
|
52
|
+
export declare function storageKeyFromMirrorRef(rawPath: string, candidateStorageKeys: Iterable<string>): string | null;
|
|
53
|
+
/**
|
|
54
|
+
* Builds the `../../` depth an article at `articleRelPath` needs to reach `media/` from its own directory,
|
|
55
|
+
* matching the prefix the draft-image guards already accept.
|
|
56
|
+
*/
|
|
57
|
+
export declare function mediaRefPrefixForArticle(articleRelPath: string): string;
|
|
58
|
+
/**
|
|
59
|
+
* Chooses which local spelling a Markdown document should carry on disk.
|
|
60
|
+
*
|
|
61
|
+
* The canonical `/_emdash/api/media/file/<storageKey>` URL is what every baseline, cache hash and remote payload
|
|
62
|
+
* records; only the file an editor reads may be spelled locally. This helper decides that spelling from what
|
|
63
|
+
* the workspace already holds: a fresh write prefers the article-relative form (`../../media/<storageKey>`) so
|
|
64
|
+
* a Markdown preview resolves the mirror offline, while a document already written in the depth-free legacy form
|
|
65
|
+
* (`preferLegacyRef`, read back from disk) is reproduced in that same form. Reproducing the disk's own spelling
|
|
66
|
+
* is what keeps `sync_state.local_hash` and an unchanged article's diff honest — re-spelling a file the user
|
|
67
|
+
* never edited would report a media rewrite nobody made.
|
|
68
|
+
*
|
|
69
|
+
* A storageKey with no mirrored binary under `media/` stays canonical in every mode, so the transform can never
|
|
70
|
+
* invent a broken local link.
|
|
71
|
+
*/
|
|
72
|
+
export declare function localizeArticleMediaRefs(body: string, options: {
|
|
73
|
+
workspaceRoot: string;
|
|
74
|
+
articleRelPath: string;
|
|
75
|
+
fs: {
|
|
76
|
+
existsSync(p: string): boolean;
|
|
77
|
+
};
|
|
78
|
+
/** Reproduce the depth-free `media/<storageKey>` spelling instead of preferring the article-relative one. */
|
|
79
|
+
preferLegacyRef?: boolean;
|
|
80
|
+
}): string;
|
|
81
|
+
//# sourceMappingURL=media-body-refs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-body-refs.d.ts","sourceRoot":"","sources":["../../src/utils/media-body-refs.ts"],"names":[],"mappings":"AA8CA,gGAAgG;AAChG,eAAO,MAAM,uBAAuB,6BAA6B,CAAC;AAElE,8DAA8D;AAC9D,eAAO,MAAM,gBAAgB,WAAW,CAAC;AAmBzC,2FAA2F;AAC3F,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKrE;AAED,kGAAkG;AAClG,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAExD;AASD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAGpD;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IACP,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE;QAAE,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IACvC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,GACA,MAAM,CA+BR;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,GACrC,MAAM,GAAG,IAAI,CAsBf;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAIvE;AAyBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IACP,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,EAAE,EAAE;QAAE,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IACvC,6GAA6G;IAC7G,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,GACA,MAAM,CAiBR"}
|