@mdzip/editor 1.2.5 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/workspace.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { MdzArchiveCore, MdzPackagerCore } from '@mdzip/core-js';
2
- import { buildNewArchiveBytesWithTitle, blobToBytes, openedArchiveFromWorkspace, readBinaryFileFromArchive } from './archive-utils.js';
2
+ import { buildNewArchiveBytesWithTitle, blobToBytes, findOrphanedAssetPathsInArchive, openedArchiveFromWorkspace, readBinaryFileFromArchive } from './archive-utils.js';
3
3
  import { displayTitleFromManifest, fileBaseNameFromPath, firstMarkdownHeading, suggestedTitleFromMarkdown } from './metadata.js';
4
4
  export class MdzipReadOnlyError extends Error {
5
5
  constructor(operation) {
@@ -15,6 +15,12 @@ export class MdzipWorkspaceService {
15
15
  this.currentPathTypeValue = 'markdown';
16
16
  this.dirtyValue = false;
17
17
  this.pendingTextDirty = false;
18
+ // Ledger of entry-level changes not yet written to archiveBytes. Lets
19
+ // serializeWorkspaceBytes() patch the existing archive in place instead of
20
+ // rebuilding it from the workspace model (which would force every lazy
21
+ // document to be decompressed and recompressed).
22
+ this.pendingWrites = new Map();
23
+ this.pendingRemovals = new Map();
18
24
  // Orphaned paths derived from the current in-memory text; null means use contentValue.
19
25
  this.liveOrphanedPaths = null;
20
26
  this.archiveBytes = bytes;
@@ -38,14 +44,16 @@ export class MdzipWorkspaceService {
38
44
  const title = suggestedTitleFromMarkdown(markdown, fileBaseNameFromPath(resolvedOptions.fileName));
39
45
  const archiveBytes = await buildNewArchiveBytesWithTitle(markdown, title);
40
46
  const coreWorkspace = await MdzArchiveCore.openWorkspace(archiveBytes, {
41
- includeOrphanedAssetAnalysis: true
47
+ includeOrphanedAssetAnalysis: false,
48
+ includeLazyDocumentReaders: true
42
49
  });
43
50
  const workspace = new MdzipWorkspaceService(archiveBytes, coreWorkspace, await openedArchiveFromWorkspace(coreWorkspace), resolvedOptions);
44
51
  workspace.currentTextValue = markdown;
45
52
  return workspace;
46
53
  }
47
54
  const coreWorkspace = await MdzArchiveCore.openWorkspace(bytes, {
48
- includeOrphanedAssetAnalysis: true
55
+ includeOrphanedAssetAnalysis: false,
56
+ includeLazyDocumentReaders: true
49
57
  });
50
58
  return new MdzipWorkspaceService(bytes, coreWorkspace, await openedArchiveFromWorkspace(coreWorkspace), resolvedOptions);
51
59
  }
@@ -55,7 +63,7 @@ export class MdzipWorkspaceService {
55
63
  sourceFormat: options.sourceFormat ?? 'mdz',
56
64
  fileName: options.fileName ?? 'document.mdz'
57
65
  };
58
- return new MdzipWorkspaceService(new Uint8Array(), workspace, await openedArchiveFromWorkspace(workspace), resolvedOptions);
66
+ return new MdzipWorkspaceService(options.archiveBytes ?? new Uint8Array(), workspace, await openedArchiveFromWorkspace(workspace), resolvedOptions);
59
67
  }
60
68
  subscribe(listener) {
61
69
  this.listeners.add(listener);
@@ -200,6 +208,7 @@ export class MdzipWorkspaceService {
200
208
  this.commitPendingTextToWorkspace();
201
209
  const asset = await MdzPackagerCore.createWorkspaceAssetFromFile(fileBytes, archivePath);
202
210
  this.upsertWorkspaceAsset(asset);
211
+ this.recordPendingWrite(archivePath, fileBytes);
203
212
  await this.reloadPreservingCurrentText(await this.serializeWorkspaceBytes());
204
213
  this.dirtyValue = true;
205
214
  this.emit('edit', ['asset'], archivePath);
@@ -220,20 +229,187 @@ export class MdzipWorkspaceService {
220
229
  }
221
230
  this.commitPendingTextToWorkspace();
222
231
  if (options.requireOrphaned) {
223
- const orphaned = this.workspaceValue.orphanedAssets?.orphanedAssetPaths ?? this.contentValue.orphanedAssetPaths;
232
+ const orphaned = this.liveOrphanedPaths
233
+ ?? this.workspaceValue.orphanedAssets?.orphanedAssetPaths
234
+ ?? this.contentValue.orphanedAssetPaths;
224
235
  if (!new Set(orphaned.map((path) => path.toLowerCase())).has(target.path.toLowerCase())) {
225
236
  return false;
226
237
  }
227
238
  }
228
239
  this.workspaceValue.assets = this.workspaceValue.assets.filter((asset) => asset.path.toLowerCase() !== target.path.toLowerCase());
240
+ this.recordPendingRemoval(target.path);
229
241
  await this.reloadPreservingCurrentText(await this.serializeWorkspaceBytes(), target.path);
230
242
  this.dirtyValue = true;
231
243
  this.emit('edit', ['asset'], target.path);
232
244
  return true;
233
245
  }
246
+ /**
247
+ * Removes any deletable file from the archive: assets (like `removeAsset`)
248
+ * and non-entry markdown documents. The entry-point document and
249
+ * `manifest.json` are never removable; returns `false` for those.
250
+ */
251
+ async removeFile(archivePath) {
252
+ this.assertEditable('remove file');
253
+ const target = this.findPath(archivePath);
254
+ if (!target) {
255
+ return false;
256
+ }
257
+ const lower = target.path.toLowerCase();
258
+ if (lower === 'manifest.json') {
259
+ return false;
260
+ }
261
+ const document = this.workspaceValue.documents.find((doc) => doc.path.toLowerCase() === lower);
262
+ if (!document) {
263
+ return this.removeAsset(target.path);
264
+ }
265
+ if (lower === this.entryPointPath().toLowerCase()) {
266
+ return false;
267
+ }
268
+ this.commitPendingTextToWorkspace();
269
+ this.workspaceValue.documents = this.workspaceValue.documents.filter((doc) => doc !== document);
270
+ this.recordPendingRemoval(target.path);
271
+ await this.reloadPreservingCurrentText(await this.serializeWorkspaceBytes(), target.path);
272
+ this.dirtyValue = true;
273
+ this.emit('edit', ['document'], target.path);
274
+ return true;
275
+ }
276
+ /**
277
+ * Makes an existing markdown document the archive entry point. Updates the
278
+ * manifest (`entryPoint`) and the in-memory workspace model, then reloads.
279
+ * Returns `false` when the path is not a document or is already the entry.
280
+ */
281
+ async setEntryPoint(archivePath) {
282
+ this.assertEditable('set entry point');
283
+ if (this.sourceFormatValue !== 'mdz') {
284
+ return false;
285
+ }
286
+ const document = this.workspaceValue.documents.find((doc) => doc.path.toLowerCase() === archivePath.toLowerCase());
287
+ if (!document || document.path.toLowerCase() === this.entryPointPath().toLowerCase()) {
288
+ return false;
289
+ }
290
+ this.commitPendingTextToWorkspace();
291
+ for (const doc of this.workspaceValue.documents) {
292
+ doc.isEntryPoint = doc === document;
293
+ }
294
+ this.workspaceValue.entryPoint = document.path;
295
+ this.workspaceValue.manifest = MdzPackagerCore.updateManifest(this.workspaceValue.manifest, { entryPoint: document.path });
296
+ if (this.archiveBytes.length > 0) {
297
+ await this.reloadPreservingCurrentText(await this.serializeWorkspaceBytes());
298
+ }
299
+ else {
300
+ // No bytes to patch (openWorkspace host) — keep the change in memory,
301
+ // mirroring setManifestTitle, so lazy documents are not all resolved.
302
+ const entryBytes = await this.readWorkspacePathBytes(document.path);
303
+ this.contentValue = {
304
+ ...this.contentValue,
305
+ manifest: this.workspaceValue.manifest,
306
+ entryPoint: document.path,
307
+ markdownText: entryBytes ? new TextDecoder('utf-8').decode(entryBytes) : ''
308
+ };
309
+ this.liveOrphanedPaths = null;
310
+ }
311
+ this.dirtyValue = true;
312
+ this.emit('edit', ['manifest'], 'manifest.json');
313
+ return true;
314
+ }
315
+ /**
316
+ * Renames (or moves, when the directory part changes) a file inside the
317
+ * archive. Markdown references to the file — and the file's own relative
318
+ * references when it is a moved document — are rewritten best-effort.
319
+ * Returns `false` on unknown source, invalid target, or collision.
320
+ */
321
+ async renameFile(oldPath, newPath) {
322
+ this.assertEditable('rename file');
323
+ if (this.sourceFormatValue !== 'mdz') {
324
+ return false;
325
+ }
326
+ const target = this.findPath(oldPath);
327
+ const normalized = normalizeArchivePath(newPath);
328
+ if (!target || !normalized
329
+ || target.path.toLowerCase() === 'manifest.json'
330
+ || normalized.toLowerCase() === 'manifest.json') {
331
+ return false;
332
+ }
333
+ if (normalized === target.path) {
334
+ return false;
335
+ }
336
+ if (normalized.toLowerCase() !== target.path.toLowerCase() && this.findPath(normalized)) {
337
+ return false;
338
+ }
339
+ this.commitPendingTextToWorkspace();
340
+ const bytes = await this.readWorkspacePathBytes(target.path);
341
+ if (!bytes) {
342
+ return false;
343
+ }
344
+ this.recordPendingRemoval(target.path);
345
+ this.recordPendingWrite(normalized, bytes);
346
+ const document = this.workspaceValue.documents.find((doc) => doc.path.toLowerCase() === target.path.toLowerCase());
347
+ const asset = this.workspaceValue.assets.find((item) => item.path.toLowerCase() === target.path.toLowerCase());
348
+ if (document) {
349
+ document.path = normalized;
350
+ }
351
+ else if (asset) {
352
+ asset.path = normalized;
353
+ }
354
+ if (this.entryPointPath().toLowerCase() === target.path.toLowerCase()) {
355
+ this.workspaceValue.entryPoint = normalized;
356
+ this.workspaceValue.manifest = MdzPackagerCore.updateManifest(this.workspaceValue.manifest, { entryPoint: normalized });
357
+ }
358
+ if (this.currentPathValue.toLowerCase() === target.path.toLowerCase()) {
359
+ this.currentPathValue = normalized;
360
+ }
361
+ await this.rewriteReferencesForRename(target.path, normalized);
362
+ await this.reloadPreservingCurrentText(await this.serializeWorkspaceBytes());
363
+ this.dirtyValue = true;
364
+ this.emit('edit', document ? ['document'] : ['asset'], normalized);
365
+ return true;
366
+ }
367
+ /**
368
+ * Sets (or clears, with `null`) the manifest `cover` field. The path must
369
+ * resolve to an existing image asset.
370
+ */
371
+ async setCoverImage(archivePath) {
372
+ this.assertEditable('set cover image');
373
+ if (this.sourceFormatValue !== 'mdz') {
374
+ return false;
375
+ }
376
+ let coverPath = null;
377
+ if (archivePath !== null) {
378
+ const target = this.findPath(archivePath);
379
+ if (!target || !target.isImage) {
380
+ return false;
381
+ }
382
+ coverPath = target.path;
383
+ }
384
+ this.commitPendingTextToWorkspace();
385
+ this.workspaceValue.manifest = MdzPackagerCore.updateManifest(this.workspaceValue.manifest, { cover: coverPath });
386
+ if (this.archiveBytes.length > 0) {
387
+ await this.reloadPreservingCurrentText(await this.serializeWorkspaceBytes());
388
+ }
389
+ else {
390
+ this.contentValue = { ...this.contentValue, manifest: this.workspaceValue.manifest };
391
+ }
392
+ this.dirtyValue = true;
393
+ this.emit('edit', ['manifest'], 'manifest.json');
394
+ return true;
395
+ }
234
396
  listAssets() {
235
397
  return this.workspaceValue.assets.slice();
236
398
  }
399
+ async ensureOrphanedAssetsAnalyzed() {
400
+ if (this.liveOrphanedPaths !== null) {
401
+ return false;
402
+ }
403
+ if (this.sourceFormatValue === 'markdown') {
404
+ this.liveOrphanedPaths = [];
405
+ return false;
406
+ }
407
+ const bytes = this.archiveBytes.length > 0
408
+ ? this.archiveBytes
409
+ : await this.serializeWorkspaceBytes();
410
+ this.liveOrphanedPaths = await findOrphanedAssetPathsInArchive(bytes);
411
+ return true;
412
+ }
237
413
  /**
238
414
  * Embeds a pasted image into the current `.mdz` document and rebuilds the archive.
239
415
  *
@@ -264,6 +440,7 @@ export class MdzipWorkspaceService {
264
440
  this.currentTextValue = text;
265
441
  this.commitPendingTextToWorkspace();
266
442
  this.upsertWorkspaceAsset(await MdzPackagerCore.createWorkspaceAssetFromFile(options.bytes, archivePath));
443
+ this.recordPendingWrite(archivePath, options.bytes);
267
444
  await this.reloadPreservingCurrentText(await this.serializeWorkspaceBytes());
268
445
  this.dirtyValue = true;
269
446
  this.emit('edit', ['document', 'asset'], archivePath);
@@ -275,12 +452,32 @@ export class MdzipWorkspaceService {
275
452
  cursor
276
453
  };
277
454
  }
455
+ /**
456
+ * Sets the manifest title.
457
+ *
458
+ * When archive bytes are available the manifest entry is patched into them
459
+ * incrementally (no document is read). When the workspace was opened via
460
+ * `openWorkspace` without `archiveBytes`, no archive is built at all: the
461
+ * manifest changes in memory only and is included whenever bytes are next
462
+ * serialized (`saveToBytes`, `exportBytes`, `flush`). Hosts holding the real
463
+ * archive bytes natively can instead apply the change themselves from the
464
+ * `['manifest']` change event — see `onManifestChanged` in the view options.
465
+ */
278
466
  async setManifestTitle(newTitle) {
279
467
  this.assertEditable('set manifest title');
280
468
  this.commitPendingTextToWorkspace();
281
469
  this.workspaceValue.manifest = MdzPackagerCore.updateManifest(this.workspaceValue.manifest, { title: newTitle });
282
470
  this.workspaceValue.title = newTitle;
283
- await this.reloadPreservingCurrentText(await this.serializeWorkspaceBytes());
471
+ if (this.archiveBytes.length > 0) {
472
+ await this.reloadPreservingCurrentText(await this.serializeWorkspaceBytes());
473
+ }
474
+ else {
475
+ // No bytes to patch. A full buildWorkspace() here would resolve every
476
+ // lazy document (a webview round-trip per document in serialized-
477
+ // workspace hosts). Keep the change in memory; it is picked up by the
478
+ // next serialization.
479
+ this.contentValue = { ...this.contentValue, manifest: this.workspaceValue.manifest };
480
+ }
284
481
  this.dirtyValue = true;
285
482
  this.emit('edit', ['manifest'], 'manifest.json');
286
483
  }
@@ -337,13 +534,15 @@ export class MdzipWorkspaceService {
337
534
  async reload(bytes) {
338
535
  this.archiveBytes = bytes;
339
536
  this.workspaceValue = await MdzArchiveCore.openWorkspace(bytes, {
340
- includeOrphanedAssetAnalysis: true
537
+ includeOrphanedAssetAnalysis: false,
538
+ includeLazyDocumentReaders: true
341
539
  });
342
540
  this.contentValue = await openedArchiveFromWorkspace(this.workspaceValue);
343
541
  this.currentTextValue = this.contentValue.markdownText;
344
542
  this.currentPathValue = this.contentValue.entryPoint;
345
543
  this.currentPathTypeValue = 'markdown';
346
544
  this.liveOrphanedPaths = null;
545
+ this.clearPendingChanges();
347
546
  }
348
547
  async reloadPreservingCurrentText(bytes, removedPath) {
349
548
  const currentText = this.currentTextValue;
@@ -351,11 +550,12 @@ export class MdzipWorkspaceService {
351
550
  const currentPathType = this.currentPathTypeValue;
352
551
  this.archiveBytes = bytes;
353
552
  this.workspaceValue = await MdzArchiveCore.openWorkspace(bytes, {
354
- includeOrphanedAssetAnalysis: true
553
+ includeOrphanedAssetAnalysis: false,
554
+ includeLazyDocumentReaders: true
355
555
  });
356
556
  this.contentValue = await openedArchiveFromWorkspace(this.workspaceValue);
357
557
  this.liveOrphanedPaths = null;
358
- this.pendingTextDirty = false;
558
+ this.clearPendingChanges();
359
559
  if (removedPath && currentPath.toLowerCase() === removedPath.toLowerCase()) {
360
560
  this.currentTextValue = this.contentValue.markdownText;
361
561
  this.currentPathValue = this.contentValue.entryPoint;
@@ -369,6 +569,52 @@ export class MdzipWorkspaceService {
369
569
  findPath(archivePath) {
370
570
  return this.contentValue.paths.find((entry) => entry.path.toLowerCase() === archivePath.toLowerCase());
371
571
  }
572
+ entryPointPath() {
573
+ return this.workspaceValue.entryPoint ?? this.contentValue.entryPoint;
574
+ }
575
+ // Rewrites markdown links/images across all documents after a rename so they
576
+ // still resolve: refs that pointed at oldPath now point at newPath, and the
577
+ // moved document's own relative refs are re-based to its new directory.
578
+ // Only refs that resolve to a known archive path are touched.
579
+ async rewriteReferencesForRename(oldPath, newPath) {
580
+ const oldLower = oldPath.toLowerCase();
581
+ const knownPaths = new Set(this.contentValue.paths.map((entry) => entry.path.toLowerCase()));
582
+ for (const doc of this.workspaceValue.documents) {
583
+ const wasRenamedDoc = doc.path.toLowerCase() === newPath.toLowerCase();
584
+ // Refs were authored relative to the document's pre-rename location.
585
+ const authoredDir = archiveDirName(wasRenamedDoc ? oldPath : doc.path);
586
+ const currentDir = archiveDirName(doc.path);
587
+ if (!wasRenamedDoc && doc.isLazy && !doc.text && !doc.readText) {
588
+ continue; // unreadable lazy doc; leave as-is rather than throwing
589
+ }
590
+ let text = doc.text;
591
+ if (doc.readText && !text) {
592
+ text = await doc.readText();
593
+ }
594
+ if (!text) {
595
+ continue;
596
+ }
597
+ const rewritten = rewriteArchiveRefs(text, (ref) => {
598
+ const resolved = resolveArchiveRef(ref, authoredDir);
599
+ const targetLower = resolved.toLowerCase();
600
+ if (targetLower !== oldLower && !knownPaths.has(targetLower)) {
601
+ return null;
602
+ }
603
+ const finalTarget = targetLower === oldLower ? newPath : resolved;
604
+ const next = relativeArchivePath(currentDir, finalTarget);
605
+ return next === ref ? null : next;
606
+ });
607
+ if (rewritten !== text) {
608
+ doc.text = rewritten;
609
+ delete doc.readText;
610
+ delete doc.isLazy;
611
+ this.recordPendingWrite(doc.path, rewritten);
612
+ if (doc.path.toLowerCase() === this.currentPathValue.toLowerCase()) {
613
+ this.currentTextValue = rewritten;
614
+ }
615
+ }
616
+ }
617
+ }
372
618
  commitPendingTextToWorkspace() {
373
619
  if (!isEditableTextPath(this.currentPathTypeValue, this.currentPathValue)) {
374
620
  return;
@@ -377,6 +623,9 @@ export class MdzipWorkspaceService {
377
623
  if (document) {
378
624
  if (document.text !== this.currentTextValue) {
379
625
  document.text = this.currentTextValue;
626
+ delete document.readText;
627
+ delete document.isLazy;
628
+ this.recordPendingWrite(document.path, this.currentTextValue);
380
629
  this.pendingTextDirty = true;
381
630
  }
382
631
  return;
@@ -390,11 +639,34 @@ export class MdzipWorkspaceService {
390
639
  asset.byteSize = newByteSize;
391
640
  delete asset.readBytes;
392
641
  delete asset.readDataUri;
642
+ this.recordPendingWrite(asset.path, bytes);
393
643
  this.pendingTextDirty = true;
394
644
  }
395
645
  }
396
646
  }
647
+ recordPendingWrite(archivePath, content) {
648
+ const lower = archivePath.toLowerCase();
649
+ this.pendingRemovals.delete(lower);
650
+ this.pendingWrites.set(lower, { path: archivePath, content });
651
+ }
652
+ recordPendingRemoval(archivePath) {
653
+ const lower = archivePath.toLowerCase();
654
+ this.pendingWrites.delete(lower);
655
+ this.pendingRemovals.set(lower, archivePath);
656
+ }
657
+ clearPendingChanges() {
658
+ this.pendingWrites.clear();
659
+ this.pendingRemovals.clear();
660
+ this.pendingTextDirty = false;
661
+ }
397
662
  async serializeWorkspaceBytes() {
663
+ // Patch the existing archive when we have its bytes: unchanged entries are
664
+ // copied verbatim, so large archives serialize in milliseconds instead of
665
+ // decompressing and recompressing every document.
666
+ if (this.archiveBytes.length > 0) {
667
+ const result = await MdzArchiveCore.updateFiles(this.archiveBytes, [...this.pendingWrites.values()].map((write) => ({ path: write.path, content: write.content })), [...this.pendingRemovals.values()], { manifest: this.workspaceValue.manifest });
668
+ return blobToBytes(result.blob);
669
+ }
398
670
  return blobToBytes((await MdzPackagerCore.buildWorkspace(this.workspaceValue)).blob);
399
671
  }
400
672
  upsertWorkspaceAsset(asset) {
@@ -410,6 +682,14 @@ export class MdzipWorkspaceService {
410
682
  }
411
683
  const document = this.workspaceValue.documents.find((doc) => doc.path.toLowerCase() === archivePath.toLowerCase());
412
684
  if (document) {
685
+ if (document.readText && !document.text) {
686
+ document.text = await document.readText();
687
+ delete document.readText;
688
+ delete document.isLazy;
689
+ }
690
+ else if (document.isLazy && !document.text) {
691
+ throw new Error(`ERR_LAZY_TEXT_UNAVAILABLE: document "${document.path}" was opened lazily but its readText() reader is missing — likely dropped by a serialization boundary (e.g. postMessage). Materialize document text before serializing the workspace, or rehydrate readText on the receiving side.`);
692
+ }
413
693
  return new TextEncoder().encode(document.text);
414
694
  }
415
695
  const asset = this.workspaceValue.assets.find((item) => item.path.toLowerCase() === archivePath.toLowerCase());
@@ -474,6 +754,86 @@ function referencedImagePaths(markdown, baseDir) {
474
754
  }
475
755
  return refs;
476
756
  }
757
+ function archiveDirName(path) {
758
+ return path.includes('/') ? path.slice(0, path.lastIndexOf('/')) : '';
759
+ }
760
+ /**
761
+ * Normalizes a user-supplied archive path: backslashes to slashes, collapsed
762
+ * separators, no leading/trailing slash. Returns `null` when the result is
763
+ * empty or contains `.`/`..` segments.
764
+ */
765
+ export function normalizeArchivePath(path) {
766
+ const segments = path.trim().replace(/\\/g, '/').split('/')
767
+ .map((segment) => segment.trim())
768
+ .filter((segment) => segment.length > 0);
769
+ if (segments.length === 0 || segments.some((segment) => segment === '.' || segment === '..')) {
770
+ return null;
771
+ }
772
+ return segments.join('/');
773
+ }
774
+ /**
775
+ * Builds the relative markdown reference from a directory (`''` = archive
776
+ * root) to an archive path, using `../` segments where needed.
777
+ */
778
+ export function relativeArchivePath(fromDir, toPath) {
779
+ const fromParts = fromDir.split('/').filter(Boolean);
780
+ const toParts = toPath.split('/').filter(Boolean);
781
+ const toDir = toParts.slice(0, -1);
782
+ let common = 0;
783
+ while (common < fromParts.length && common < toDir.length && fromParts[common] === toDir[common]) {
784
+ common += 1;
785
+ }
786
+ return '../'.repeat(fromParts.length - common) + toParts.slice(common).join('/');
787
+ }
788
+ // Resolves a markdown ref against a base directory, handling ./ and ../ and
789
+ // leading-slash (archive-root) refs.
790
+ function resolveArchiveRef(ref, baseDir) {
791
+ const combined = ref.startsWith('/') ? ref.slice(1) : `${baseDir ? `${baseDir}/` : ''}${ref}`;
792
+ const out = [];
793
+ for (const segment of combined.split('/')) {
794
+ if (!segment || segment === '.') {
795
+ continue;
796
+ }
797
+ if (segment === '..') {
798
+ out.pop();
799
+ }
800
+ else {
801
+ out.push(segment);
802
+ }
803
+ }
804
+ return out.join('/');
805
+ }
806
+ // Applies mapRef to every markdown link/image target. mapRef receives the
807
+ // decoded path part (query/hash stripped) and returns the replacement path or
808
+ // null to leave the ref unchanged. External (scheme) and fragment-only refs
809
+ // are skipped.
810
+ function rewriteArchiveRefs(markdown, mapRef) {
811
+ const regex = /(!?\[[^\]]*\]\()(<[^>]*>|[^)\s]+)((?:\s+"[^"]*")?\))/g;
812
+ return markdown.replace(regex, (match, prefix, rawTarget, suffix) => {
813
+ const angled = rawTarget.startsWith('<') && rawTarget.endsWith('>');
814
+ const target = angled ? rawTarget.slice(1, -1) : rawTarget;
815
+ if (!target || target.startsWith('#') || /^[a-z][a-z0-9+.-]*:/i.test(target)) {
816
+ return match;
817
+ }
818
+ const splitAt = target.search(/[?#]/);
819
+ const pathPart = splitAt === -1 ? target : target.slice(0, splitAt);
820
+ const rest = splitAt === -1 ? '' : target.slice(splitAt);
821
+ let decoded;
822
+ try {
823
+ decoded = decodeURIComponent(pathPart);
824
+ }
825
+ catch {
826
+ return match;
827
+ }
828
+ const mapped = mapRef(decoded);
829
+ if (mapped === null) {
830
+ return match;
831
+ }
832
+ const encoded = mapped.split('/').map(encodeURIComponent).join('/');
833
+ const next = `${encoded}${rest}`;
834
+ return `${prefix}${angled ? `<${next}>` : next}${suffix}`;
835
+ });
836
+ }
477
837
  function pathTypeForEntry(entry) {
478
838
  if (entry.isImage) {
479
839
  return 'image';
@@ -1 +1 @@
1
- {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"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"}