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.
Files changed (146) hide show
  1. package/CHANGELOG.md +108 -1
  2. package/README.md +235 -187
  3. package/dist/cli/commands/delete.d.ts.map +1 -1
  4. package/dist/cli/commands/delete.js +2 -0
  5. package/dist/cli/commands/delete.js.map +1 -1
  6. package/dist/cli/commands/doctor.d.ts.map +1 -1
  7. package/dist/cli/commands/doctor.js +9 -0
  8. package/dist/cli/commands/doctor.js.map +1 -1
  9. package/dist/cli/commands/pull.d.ts +32 -0
  10. package/dist/cli/commands/pull.d.ts.map +1 -1
  11. package/dist/cli/commands/pull.js +108 -9
  12. package/dist/cli/commands/pull.js.map +1 -1
  13. package/dist/cli/commands/push.d.ts.map +1 -1
  14. package/dist/cli/commands/push.js +18 -0
  15. package/dist/cli/commands/push.js.map +1 -1
  16. package/dist/cli/commands/status.d.ts.map +1 -1
  17. package/dist/cli/commands/status.js +15 -5
  18. package/dist/cli/commands/status.js.map +1 -1
  19. package/dist/client/media.d.ts.map +1 -1
  20. package/dist/client/media.js +16 -5
  21. package/dist/client/media.js.map +1 -1
  22. package/dist/db/cache.d.ts +24 -5
  23. package/dist/db/cache.d.ts.map +1 -1
  24. package/dist/db/cache.js +308 -61
  25. package/dist/db/cache.js.map +1 -1
  26. package/dist/mcp/server.d.ts.map +1 -1
  27. package/dist/mcp/server.js +5 -3
  28. package/dist/mcp/server.js.map +1 -1
  29. package/dist/mcp/tools/sync-delete.d.ts.map +1 -1
  30. package/dist/mcp/tools/sync-delete.js +5 -0
  31. package/dist/mcp/tools/sync-delete.js.map +1 -1
  32. package/dist/mcp/tools/sync-doctor.d.ts.map +1 -1
  33. package/dist/mcp/tools/sync-doctor.js +12 -0
  34. package/dist/mcp/tools/sync-doctor.js.map +1 -1
  35. package/dist/mcp/tools/sync-pull.d.ts.map +1 -1
  36. package/dist/mcp/tools/sync-pull.js +49 -12
  37. package/dist/mcp/tools/sync-pull.js.map +1 -1
  38. package/dist/mcp/tools/sync-push.d.ts.map +1 -1
  39. package/dist/mcp/tools/sync-push.js +5 -0
  40. package/dist/mcp/tools/sync-push.js.map +1 -1
  41. package/dist/mcp/tools/sync-status.d.ts.map +1 -1
  42. package/dist/mcp/tools/sync-status.js +6 -2
  43. package/dist/mcp/tools/sync-status.js.map +1 -1
  44. package/dist/sync/conflicts.d.ts.map +1 -1
  45. package/dist/sync/conflicts.js +44 -0
  46. package/dist/sync/conflicts.js.map +1 -1
  47. package/dist/sync/delete.d.ts +3 -1
  48. package/dist/sync/delete.d.ts.map +1 -1
  49. package/dist/sync/delete.js +7 -20
  50. package/dist/sync/delete.js.map +1 -1
  51. package/dist/sync/diff.d.ts.map +1 -1
  52. package/dist/sync/diff.js +18 -2
  53. package/dist/sync/diff.js.map +1 -1
  54. package/dist/sync/doctor.d.ts +28 -1
  55. package/dist/sync/doctor.d.ts.map +1 -1
  56. package/dist/sync/doctor.js +393 -45
  57. package/dist/sync/doctor.js.map +1 -1
  58. package/dist/sync/guards.d.ts +45 -0
  59. package/dist/sync/guards.d.ts.map +1 -0
  60. package/dist/sync/guards.js +235 -0
  61. package/dist/sync/guards.js.map +1 -0
  62. package/dist/sync/media/body_scan.d.ts +15 -0
  63. package/dist/sync/media/body_scan.d.ts.map +1 -0
  64. package/dist/sync/media/body_scan.js +132 -0
  65. package/dist/sync/media/body_scan.js.map +1 -0
  66. package/dist/sync/media/companions.d.ts +20 -0
  67. package/dist/sync/media/companions.d.ts.map +1 -0
  68. package/dist/sync/media/companions.js +111 -0
  69. package/dist/sync/media/companions.js.map +1 -0
  70. package/dist/sync/media/index.d.ts +9 -0
  71. package/dist/sync/media/index.d.ts.map +1 -0
  72. package/dist/sync/media/index.js +9 -0
  73. package/dist/sync/media/index.js.map +1 -0
  74. package/dist/sync/media/mirror_item.d.ts +27 -0
  75. package/dist/sync/media/mirror_item.d.ts.map +1 -0
  76. package/dist/sync/media/mirror_item.js +207 -0
  77. package/dist/sync/media/mirror_item.js.map +1 -0
  78. package/dist/sync/media/naming_mirror.d.ts +36 -0
  79. package/dist/sync/media/naming_mirror.d.ts.map +1 -0
  80. package/dist/sync/media/naming_mirror.js +143 -0
  81. package/dist/sync/media/naming_mirror.js.map +1 -0
  82. package/dist/sync/media/pull_article.d.ts +37 -0
  83. package/dist/sync/media/pull_article.d.ts.map +1 -0
  84. package/dist/sync/media/pull_article.js +273 -0
  85. package/dist/sync/media/pull_article.js.map +1 -0
  86. package/dist/sync/media/pull_library.d.ts +12 -0
  87. package/dist/sync/media/pull_library.d.ts.map +1 -0
  88. package/dist/sync/media/pull_library.js +207 -0
  89. package/dist/sync/media/pull_library.js.map +1 -0
  90. package/dist/sync/media/remote_index.d.ts +18 -0
  91. package/dist/sync/media/remote_index.d.ts.map +1 -0
  92. package/dist/sync/media/remote_index.js +94 -0
  93. package/dist/sync/media/remote_index.js.map +1 -0
  94. package/dist/sync/media/types.d.ts +191 -0
  95. package/dist/sync/media/types.d.ts.map +1 -0
  96. package/dist/sync/media/types.js +11 -0
  97. package/dist/sync/media/types.js.map +1 -0
  98. package/dist/sync/media.d.ts +1 -74
  99. package/dist/sync/media.d.ts.map +1 -1
  100. package/dist/sync/media.js +1 -592
  101. package/dist/sync/media.js.map +1 -1
  102. package/dist/sync/merge.d.ts +11 -0
  103. package/dist/sync/merge.d.ts.map +1 -1
  104. package/dist/sync/merge.js +53 -6
  105. package/dist/sync/merge.js.map +1 -1
  106. package/dist/sync/orchestrator.d.ts +23 -0
  107. package/dist/sync/orchestrator.d.ts.map +1 -1
  108. package/dist/sync/orchestrator.js +85 -1
  109. package/dist/sync/orchestrator.js.map +1 -1
  110. package/dist/sync/preflight.d.ts +1 -1
  111. package/dist/sync/preflight.d.ts.map +1 -1
  112. package/dist/sync/preflight.js +127 -15
  113. package/dist/sync/preflight.js.map +1 -1
  114. package/dist/sync/pull.d.ts +21 -0
  115. package/dist/sync/pull.d.ts.map +1 -1
  116. package/dist/sync/pull.js +278 -17
  117. package/dist/sync/pull.js.map +1 -1
  118. package/dist/sync/push.d.ts +7 -0
  119. package/dist/sync/push.d.ts.map +1 -1
  120. package/dist/sync/push.js +135 -58
  121. package/dist/sync/push.js.map +1 -1
  122. package/dist/sync/status.d.ts +4 -0
  123. package/dist/sync/status.d.ts.map +1 -1
  124. package/dist/sync/status.js +68 -4
  125. package/dist/sync/status.js.map +1 -1
  126. package/dist/utils/config.d.ts +25 -0
  127. package/dist/utils/config.d.ts.map +1 -1
  128. package/dist/utils/config.js +28 -2
  129. package/dist/utils/config.js.map +1 -1
  130. package/dist/utils/frontmatter.d.ts +1 -1
  131. package/dist/utils/frontmatter.d.ts.map +1 -1
  132. package/dist/utils/frontmatter.js +15 -4
  133. package/dist/utils/frontmatter.js.map +1 -1
  134. package/dist/utils/media-body-refs.d.ts +81 -0
  135. package/dist/utils/media-body-refs.d.ts.map +1 -0
  136. package/dist/utils/media-body-refs.js +240 -0
  137. package/dist/utils/media-body-refs.js.map +1 -0
  138. package/dist/utils/media-refs.d.ts +44 -0
  139. package/dist/utils/media-refs.d.ts.map +1 -0
  140. package/dist/utils/media-refs.js +101 -0
  141. package/dist/utils/media-refs.js.map +1 -0
  142. package/dist/utils/naming.d.ts +31 -0
  143. package/dist/utils/naming.d.ts.map +1 -1
  144. package/dist/utils/naming.js +58 -0
  145. package/dist/utils/naming.js.map +1 -1
  146. package/package.json +1 -1
