@mdzip/editor 1.3.21 → 1.4.4

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 (74) hide show
  1. package/README.md +62 -0
  2. package/dist/archive-utils.d.ts.map +1 -1
  3. package/dist/archive-utils.js +16 -2
  4. package/dist/archive-utils.js.map +1 -1
  5. package/dist/asset-cache.d.ts +14 -0
  6. package/dist/asset-cache.d.ts.map +1 -1
  7. package/dist/asset-cache.js +57 -0
  8. package/dist/asset-cache.js.map +1 -1
  9. package/dist/front-matter-extension.d.ts +45 -0
  10. package/dist/front-matter-extension.d.ts.map +1 -0
  11. package/dist/front-matter-extension.js +114 -0
  12. package/dist/front-matter-extension.js.map +1 -0
  13. package/dist/front-matter.d.ts +18 -0
  14. package/dist/front-matter.d.ts.map +1 -0
  15. package/dist/front-matter.js +48 -0
  16. package/dist/front-matter.js.map +1 -0
  17. package/dist/highlight-core.d.ts +3 -0
  18. package/dist/highlight-core.d.ts.map +1 -0
  19. package/dist/highlight-core.js +53 -0
  20. package/dist/highlight-core.js.map +1 -0
  21. package/dist/image-edit.d.ts +26 -0
  22. package/dist/image-edit.d.ts.map +1 -0
  23. package/dist/image-edit.js +195 -0
  24. package/dist/image-edit.js.map +1 -0
  25. package/dist/index.d.ts +4 -0
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +4 -0
  28. package/dist/index.js.map +1 -1
  29. package/dist/library-info.d.ts +2 -2
  30. package/dist/library-info.js +2 -2
  31. package/dist/library-info.js.map +1 -1
  32. package/dist/mdz-archive-worker-protocol.d.ts +36 -0
  33. package/dist/mdz-archive-worker-protocol.d.ts.map +1 -0
  34. package/dist/mdz-archive-worker-protocol.js +2 -0
  35. package/dist/mdz-archive-worker-protocol.js.map +1 -0
  36. package/dist/mdz-archive.worker-client.d.ts +30 -0
  37. package/dist/mdz-archive.worker-client.d.ts.map +1 -0
  38. package/dist/mdz-archive.worker-client.js +97 -0
  39. package/dist/mdz-archive.worker-client.js.map +1 -0
  40. package/dist/mdz-archive.worker.d.ts +2 -0
  41. package/dist/mdz-archive.worker.d.ts.map +1 -0
  42. package/dist/mdz-archive.worker.js +8870 -0
  43. package/dist/mdz-archive.worker.js.map +1 -0
  44. package/dist/mermaid.d.ts.map +1 -1
  45. package/dist/mermaid.js +60 -41
  46. package/dist/mermaid.js.map +1 -1
  47. package/dist/metadata.d.ts +1 -1
  48. package/dist/metadata.d.ts.map +1 -1
  49. package/dist/metadata.js +12 -2
  50. package/dist/metadata.js.map +1 -1
  51. package/dist/preview.d.ts +1 -0
  52. package/dist/preview.d.ts.map +1 -1
  53. package/dist/preview.js +1 -0
  54. package/dist/preview.js.map +1 -1
  55. package/dist/rendering.d.ts +114 -0
  56. package/dist/rendering.d.ts.map +1 -1
  57. package/dist/rendering.js +153 -1
  58. package/dist/rendering.js.map +1 -1
  59. package/dist/stats.d.ts +23 -0
  60. package/dist/stats.d.ts.map +1 -0
  61. package/dist/stats.js +31 -0
  62. package/dist/stats.js.map +1 -0
  63. package/dist/view-css.d.ts.map +1 -1
  64. package/dist/view-css.js +112 -0
  65. package/dist/view-css.js.map +1 -1
  66. package/dist/view.d.ts +421 -1
  67. package/dist/view.d.ts.map +1 -1
  68. package/dist/view.js +2219 -410
  69. package/dist/view.js.map +1 -1
  70. package/dist/workspace.d.ts +14 -0
  71. package/dist/workspace.d.ts.map +1 -1
  72. package/dist/workspace.js +53 -41
  73. package/dist/workspace.js.map +1 -1
  74. package/package.json +11 -5