@@ -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: { total: 0, synced: 0, modified: 0, untracked: 0, invalid: 0, conflicts: 0 },
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
- if (syncState.localHash === currentHash && !conflictPending && !taxonomyApplyPending) {
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,
@@ -1 +1 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/sync/status.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/sync/status.ts"],"names":[],"mappings":"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"}
@@ -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;AAWD;;GAEG;AACH,wBAAgB,aAAa,CAAC,aAAa,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,CAqB9F;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,CA6B7D"}
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"}
@@ -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: 100,
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,
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"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"}
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,CA2H/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,iBAAiB,GAClB,MAAM,aAAa,CAAC"}
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{2}(categories|tags|[a-zA-Z0-9_-]+):\s*$/.test(line)) {
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
- // If indentation inside sequence block is slightly off (e.g. 2 or 3 spaces instead of 4)
240
- const indent = inTaxonomiesBlock && leadingSpace.length < 4 ? ' ' : leadingSpace;
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":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACvC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC7C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACjD,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC/B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CACxC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,gCAAgC,CAAC;IAC3D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,sBAAsB,CAAC;IAC/C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,uBAAuB,CAAC;IACjD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;IACvC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IACvD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC7C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAChC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC/C,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAChE,GAAG,EAAE,oBAAoB,CAAC,QAAQ,EAAE;IACpC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;CACpD,CAAC,CAAC;AAsBH,4EAA4E;AAC5E,4EAA4E;AAC5E,MAAM,oBAAoB,GAAG,uBAAuB,CAAC;AAErD;;;GAGG;AACH,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IACrC,IAAI,GAAG,yBAAyB,CAAC;IACjC,QAAQ,CAAU;IAClB,MAAM,CAAS;IACf,UAAU,CAAS;IACnB,IAAI,CAAU;IAEvB,YAAY,OAMX;QACC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,UAAU;YACb,OAAO,CAAC,UAAU;gBAClB,6IAA6I,CAAC;IAClJ,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,QAAiB;IAC9D,IAAI,MAAqC,CAAC;IAC1C,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,2BAA2B,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,IAAwB,CAAC;QAC7B,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;YACpD,MAAM,IAAI,GAAI,GAAoC,CAAC,IAAI,CAAC;YACxD,IAAI,OAAO,IAAI,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACnC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QACD,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,qBAAqB,CAAC;YAC9B,OAAO,EAAE,2BAA2B,MAAM,GAAG,OAAO,KAAK,MAAM,EAAE;YACjE,QAAQ;YACR,MAAM;YACN,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAED,IAAI,SAAsB,CAAC;IAC3B,IAAI,CAAC;QACH,SAAS,GAAG,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACnD,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,2BAA2B,CAAC,GAAG,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,qBAAqB,CAAC;YAC9B,OAAO,EAAE,6BAA6B,MAAM,KAAK,MAAM,EAAE;YACzD,QAAQ;YACR,MAAM;YACN,UAAU,EACR,8FAA8F;SACjG,CAAC,CAAC;IACL,CAAC;IAED,8EAA8E;IAC9E,2EAA2E;IAC3E,gFAAgF;IAChF,sEAAsE;IACtE,IAAI,OAAO,SAAS,CAAC,aAAa,KAAK,QAAQ,EAAE,CAAC;QAChD,MAAM,OAAO,GAAG,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QAC/C,IAAI,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACvC,SAAS,CAAC,aAAa,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QAClD,CAAC;IACH,CAAC;IAED,OAAO;QACL,WAAW,EAAE,SAAS;QACtB,IAAI,EAAE,MAAM,CAAC,OAAO;QACpB,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;KAClD,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CAAC,GAAY;IACtD,IACE,GAAG;QACH,OAAO,GAAG,KAAK,QAAQ;QACvB,QAAQ,IAAI,GAAG;QACf,KAAK,CAAC,OAAO,CAAE,GAAkB,CAAC,MAAM,CAAC,EACzC,CAAC;QACD,MAAM,MAAM,GAAI,GAAkB,CAAC,MAAM,CAAC;QAC1C,OAAO,MAAM;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;aACnF,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IACD,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QACxC,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,0BAA0B,CAAC;AACpC,CAAC;AAED,wFAAwF;AACxF,MAAM,gBAAgB,GAAG,iEAAiE,CAAC;AAE3F,kHAAkH;AAClH,sGAAsG;AACtG,MAAM,oBAAoB,GAAG,mCAAmC,CAAC;AAEjE,6HAA6H;AAC7H,qIAAqI;AACrI,MAAM,uBAAuB,GAC3B,+FAA+F,CAAC;AAElG;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,IACE,KAAK,CAAC,MAAM,KAAK,CAAC;QAClB,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC;QACjC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;QAC5B,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,EACnC,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gCAAgC,CAAC,OAAe;IAC9D,wEAAwE;IACxE,IAAI,CAAC;QACH,aAAa,CAAC,OAAO,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,oBAAoB;IACtB,CAAC;IAED,6DAA6D;IAC7D,MAAM,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,kBAAkB;QAC/B,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK,SAAS;QACrC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC7B,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAEnC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAC1E,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,sBAAsB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAExC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrC,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAC9B,IAAI,eAAe,GAAG,KAAK,CAAC;IAC5B,sFAAsF;IACtF,2FAA2F;IAC3F,IAAI,oBAAoB,GAAG,CAAC,CAAC;IAE7B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,YAAY,GAAG,IAAI,CAAC;QAExB,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,iBAAiB,GAAG,IAAI,CAAC;YACzB,eAAe,GAAG,KAAK,CAAC;YACxB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzB,SAAS;QACX,CAAC;aAAM,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACtC,iBAAiB,GAAG,KAAK,CAAC;YAC1B,eAAe,GAAG,IAAI,CAAC;YACvB,oBAAoB,GAAG,CAAC,CAAC;YACzB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzB,SAAS;QACX,CAAC;aAAM,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,oEAAoE;YACpE,iBAAiB,GAAG,KAAK,CAAC;YAC1B,eAAe,GAAG,KAAK,CAAC;QAC1B,CAAC;aAAM,IAAI,iBAAiB,IAAI,2CAA2C,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACvF,eAAe,GAAG,IAAI,CAAC;YACvB,oBAAoB,GAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAsB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YAC1E,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzB,SAAS;QACX,CAAC;QAED,mFAAmF;QACnF,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;YAC/C,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACjC,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAEhC,kGAAkG;gBAClG,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;gBACpD,IAAI,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBAClD,MAAM,eAAe,GAAG,YAAY,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAE/E,mDAAmD;gBACnD,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC9E,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;gBAChC,CAAC;gBAED,uFAAuF;gBACvF,6FAA6F;gBAC7F,MAAM,aAAa,GAAG,YAAY,CAAC,MAAM,GAAG,oBAAoB,GAAG,CAAC,CAAC;gBACrE,MAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;gBACnF,YAAY,GAAG,GAAG,MAAM,KAAK,KAAK,GAAG,eAAe,EAAE,CAAC;gBACvD,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACjC,SAAS;YACX,CAAC;QACH,CAAC;QAED,wGAAwG;QACxG,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC/C,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACjC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;YACpD,IAAI,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACpD,MAAM,eAAe,GAAG,YAAY,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAE/E,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACpF,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACpC,CAAC;YACD,YAAY,GAAG,SAAS,OAAO,GAAG,eAAe,EAAE,CAAC;YACpD,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACjC,SAAS;QACX,CAAC;QAED,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,aAAa,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9C,MAAM,aAAa,GAAG,MAAM,GAAG,GAAG,aAAa,GAAG,GAAG,MAAM,sBAAsB,EAAE,CAAC;IAEpF,IAAI,CAAC;QACH,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,GAAG,GAAG,aAAa,GAAG,GAAG,KAAK,CAAC,CAAC,IAAe,CAAC;QACnF,IAAI,CAAC,aAAa,IAAI,OAAO,aAAa,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;YACxF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,QAAQ,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC;QAC9C,kGAAkG;QAClG,IAAI,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACrF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,QAAQ,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;YACpC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC;gBAClE,IACE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;oBACnB,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EACnE,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC;QACH,CAAC;QACD,IACE,QAAQ,CAAC,WAAW,CAAC,OAAO;YAC5B,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAC3F,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,aAAa,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAiB,EAAE,UAA+B;IACtF,MAAM,KAAK,GAAa,CAAC,KAAK,CAAC,CAAC;IAEhC,KAAK,CAAC,IAAI,CAAC,OAAO,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC/C,KAAK,CAAC,IAAI,CAAC,SAAS,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnD,KAAK,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACnD,KAAK,CAAC,IAAI,CAAC,eAAe,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAC/D,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACrC,KAAK,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAC3F,KAAK,CAAC,IAAI,CAAC,WAAW,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACvD,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QACrC,KAAK,CAAC,IAAI,CACR,kBAAkB,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CACrF,CAAC;IACJ,CAAC;IAED,aAAa;IACb,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;IACzC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAE3F,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,KAAK,MAAM,GAAG,CAAC,CAAC;QAE3B,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACvC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,MAAM,WAAW,GAAG,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;YAC9F,MAAM,OAAO,GAAG,UAAU,EAAE,UAAU,EAAE,CAAC,WAAW,CAAC,IAAI,UAAU,EAAE,UAAU,EAAE,CAAC,MAAM,CAAC,CAAC;YAE1F,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,MAAM,SAAS,GAAG,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;gBAClC,MAAM,OAAO,GACX,SAAS,IAAI,SAAS,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE;oBACpF,CAAC,CAAC,MAAM,SAAS,CAAC,IAAI,EAAE,EAAE;oBAC1B,CAAC,CAAC,EAAE,CAAC;gBACT,KAAK,CAAC,IAAI,CAAC,SAAS,gBAAgB,CAAC,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM;IACN,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QACb,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnB,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,SAAS;YAAE,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC3F,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,KAAK,SAAS;YACpC,KAAK,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACvE,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,KAAK,SAAS;YAClC,KAAK,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACnE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,KAAK,SAAS;YAAE,KAAK,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACjF,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,SAAS;YAAE,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC7F,CAAC;IAED,UAAU;IACV,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACvB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;IACnC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrB,CAAC;SAAM,CAAC;QACN,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,OAAO,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,WAAwB,EACxB,IAAY,EACZ,UAA+B;IAE/B,MAAM,IAAI,GAAG,qBAAqB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;IAC7D,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,GAAG,IAAI,EAAE,CAAC;AAC7E,CAAC;AAED,OAAO,EACL,gBAAgB,EAChB,yBAAyB,EACzB,0BAA0B,EAC1B,wBAAwB,EACxB,uBAAuB,EACvB,4BAA4B,EAC5B,uBAAuB,EACvB,2BAA2B,EAC3B,iBAAiB,GAClB,MAAM,aAAa,CAAC"}
@@ -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"}