@@ -0,0 +1,53 @@
1
+ import hljs from 'highlight.js/lib/core';
2
+ import bash from 'highlight.js/lib/languages/bash';
3
+ import cpp from 'highlight.js/lib/languages/cpp';
4
+ import csharp from 'highlight.js/lib/languages/csharp';
5
+ import css from 'highlight.js/lib/languages/css';
6
+ import go from 'highlight.js/lib/languages/go';
7
+ import java from 'highlight.js/lib/languages/java';
8
+ import javascript from 'highlight.js/lib/languages/javascript';
9
+ import json from 'highlight.js/lib/languages/json';
10
+ import markdown from 'highlight.js/lib/languages/markdown';
11
+ import python from 'highlight.js/lib/languages/python';
12
+ import rust from 'highlight.js/lib/languages/rust';
13
+ import sql from 'highlight.js/lib/languages/sql';
14
+ import typescript from 'highlight.js/lib/languages/typescript';
15
+ import xml from 'highlight.js/lib/languages/xml';
16
+ import yaml from 'highlight.js/lib/languages/yaml';
17
+ /**
18
+ * `highlight.js`'s default entry point (`import hljs from 'highlight.js'`)
19
+ * registers every bundled language grammar at import time — a meaningful
20
+ * chunk of the webview bundle (#45). This registers `highlight.js/lib/core`
21
+ * with only the languages `DEFAULT_CODE_BLOCK_LANGUAGES` (view.ts) offers in
22
+ * the code-block-language picker, plus `xml`/`tsx` for fence-info spellings
23
+ * that don't match a toolbar id 1:1. A fenced code block naming a language
24
+ * outside this set renders as plain, unhighlighted code (both call sites
25
+ * already guard with `hljs.getLanguage(language)` before highlighting) —
26
+ * same as today's behavior for a made-up language name, just now also true
27
+ * for real but uncurated languages.
28
+ */
29
+ hljs.registerLanguage('bash', bash);
30
+ hljs.registerLanguage('cpp', cpp);
31
+ hljs.registerLanguage('csharp', csharp);
32
+ hljs.registerLanguage('css', css);
33
+ hljs.registerLanguage('go', go);
34
+ hljs.registerLanguage('java', java);
35
+ hljs.registerLanguage('javascript', javascript);
36
+ hljs.registerLanguage('json', json);
37
+ hljs.registerLanguage('markdown', markdown);
38
+ hljs.registerLanguage('python', python);
39
+ hljs.registerLanguage('rust', rust);
40
+ hljs.registerLanguage('sql', sql);
41
+ hljs.registerLanguage('typescript', typescript);
42
+ // highlight.js has no distinct tsx grammar; the typescript grammar handles
43
+ // JSX/TSX well enough in practice, and DEFAULT_CODE_BLOCK_LANGUAGES offers
44
+ // 'tsx' as its own toolbar entry (view.ts), so it needs its own registration
45
+ // key rather than relying on 'typescript' aliasing to it.
46
+ hljs.registerLanguage('tsx', typescript);
47
+ // highlight.js's HTML grammar lives under the 'xml' module; register it
48
+ // under both keys since fenced blocks are written as both ```html and ```xml.
49
+ hljs.registerLanguage('html', xml);
50
+ hljs.registerLanguage('xml', xml);
51
+ hljs.registerLanguage('yaml', yaml);
52
+ export default hljs;
53
+ //# sourceMappingURL=highlight-core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"highlight-core.js","sourceRoot":"","sources":["../src/highlight-core.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,uBAAuB,CAAC;AACzC,OAAO,IAAI,MAAM,iCAAiC,CAAC;AACnD,OAAO,GAAG,MAAM,gCAAgC,CAAC;AACjD,OAAO,MAAM,MAAM,mCAAmC,CAAC;AACvD,OAAO,GAAG,MAAM,gCAAgC,CAAC;AACjD,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAC/C,OAAO,IAAI,MAAM,iCAAiC,CAAC;AACnD,OAAO,UAAU,MAAM,uCAAuC,CAAC;AAC/D,OAAO,IAAI,MAAM,iCAAiC,CAAC;AACnD,OAAO,QAAQ,MAAM,qCAAqC,CAAC;AAC3D,OAAO,MAAM,MAAM,mCAAmC,CAAC;AACvD,OAAO,IAAI,MAAM,iCAAiC,CAAC;AACnD,OAAO,GAAG,MAAM,gCAAgC,CAAC;AACjD,OAAO,UAAU,MAAM,uCAAuC,CAAC;AAC/D,OAAO,GAAG,MAAM,gCAAgC,CAAC;AACjD,OAAO,IAAI,MAAM,iCAAiC,CAAC;AAEnD;;;;;;;;;;;GAWG;AACH,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACpC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAClC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AACxC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAClC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAChC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACpC,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AAChD,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACpC,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;AAC5C,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AACxC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACpC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAClC,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AAChD,2EAA2E;AAC3E,2EAA2E;AAC3E,6EAA6E;AAC7E,0DAA0D;AAC1D,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AACzC,wEAAwE;AACxE,8EAA8E;AAC9E,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AACnC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAClC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAEpC,eAAe,IAAI,CAAC"}
@@ -0,0 +1,26 @@
1
+ import type { EditorState } from '@codemirror/state';
2
+ import type { MdzipImageInsertDecision, MdzipImageInsertOutputMode, MdzipImagePosition } from './view.js';
3
+ export interface MdzipParsedImageReference {
4
+ kind: MdzipImageInsertOutputMode;
5
+ /** Exact doc range to replace when applying an edit decision. Half-open. */
6
+ from: number;
7
+ to: number;
8
+ /** Text currently at [from, to) — used as a race guard before applying an edit. */
9
+ raw: string;
10
+ src: string;
11
+ altText: string;
12
+ width?: number;
13
+ height?: number;
14
+ position: MdzipImagePosition;
15
+ }
16
+ export declare function escapeMarkdownImageAlt(value: string): string;
17
+ /** Finds the image reference (Markdown or raw HTML) enclosing `offset`, if any. */
18
+ export declare function findImageReferenceAtOffset(state: EditorState, offset: number): MdzipParsedImageReference | null;
19
+ /**
20
+ * Formats a decision as replacement text for an existing image's exact
21
+ * range. Unlike `formatImageInsertMarkdown`, this never pads with
22
+ * surrounding blank lines — the caller replaces an already-delimited
23
+ * `[from, to)` span, not inserting at an arbitrary cursor position.
24
+ */
25
+ export declare function formatImageEditMarkdown(src: string, decision: MdzipImageInsertDecision): string;
26
+ //# sourceMappingURL=image-edit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-edit.d.ts","sourceRoot":"","sources":["../src/image-edit.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,KAAK,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAE1G,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,0BAA0B,CAAC;IACjC,4EAA4E;IAC5E,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,mFAAmF;IACnF,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,kBAAkB,CAAC;CAC9B;AA6CD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE5D;AA4HD,mFAAmF;AACnF,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,yBAAyB,GAAG,IAAI,CAE/G;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,wBAAwB,GAAG,MAAM,CAmB/F"}
@@ -0,0 +1,195 @@
1
+ // Locates an existing image reference (Markdown `![]()` or raw HTML `<img>`,
2
+ // optionally wrapped in `<p align="...">`) around a document offset, and
3
+ // formats a decision back into replacement text for that exact range. Pure
4
+ // text/syntax-tree logic — no DOM, no MdzipWorkspaceView dependency — so it
5
+ // can be unit tested standalone and reused by the click-to-edit affordance
6
+ // in view.ts.
7
+ import { syntaxTree } from '@codemirror/language';
8
+ import { escapeHtml } from './workspace-view.js';
9
+ const IMAGE_NODE_NAMES = new Set(['Image']);
10
+ const HTML_CONTAINER_NODE_NAMES = new Set(['HTMLBlock', 'HTMLTag']);
11
+ const IMG_TAG_RE = /<img\b[^>]*>/gi;
12
+ const ATTR_RE = /([a-zA-Z:-]+)\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s"'>]+))/g;
13
+ const WRAP_P_RE = /^<p\b[^>]*\salign\s*=\s*(?:"([^"]*)"|'([^']*)'|(\S+))[^>]*>\s*<img\b[^>]*>\s*<\/p>\s*$/i;
14
+ /**
15
+ * Finds the enclosing node of one of `names` at `offset`, trying both sides
16
+ * of the offset (a click can land right at a node's opening or closing
17
+ * boundary, and `resolveInner`'s `side` argument only favors one direction).
18
+ */
19
+ function resolveAncestorNode(state, offset, names) {
20
+ const tree = syntaxTree(state);
21
+ for (const side of [-1, 1]) {
22
+ let node = tree.resolveInner(offset, side);
23
+ while (node) {
24
+ if (names.has(node.name)) {
25
+ return node;
26
+ }
27
+ node = node.parent;
28
+ }
29
+ }
30
+ return null;
31
+ }
32
+ function parseDim(value) {
33
+ if (!value) {
34
+ return undefined;
35
+ }
36
+ const parsed = Number(value);
37
+ return Number.isFinite(parsed) && parsed > 0 ? Math.round(parsed) : undefined;
38
+ }
39
+ function unescapeHtml(value) {
40
+ return value
41
+ .replace(/&lt;/g, '<')
42
+ .replace(/&gt;/g, '>')
43
+ .replace(/&quot;/g, '"')
44
+ .replace(/&#39;/g, "'")
45
+ .replace(/&amp;/g, '&');
46
+ }
47
+ export function escapeMarkdownImageAlt(value) {
48
+ return value.replace(/\\/g, '\\\\').replace(/]/g, '\\]');
49
+ }
50
+ function unescapeMarkdownImageAlt(value) {
51
+ return value.replace(/\\\\|\\]/g, (match) => (match === '\\\\' ? '\\' : ']'));
52
+ }
53
+ function parseHtmlAttributes(tagSource) {
54
+ const attrs = new Map();
55
+ ATTR_RE.lastIndex = 0;
56
+ let match;
57
+ while ((match = ATTR_RE.exec(tagSource))) {
58
+ attrs.set(match[1].toLowerCase(), match[2] ?? match[3] ?? match[4] ?? '');
59
+ }
60
+ return attrs;
61
+ }
62
+ function parseMarkdownImageAt(state, offset) {
63
+ const found = resolveAncestorNode(state, offset, IMAGE_NODE_NAMES);
64
+ if (!found) {
65
+ return null;
66
+ }
67
+ const urlNode = found.getChild('URL');
68
+ if (!urlNode) {
69
+ // Reference-style `![alt][label]` has no URL child — out of scope.
70
+ return null;
71
+ }
72
+ const marks = found.getChildren('LinkMark');
73
+ if (marks.length < 2) {
74
+ return null;
75
+ }
76
+ const doc = state.doc;
77
+ const altText = unescapeMarkdownImageAlt(doc.sliceString(marks[0].to, marks[1].from));
78
+ const src = doc.sliceString(urlNode.from, urlNode.to);
79
+ return {
80
+ kind: 'markdown',
81
+ from: found.from,
82
+ to: found.to,
83
+ raw: doc.sliceString(found.from, found.to),
84
+ src,
85
+ altText,
86
+ width: undefined,
87
+ height: undefined,
88
+ position: 'inline'
89
+ };
90
+ }
91
+ function parseHtmlImageAt(state, offset) {
92
+ const container = resolveAncestorNode(state, offset, HTML_CONTAINER_NODE_NAMES);
93
+ if (!container) {
94
+ return null;
95
+ }
96
+ const doc = state.doc;
97
+ const containerText = doc.sliceString(container.from, container.to);
98
+ // `<p align="...">` wrapping is checked against the whole block first,
99
+ // independent of exactly where within it `offset` lands — the wrapper is
100
+ // just position styling, so a click anywhere in the block (including on
101
+ // the <p> tag itself, not only the nested <img>) should hit the image.
102
+ if (container.name === 'HTMLBlock') {
103
+ const wrapperMatch = WRAP_P_RE.exec(containerText.trim());
104
+ if (wrapperMatch) {
105
+ IMG_TAG_RE.lastIndex = 0;
106
+ const imgMatch = IMG_TAG_RE.exec(containerText);
107
+ const attrs = imgMatch ? parseHtmlAttributes(imgMatch[0]) : null;
108
+ const src = attrs?.get('src');
109
+ if (attrs && src) {
110
+ const align = (wrapperMatch[1] ?? wrapperMatch[2] ?? wrapperMatch[3] ?? '').toLowerCase();
111
+ const position = align === 'left' || align === 'center' || align === 'right' ? align : 'inline';
112
+ return {
113
+ kind: 'html',
114
+ from: container.from,
115
+ to: container.to,
116
+ raw: containerText,
117
+ src: unescapeHtml(src),
118
+ altText: unescapeHtml(attrs.get('alt') ?? ''),
119
+ width: parseDim(attrs.get('width')),
120
+ height: parseDim(attrs.get('height')),
121
+ position
122
+ };
123
+ }
124
+ }
125
+ }
126
+ // Not (or not validly) a <p align> wrapper — fall back to locating the
127
+ // specific <img> tag offset lands on (needed for inline HTMLTag, and for
128
+ // an HTMLBlock containing more than one raw <img>).
129
+ IMG_TAG_RE.lastIndex = 0;
130
+ let match;
131
+ let hit = null;
132
+ while ((match = IMG_TAG_RE.exec(containerText))) {
133
+ const absFrom = container.from + match.index;
134
+ const absTo = absFrom + match[0].length;
135
+ if (offset >= absFrom && offset <= absTo) {
136
+ hit = { text: match[0], from: absFrom, to: absTo };
137
+ break;
138
+ }
139
+ }
140
+ if (!hit) {
141
+ return null;
142
+ }
143
+ const attrs = parseHtmlAttributes(hit.text);
144
+ const src = attrs.get('src');
145
+ if (!src) {
146
+ return null;
147
+ }
148
+ const width = parseDim(attrs.get('width'));
149
+ const height = parseDim(attrs.get('height'));
150
+ const altText = unescapeHtml(attrs.get('alt') ?? '');
151
+ const imgAlign = attrs.get('align')?.toLowerCase();
152
+ const position = imgAlign === 'left' ? 'wrap-left' : imgAlign === 'right' ? 'wrap-right' : 'inline';
153
+ return {
154
+ kind: 'html',
155
+ from: hit.from,
156
+ to: hit.to,
157
+ raw: hit.text,
158
+ src: unescapeHtml(src),
159
+ altText,
160
+ width,
161
+ height,
162
+ position
163
+ };
164
+ }
165
+ /** Finds the image reference (Markdown or raw HTML) enclosing `offset`, if any. */
166
+ export function findImageReferenceAtOffset(state, offset) {
167
+ return parseMarkdownImageAt(state, offset) ?? parseHtmlImageAt(state, offset);
168
+ }
169
+ /**
170
+ * Formats a decision as replacement text for an existing image's exact
171
+ * range. Unlike `formatImageInsertMarkdown`, this never pads with
172
+ * surrounding blank lines — the caller replaces an already-delimited
173
+ * `[from, to)` span, not inserting at an arbitrary cursor position.
174
+ */
175
+ export function formatImageEditMarkdown(src, decision) {
176
+ if (decision.mode === 'html') {
177
+ const attrs = [`src="${escapeHtml(src)}"`, `alt="${escapeHtml(decision.altText)}"`];
178
+ if (decision.width) {
179
+ attrs.push(`width="${decision.width}"`);
180
+ }
181
+ if (decision.height) {
182
+ attrs.push(`height="${decision.height}"`);
183
+ }
184
+ if (decision.position === 'wrap-left' || decision.position === 'wrap-right') {
185
+ attrs.push(`align="${decision.position === 'wrap-left' ? 'left' : 'right'}"`);
186
+ }
187
+ const image = `<img ${attrs.join(' ')}>`;
188
+ if (decision.position === 'left' || decision.position === 'center' || decision.position === 'right') {
189
+ return `<p align="${decision.position}">${image}</p>`;
190
+ }
191
+ return image;
192
+ }
193
+ return `![${escapeMarkdownImageAlt(decision.altText)}](${src})`;
194
+ }
195
+ //# sourceMappingURL=image-edit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-edit.js","sourceRoot":"","sources":["../src/image-edit.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -3,8 +3,12 @@ export * from './archive-utils.js';
3
3
  export * from './asset-cache.js';
4
4
  export * from './browser.js';
5
5
  export * from './diff.js';
6
+ export * from './front-matter.js';
7
+ export * from './front-matter-extension.js';
8
+ export * from './mdz-archive.worker-client.js';
6
9
  export * from './metadata.js';
7
10
  export * from './rendering.js';
11
+ export * from './stats.js';
8
12
  export * from './theme.js';
9
13
  export * from './view.js';
10
14
  export * from './workspace.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACtE,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACtE,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC"}
package/dist/index.js CHANGED
@@ -2,8 +2,12 @@ export * from './archive-utils.js';
2
2
  export * from './asset-cache.js';
3
3
  export * from './browser.js';
4
4
  export * from './diff.js';
5
+ export * from './front-matter.js';
6
+ export * from './front-matter-extension.js';
7
+ export * from './mdz-archive.worker-client.js';
5
8
  export * from './metadata.js';
6
9
  export * from './rendering.js';
10
+ export * from './stats.js';
7
11
  export * from './theme.js';
8
12
  export * from './view.js';
9
13
  export * from './workspace.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC"}
@@ -1,11 +1,11 @@
1
1
  export declare const MDZIP_RUNTIME_LIBRARIES: readonly [{
2
2
  readonly name: "@mdzip/editor";
3
- readonly version: "1.3.21";
3
+ readonly version: "1.4.4";
4
4
  readonly repositoryUrl: "https://github.com/mdzip-project/mdzip-editor";
5
5
  readonly description: "MDZip workspace engine and browser UI.";
6
6
  }, {
7
7
  readonly name: "@mdzip/core-js";
8
- readonly version: "1.3.3";
8
+ readonly version: "1.5.0";
9
9
  readonly repositoryUrl: "https://github.com/mdzip-project/mdzip-core-js";
10
10
  readonly description: "MDZip archive reading, writing, and validation.";
11
11
  }, {
@@ -2,13 +2,13 @@
2
2
  export const MDZIP_RUNTIME_LIBRARIES = [
3
3
  {
4
4
  "name": "@mdzip/editor",
5
- "version": "1.3.21",
5
+ "version": "1.4.4",
6
6
  "repositoryUrl": "https://github.com/mdzip-project/mdzip-editor",
7
7
  "description": "MDZip workspace engine and browser UI."
8
8
  },
9
9
  {
10
10
  "name": "@mdzip/core-js",
11
- "version": "1.3.3",
11
+ "version": "1.5.0",
12
12
  "repositoryUrl": "https://github.com/mdzip-project/mdzip-core-js",
13
13
  "description": "MDZip archive reading, writing, and validation."
14
14
  },
@@ -1 +1 @@
1
- {"version":3,"file":"library-info.js","sourceRoot":"","sources":["../src/library-info.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC;QACE,MAAM,EAAE,eAAe;QACvB,SAAS,EAAE,QAAQ;QACnB,eAAe,EAAE,+CAA+C;QAChE,aAAa,EAAE,wCAAwC;KACxD;IACD;QACE,MAAM,EAAE,gBAAgB;QACxB,SAAS,EAAE,OAAO;QAClB,eAAe,EAAE,gDAAgD;QACjE,aAAa,EAAE,iDAAiD;KACjE;IACD;QACE,MAAM,EAAE,YAAY;QACpB,SAAS,EAAE,QAAQ;QACnB,eAAe,EAAE,mCAAmC;QACpD,aAAa,EAAE,qCAAqC;KACrD;IACD;QACE,MAAM,EAAE,QAAQ;QAChB,SAAS,EAAE,SAAS;QACpB,eAAe,EAAE,oCAAoC;QACrD,aAAa,EAAE,+BAA+B;KAC/C;IACD;QACE,MAAM,EAAE,WAAW;QACnB,SAAS,EAAE,OAAO;QAClB,eAAe,EAAE,qCAAqC;QACtD,aAAa,EAAE,oBAAoB;KACpC;IACD;QACE,MAAM,EAAE,cAAc;QACtB,SAAS,EAAE,SAAS;QACpB,eAAe,EAAE,6CAA6C;QAC9D,aAAa,EAAE,iCAAiC;KACjD;IACD;QACE,MAAM,EAAE,QAAQ;QAChB,SAAS,EAAE,QAAQ;QACnB,eAAe,EAAE,wCAAwC;QACzD,aAAa,EAAE,kBAAkB;KAClC;CACO,CAAC"}
1
+ {"version":3,"file":"library-info.js","sourceRoot":"","sources":["../src/library-info.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC;QACE,MAAM,EAAE,eAAe;QACvB,SAAS,EAAE,OAAO;QAClB,eAAe,EAAE,+CAA+C;QAChE,aAAa,EAAE,wCAAwC;KACxD;IACD;QACE,MAAM,EAAE,gBAAgB;QACxB,SAAS,EAAE,OAAO;QAClB,eAAe,EAAE,gDAAgD;QACjE,aAAa,EAAE,iDAAiD;KACjE;IACD;QACE,MAAM,EAAE,YAAY;QACpB,SAAS,EAAE,QAAQ;QACnB,eAAe,EAAE,mCAAmC;QACpD,aAAa,EAAE,qCAAqC;KACrD;IACD;QACE,MAAM,EAAE,QAAQ;QAChB,SAAS,EAAE,SAAS;QACpB,eAAe,EAAE,oCAAoC;QACrD,aAAa,EAAE,+BAA+B;KAC/C;IACD;QACE,MAAM,EAAE,WAAW;QACnB,SAAS,EAAE,OAAO;QAClB,eAAe,EAAE,qCAAqC;QACtD,aAAa,EAAE,oBAAoB;KACpC;IACD;QACE,MAAM,EAAE,cAAc;QACtB,SAAS,EAAE,SAAS;QACpB,eAAe,EAAE,6CAA6C;QAC9D,aAAa,EAAE,iCAAiC;KACjD;IACD;QACE,MAAM,EAAE,QAAQ;QAChB,SAAS,EAAE,QAAQ;QACnB,eAAe,EAAE,wCAAwC;QACzD,aAAa,EAAE,kBAAkB;KAClC;CACO,CAAC"}
@@ -0,0 +1,36 @@
1
+ import type { MdzOpenWorkspaceOptions } from '@mdzip/core-js';
2
+ /**
3
+ * Message protocol between {@link MdzArchiveWorkerClient} (main thread) and
4
+ * `mdz-archive.worker.ts` (worker). Kept deliberately small — one worker
5
+ * handles exactly one archive's lifetime, so there is no session id.
6
+ */
7
+ export type MdzArchiveWorkerRequest = {
8
+ id: number;
9
+ type: 'open';
10
+ bytes: ArrayBuffer;
11
+ options: MdzOpenWorkspaceOptions;
12
+ } | {
13
+ id: number;
14
+ type: 'readText';
15
+ path: string;
16
+ } | {
17
+ id: number;
18
+ type: 'readBytes';
19
+ path: string;
20
+ } | {
21
+ id: number;
22
+ type: 'dispose';
23
+ };
24
+ export type MdzArchiveWorkerResponse = {
25
+ id: number;
26
+ ok: true;
27
+ result: unknown;
28
+ } | {
29
+ id: number;
30
+ ok: false;
31
+ error: {
32
+ name: string;
33
+ message: string;
34
+ };
35
+ };
36
+ //# sourceMappingURL=mdz-archive-worker-protocol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mdz-archive-worker-protocol.d.ts","sourceRoot":"","sources":["../src/mdz-archive-worker-protocol.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAE9D;;;;GAIG;AACH,MAAM,MAAM,uBAAuB,GAC/B;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,uBAAuB,CAAA;CAAE,GAClF;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC/C;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC;AAEpC,MAAM,MAAM,wBAAwB,GAChC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,GACzC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=mdz-archive-worker-protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mdz-archive-worker-protocol.js","sourceRoot":"","sources":["../src/mdz-archive-worker-protocol.ts"],"names":[],"mappings":""}
@@ -0,0 +1,30 @@
1
+ import type { MdzOpenWorkspaceOptions, MdzWorkspace } from '@mdzip/core-js';
2
+ /**
3
+ * Main-thread bridge to a dedicated Worker running `mdz-archive.worker.ts`.
4
+ * One client owns one worker for the lifetime of the archive it opens —
5
+ * callers construct the `Worker` themselves (URL resolution varies too much
6
+ * across host bundlers to own here) and pass it in.
7
+ */
8
+ export declare class MdzArchiveWorkerClient {
9
+ private readonly worker;
10
+ private readonly pending;
11
+ private nextId;
12
+ private disposed;
13
+ constructor(worker: Worker);
14
+ /**
15
+ * Opens `bytes` in the worker and returns a workspace shape-identical to
16
+ * `MdzArchiveCore.openWorkspace()`'s direct (non-worker) result: lazy
17
+ * `readText`/`readBytes`/`readDataUri` closures are reattached here so
18
+ * consumers (editor-react/vue/ng) see no difference in the public shape —
19
+ * the closures just call back into the worker instead of a local instance.
20
+ */
21
+ open(bytes: Uint8Array, options: MdzOpenWorkspaceOptions): Promise<MdzWorkspace>;
22
+ readText(path: string): Promise<string>;
23
+ readBytes(path: string): Promise<Uint8Array>;
24
+ /** Terminates the worker and rejects any in-flight requests. Safe to call more than once. */
25
+ dispose(): void;
26
+ private attachLazyReaders;
27
+ private send;
28
+ private handleMessage;
29
+ }
30
+ //# sourceMappingURL=mdz-archive.worker-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mdz-archive.worker-client.d.ts","sourceRoot":"","sources":["../src/mdz-archive.worker-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAQ5E;;;;;GAKG;AACH,qBAAa,sBAAsB;IAKd,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJ1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmC;IAC3D,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,QAAQ,CAAS;gBAEW,MAAM,EAAE,MAAM;IAIlD;;;;;;OAMG;IACU,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,YAAY,CAAC;IAUtF,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKjC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAMzD,6FAA6F;IACtF,OAAO,IAAI,IAAI;IActB,OAAO,CAAC,iBAAiB;IAkBzB,OAAO,CAAC,IAAI;IAUZ,OAAO,CAAC,aAAa;CAYtB"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Main-thread bridge to a dedicated Worker running `mdz-archive.worker.ts`.
3
+ * One client owns one worker for the lifetime of the archive it opens —
4
+ * callers construct the `Worker` themselves (URL resolution varies too much
5
+ * across host bundlers to own here) and pass it in.
6
+ */
7
+ export class MdzArchiveWorkerClient {
8
+ constructor(worker) {
9
+ this.worker = worker;
10
+ this.pending = new Map();
11
+ this.nextId = 1;
12
+ this.disposed = false;
13
+ this.worker.onmessage = (event) => this.handleMessage(event.data);
14
+ }
15
+ /**
16
+ * Opens `bytes` in the worker and returns a workspace shape-identical to
17
+ * `MdzArchiveCore.openWorkspace()`'s direct (non-worker) result: lazy
18
+ * `readText`/`readBytes`/`readDataUri` closures are reattached here so
19
+ * consumers (editor-react/vue/ng) see no difference in the public shape —
20
+ * the closures just call back into the worker instead of a local instance.
21
+ */
22
+ async open(bytes, options) {
23
+ const buffer = bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength);
24
+ const id = this.nextId++;
25
+ const workspace = await this.send({ id, type: 'open', bytes: buffer, options }, [buffer]);
26
+ return this.attachLazyReaders(workspace);
27
+ }
28
+ readText(path) {
29
+ const id = this.nextId++;
30
+ return this.send({ id, type: 'readText', path });
31
+ }
32
+ async readBytes(path) {
33
+ const id = this.nextId++;
34
+ const buffer = await this.send({ id, type: 'readBytes', path });
35
+ return new Uint8Array(buffer);
36
+ }
37
+ /** Terminates the worker and rejects any in-flight requests. Safe to call more than once. */
38
+ dispose() {
39
+ if (this.disposed)
40
+ return;
41
+ this.disposed = true;
42
+ try {
43
+ this.worker.postMessage({ id: this.nextId++, type: 'dispose' });
44
+ }
45
+ catch {
46
+ // Worker may already be unusable — termination below still runs.
47
+ }
48
+ this.worker.terminate();
49
+ const error = new Error('ERR_ARCHIVE_WORKER_DISPOSED: the archive worker was disposed.');
50
+ for (const entry of this.pending.values())
51
+ entry.reject(error);
52
+ this.pending.clear();
53
+ }
54
+ attachLazyReaders(workspace) {
55
+ return {
56
+ ...workspace,
57
+ documents: workspace.documents.map((document) => (document.isLazy ? { ...document, readText: () => this.readText(document.path) } : document)),
58
+ assets: workspace.assets.map((asset) => (asset.bytes === undefined
59
+ ? {
60
+ ...asset,
61
+ readBytes: () => this.readBytes(asset.path),
62
+ readDataUri: async () => dataUriFromBytes(await this.readBytes(asset.path), asset.mimeType)
63
+ }
64
+ : asset))
65
+ };
66
+ }
67
+ send(request, transfer = []) {
68
+ if (this.disposed) {
69
+ return Promise.reject(new Error('ERR_ARCHIVE_WORKER_DISPOSED: the archive worker was disposed.'));
70
+ }
71
+ return new Promise((resolve, reject) => {
72
+ this.pending.set(request.id, { resolve: resolve, reject });
73
+ this.worker.postMessage(request, transfer);
74
+ });
75
+ }
76
+ handleMessage(response) {
77
+ const entry = this.pending.get(response.id);
78
+ if (!entry)
79
+ return;
80
+ this.pending.delete(response.id);
81
+ if (response.ok) {
82
+ entry.resolve(response.result);
83
+ return;
84
+ }
85
+ const error = new Error(response.error.message);
86
+ error.name = response.error.name;
87
+ entry.reject(error);
88
+ }
89
+ }
90
+ function dataUriFromBytes(bytes, mimeType) {
91
+ let binary = '';
92
+ for (let index = 0; index < bytes.length; index += 0x8000) {
93
+ binary += String.fromCharCode(...bytes.subarray(index, index + 0x8000));
94
+ }
95
+ return `data:${mimeType};base64,${btoa(binary)}`;
96
+ }
97
+ //# sourceMappingURL=mdz-archive.worker-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mdz-archive.worker-client.js","sourceRoot":"","sources":["../src/mdz-archive.worker-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=mdz-archive.worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mdz-archive.worker.d.ts","sourceRoot":"","sources":["../src/mdz-archive.worker.ts"],"names":[],"mappings":""}