pandoc-glance 0.2.0 → 0.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/README.md +30 -2
- package/dist/annotations.d.ts +3 -0
- package/dist/annotations.d.ts.map +1 -0
- package/dist/annotations.js +186 -0
- package/dist/annotations.js.map +1 -0
- package/dist/cli.d.ts +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +65 -46
- package/dist/cli.js.map +1 -1
- package/dist/local-resource.d.ts +15 -0
- package/dist/local-resource.d.ts.map +1 -0
- package/dist/local-resource.js +61 -0
- package/dist/local-resource.js.map +1 -0
- package/dist/markdown-comments.d.ts +4 -0
- package/dist/markdown-comments.d.ts.map +1 -1
- package/dist/markdown-comments.js +1 -1
- package/dist/markdown-comments.js.map +1 -1
- package/dist/render.d.ts +3 -2
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +52 -38
- package/dist/render.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +18 -1
- package/dist/server.js.map +1 -1
- package/dist/styles.d.ts.map +1 -1
- package/dist/styles.js +17 -0
- package/dist/styles.js.map +1 -1
- package/dist/watch-preview.d.ts +2 -0
- package/dist/watch-preview.d.ts.map +1 -1
- package/dist/watch-preview.js +30 -7
- package/dist/watch-preview.js.map +1 -1
- package/docs/screenshots/annotations-dark.png +0 -0
- package/docs/screenshots/annotations-light.png +0 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -150,7 +150,7 @@ PNG/JPEG/SVG-style images and local PDF figures are supported. PDF figures rende
|
|
|
150
150
|
|
|
151
151
|
One-shot output inlines local PDF figures up to 16 MB each and 30 MB total, so the browser can render them without `file:` fetch access; larger PDFs retain the **Open PDF** fallback.
|
|
152
152
|
|
|
153
|
-
Absolute paths are also supported. In watch mode, an explicitly authored parent-relative or absolute supported-media reference outside the document directory is exposed only through an opaque per-render allowlist URL; arbitrary path traversal remains blocked. Resource responses are revisioned and not browser-cached.
|
|
153
|
+
Absolute paths are also supported. In watch mode, an explicitly authored parent-relative or absolute supported-media reference outside the document directory is exposed only through an opaque per-render allowlist URL; arbitrary path traversal remains blocked. Authored query strings and fragments are retained when local URLs are rewritten. Resource responses are revisioned and not browser-cached.
|
|
154
154
|
|
|
155
155
|
### Figure cross-references
|
|
156
156
|
|
|
@@ -170,6 +170,33 @@ This is deliberately a lightweight, document-local subset. It resolves exact sin
|
|
|
170
170
|
|
|
171
171
|
HTML comments outside Markdown code contexts are removed before rendering, so private drafting notes do not become visible when raw HTML is disabled. Valid YAML mapping front matter and comment-like text in fenced, indented, or inline code are preserved.
|
|
172
172
|
|
|
173
|
+
### Inline annotations
|
|
174
|
+
|
|
175
|
+
Markdown/QMD previews highlight `[an: ...]` notes, using the same convention as pi-markdown-preview and Pi Studio:
|
|
176
|
+
|
|
177
|
+
```markdown
|
|
178
|
+
This argument needs checking. [an:here]
|
|
179
|
+
|
|
180
|
+
Another point. [an:Check **this assumption**, `code`, and $x > 0$.]
|
|
181
|
+
|
|
182
|
+
See the explanation. [an:Compare [the documentation](https://example.com/docs).]
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
The preview shows a highlighted note without the `[an: ]` wrapper; hovering shows the original note syntax. Markers are case-insensitive and do not require a space after `an:`. Notes support inline Markdown, including links and math, nested brackets, and soft line breaks within a paragraph. Long notes wrap with the surrounding text. One-shot and watch modes behave the same. Notes use a soft theme-accent background and border with normal text colour, adapting to light/dark mode without changing the surrounding document theme.
|
|
186
|
+
|
|
187
|
+
This is a **nonstandard, display-only convention**, not a Markdown comment or a private note: annotations remain visible in the generated HTML. Source files are never changed. There is no browser annotation editor, comment storage, or AI integration.
|
|
188
|
+
|
|
189
|
+
Use inline code (`` `[an:literal example]` ``) or escape the opening bracket (`\[an:literal example]`) to show the syntax literally. Fenced/indented code, YAML front matter, existing link/image labels and destinations, and math contents are left alone. Empty or unfinished markers stay visible; markers cannot span separate paragraphs. Standalone LaTeX is unchanged.
|
|
190
|
+
|
|
191
|
+

|
|
192
|
+
|
|
193
|
+
Try the self-contained example from a checkout:
|
|
194
|
+
|
|
195
|
+
```bash
|
|
196
|
+
npm run build
|
|
197
|
+
node dist/cli.js --watch test/fixtures/annotations.qmd
|
|
198
|
+
```
|
|
199
|
+
|
|
173
200
|
### Standalone LaTeX
|
|
174
201
|
|
|
175
202
|
A `.tex` or `.latex` file is read as a complete LaTeX document:
|
|
@@ -247,10 +274,11 @@ One-shot pages carry a nonce-based Content Security Policy in the generated HTML
|
|
|
247
274
|
- Sets `no-store`, `nosniff`, no-referrer, same-origin, and content-security headers.
|
|
248
275
|
- Disables Pandoc raw HTML and raw attributed blocks; authored HTML is rendered inert.
|
|
249
276
|
- Rejects arbitrary resource-route traversal, including encoded `..`, and rejects symlinks that escape the source directory.
|
|
277
|
+
- Rejects raw, encoded, and mixed-separator UNC paths and Windows device paths before accessing the file system.
|
|
250
278
|
- Serves only browser-preview media types: common images, audio/video, and PDF. Source, script, HTML, and unknown file types receive `415 Unsupported Media Type`.
|
|
251
279
|
- Serves a supported parent-relative or absolute media file outside the document directory only when the current document explicitly references it, through an opaque ID.
|
|
252
280
|
|
|
253
|
-
A failed render keeps the previous HTML and resource allowlist.
|
|
281
|
+
A failed render keeps the previous HTML and resource allowlist. Shutdown closes the watcher and server immediately and aborts any active Pandoc process.
|
|
254
282
|
|
|
255
283
|
## Troubleshooting
|
|
256
284
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"annotations.d.ts","sourceRoot":"","sources":["../src/annotations.ts"],"names":[],"mappings":"AA6GA,mFAAmF;AACnF,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CA8DrE"}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
// Bracket/escape scanning adapted from pi-markdown-preview's MIT-licensed
|
|
2
|
+
// client/annotation-helpers.js (commit 80e7c60), Copyright (c) 2026 Oliver MacLaren.
|
|
3
|
+
// See LICENSE. Unlike its browser placeholders, we emit native Pandoc spans:
|
|
4
|
+
// Pandoc remains responsible for rendering/escaping all note contents.
|
|
5
|
+
import { parse, postprocess, preprocess } from "micromark";
|
|
6
|
+
import { splitValidYamlFrontMatter } from "./markdown-comments.js";
|
|
7
|
+
const PROSE_TOKENS = new Set(["paragraph", "atxHeadingText", "setextHeadingText"]);
|
|
8
|
+
const PROTECTED_TOKENS = new Set([
|
|
9
|
+
"codeText", "link", "image", "autolink", "htmlText", "definition",
|
|
10
|
+
]);
|
|
11
|
+
function containingRange(ranges, offset) {
|
|
12
|
+
// Ranges are disjoint and sorted; this also keeps large annotation-heavy
|
|
13
|
+
// documents from repeatedly scanning every earlier inline-code/link token.
|
|
14
|
+
let lower = 0;
|
|
15
|
+
let upper = ranges.length;
|
|
16
|
+
while (lower < upper) {
|
|
17
|
+
const middle = (lower + upper) >>> 1;
|
|
18
|
+
if (ranges[middle].start <= offset)
|
|
19
|
+
lower = middle + 1;
|
|
20
|
+
else
|
|
21
|
+
upper = middle;
|
|
22
|
+
}
|
|
23
|
+
const range = ranges[lower - 1];
|
|
24
|
+
return range && offset < range.end ? range : undefined;
|
|
25
|
+
}
|
|
26
|
+
function mergeRanges(ranges) {
|
|
27
|
+
const merged = [];
|
|
28
|
+
for (const range of ranges.sort((a, b) => a.start - b.start || b.end - a.end)) {
|
|
29
|
+
const previous = merged.at(-1);
|
|
30
|
+
if (previous && range.start <= previous.end)
|
|
31
|
+
previous.end = Math.max(previous.end, range.end);
|
|
32
|
+
else
|
|
33
|
+
merged.push({ ...range });
|
|
34
|
+
}
|
|
35
|
+
return merged;
|
|
36
|
+
}
|
|
37
|
+
/** Skip math as a unit, including unmatched square brackets in TeX. */
|
|
38
|
+
function mathEnd(source, start, limit) {
|
|
39
|
+
const opening = source.startsWith("$$", start) ? "$$"
|
|
40
|
+
: source.startsWith("\\(", start) ? "\\("
|
|
41
|
+
: source.startsWith("\\[", start) ? "\\["
|
|
42
|
+
: source[start] === "$" && /\S/.test(source[start + 1] ?? "") ? "$" : undefined;
|
|
43
|
+
if (!opening)
|
|
44
|
+
return undefined;
|
|
45
|
+
const closing = opening === "\\(" ? "\\)" : opening === "\\[" ? "\\]" : opening;
|
|
46
|
+
for (let index = start + opening.length; index < limit; index += 1) {
|
|
47
|
+
if (source.startsWith(closing, index)) {
|
|
48
|
+
if (opening === "$" && (/\s/.test(source[index - 1]) || /\d/.test(source[index + 1] ?? "")))
|
|
49
|
+
continue;
|
|
50
|
+
return index + closing.length;
|
|
51
|
+
}
|
|
52
|
+
if (source[index] === "\\")
|
|
53
|
+
index += 1;
|
|
54
|
+
}
|
|
55
|
+
return undefined;
|
|
56
|
+
}
|
|
57
|
+
/** Micromark does not recognise Pandoc's attribute syntax. Leave it alone. */
|
|
58
|
+
function attributeEnd(source, start, limit) {
|
|
59
|
+
if (source[start] !== "{" || !/^\{[ \t]*(?:[.#]|[\w:-]+[ \t]*=)/.test(source.slice(start)))
|
|
60
|
+
return undefined;
|
|
61
|
+
let quote;
|
|
62
|
+
for (let index = start + 1; index < limit; index += 1) {
|
|
63
|
+
const character = source[index];
|
|
64
|
+
if (character === "\\")
|
|
65
|
+
index += 1;
|
|
66
|
+
else if (quote) {
|
|
67
|
+
if (character === quote)
|
|
68
|
+
quote = undefined;
|
|
69
|
+
}
|
|
70
|
+
else if (character === '"' || character === "'")
|
|
71
|
+
quote = character;
|
|
72
|
+
else if (character === "}")
|
|
73
|
+
return index + 1;
|
|
74
|
+
}
|
|
75
|
+
return undefined;
|
|
76
|
+
}
|
|
77
|
+
function bareUrlEnd(source, start) {
|
|
78
|
+
if (!/[hf]/i.test(source[start] ?? ""))
|
|
79
|
+
return undefined;
|
|
80
|
+
const match = source.slice(start).match(/^(?:https?|ftp):\/\/[^\s<>]+/i);
|
|
81
|
+
return match ? start + match[0].length : undefined;
|
|
82
|
+
}
|
|
83
|
+
function readMarkerEnd(source, start, limit, protectedRanges) {
|
|
84
|
+
let depth = 0;
|
|
85
|
+
for (let index = start + 4; index < limit; index += 1) {
|
|
86
|
+
const protectedRange = containingRange(protectedRanges, index);
|
|
87
|
+
const end = protectedRange?.end ?? mathEnd(source, index, limit) ?? attributeEnd(source, index, limit);
|
|
88
|
+
if (end !== undefined) {
|
|
89
|
+
index = end - 1;
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
const character = source[index];
|
|
93
|
+
if (character === "\\")
|
|
94
|
+
index += 1;
|
|
95
|
+
else if (character === "[")
|
|
96
|
+
depth += 1;
|
|
97
|
+
else if (character === "]") {
|
|
98
|
+
if (depth === 0)
|
|
99
|
+
return index + 1;
|
|
100
|
+
depth -= 1;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return undefined;
|
|
104
|
+
}
|
|
105
|
+
function attributeText(text) {
|
|
106
|
+
// Entity-encode backslashes as well: authored \" must not escape the closing
|
|
107
|
+
// quote in the generated Pandoc attribute. Pipes/backticks must not change
|
|
108
|
+
// table-cell parsing. Pandoc decodes the entities on output.
|
|
109
|
+
return text.replace(/&/g, "&").replace(/\\/g, "\")
|
|
110
|
+
.replace(/"/g, """).replace(/</g, "<").replace(/>/g, ">")
|
|
111
|
+
.replace(/\|/g, "|").replace(/`/g, "`");
|
|
112
|
+
}
|
|
113
|
+
/** Highlight prose annotations only; no source writes, raw HTML, or runtime JS. */
|
|
114
|
+
export function highlightMarkdownAnnotations(markdown) {
|
|
115
|
+
if (!/\[an:/i.test(markdown))
|
|
116
|
+
return markdown;
|
|
117
|
+
const split = splitValidYamlFrontMatter(markdown);
|
|
118
|
+
const frontMatter = split?.frontMatter ?? "";
|
|
119
|
+
const body = split?.body ?? markdown;
|
|
120
|
+
const bom = body.startsWith("\uFEFF") ? "\uFEFF" : "";
|
|
121
|
+
const source = body.slice(bom.length);
|
|
122
|
+
const events = postprocess(parse().document().write(preprocess()(source, "utf8", true)));
|
|
123
|
+
const prose = [];
|
|
124
|
+
const protectedRanges = [];
|
|
125
|
+
const quotePrefixes = [];
|
|
126
|
+
for (const [event, token] of events) {
|
|
127
|
+
if (event !== "enter")
|
|
128
|
+
continue;
|
|
129
|
+
const range = { start: token.start.offset, end: token.end.offset };
|
|
130
|
+
if (PROSE_TOKENS.has(token.type))
|
|
131
|
+
prose.push(range);
|
|
132
|
+
if (PROTECTED_TOKENS.has(token.type))
|
|
133
|
+
protectedRanges.push(range);
|
|
134
|
+
if (token.type === "blockQuotePrefix")
|
|
135
|
+
quotePrefixes.push(range);
|
|
136
|
+
}
|
|
137
|
+
const protectedInlines = mergeRanges(protectedRanges);
|
|
138
|
+
const prefixes = mergeRanges(quotePrefixes);
|
|
139
|
+
const replacements = [];
|
|
140
|
+
for (const range of prose) {
|
|
141
|
+
for (let index = range.start; index < range.end; index += 1) {
|
|
142
|
+
const protectedRange = containingRange(protectedInlines, index);
|
|
143
|
+
const end = protectedRange?.end ?? mathEnd(source, index, range.end)
|
|
144
|
+
?? attributeEnd(source, index, range.end) ?? bareUrlEnd(source, index);
|
|
145
|
+
if (end !== undefined) {
|
|
146
|
+
index = end - 1;
|
|
147
|
+
continue;
|
|
148
|
+
}
|
|
149
|
+
if (source[index] === "\\") {
|
|
150
|
+
index += 1;
|
|
151
|
+
continue;
|
|
152
|
+
}
|
|
153
|
+
if (source.slice(index, index + 4).toLowerCase() !== "[an:")
|
|
154
|
+
continue;
|
|
155
|
+
const markerEnd = readMarkerEnd(source, index, range.end, protectedInlines);
|
|
156
|
+
// Do not absorb another block, or repeatedly rescan a malformed paragraph.
|
|
157
|
+
if (markerEnd === undefined)
|
|
158
|
+
break;
|
|
159
|
+
let label = "";
|
|
160
|
+
for (let cursor = index + 4; cursor < markerEnd - 1; cursor += 1) {
|
|
161
|
+
const prefix = containingRange(prefixes, cursor);
|
|
162
|
+
if (prefix)
|
|
163
|
+
cursor = prefix.end - 1;
|
|
164
|
+
else
|
|
165
|
+
label += source[cursor];
|
|
166
|
+
}
|
|
167
|
+
label = label.replace(/\s*\r?\n\s*/g, " ").trim();
|
|
168
|
+
if (label) {
|
|
169
|
+
replacements.push({
|
|
170
|
+
start: index,
|
|
171
|
+
end: markerEnd,
|
|
172
|
+
text: `[${label}]{.annotation-marker title="${attributeText(`[an: ${label}]`)}"}`,
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
index = markerEnd - 1;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
let output = frontMatter + bom;
|
|
179
|
+
let cursor = 0;
|
|
180
|
+
for (const replacement of replacements) {
|
|
181
|
+
output += source.slice(cursor, replacement.start) + replacement.text;
|
|
182
|
+
cursor = replacement.end;
|
|
183
|
+
}
|
|
184
|
+
return output + source.slice(cursor);
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=annotations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"annotations.js","sourceRoot":"","sources":["../src/annotations.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { type PreviewFormatOption } from "./render.js";
|
|
3
3
|
import type { PreviewTheme } from "./styles.js";
|
|
4
|
-
export declare const VERSION = "0.
|
|
4
|
+
export declare const VERSION = "0.3.0";
|
|
5
5
|
export declare const DEFAULT_FONT_SIZE_PX = 15;
|
|
6
6
|
export declare const MIN_FONT_SIZE_PX = 10;
|
|
7
7
|
export declare const MAX_FONT_SIZE_PX = 24;
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AASA,OAAO,EAIL,KAAK,mBAAmB,EACzB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD,eAAO,MAAM,OAAO,UAAU,CAAC;AAC/B,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,gBAAgB,KAAK,CAAC;AACnC,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,qBAAa,gBAAiB,SAAQ,KAAK;gBAC7B,OAAO,EAAE,MAAM;CAI5B;AAqCD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAyGvD;AAED,wBAAgB,QAAQ,IAAI,MAAM,CAsBjC;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AASA,OAAO,EAIL,KAAK,mBAAmB,EACzB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD,eAAO,MAAM,OAAO,UAAU,CAAC;AAC/B,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,gBAAgB,KAAK,CAAC;AACnC,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAEnC,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,qBAAa,gBAAiB,SAAQ,KAAK;gBAC7B,OAAO,EAAE,MAAM;CAI5B;AAqCD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAyGvD;AAED,wBAAgB,QAAQ,IAAI,MAAM,CAsBjC;AAuJD,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAkC5D"}
|
package/dist/cli.js
CHANGED
|
@@ -8,7 +8,7 @@ import { fileURLToPath, pathToFileURL } from "node:url";
|
|
|
8
8
|
import { openInDefaultBrowser } from "./browser.js";
|
|
9
9
|
import { assertPandocAvailable, detectFormat, renderDocument, } from "./render.js";
|
|
10
10
|
import { startWatchPreview } from "./watch-preview.js";
|
|
11
|
-
export const VERSION = "0.
|
|
11
|
+
export const VERSION = "0.3.0";
|
|
12
12
|
export const DEFAULT_FONT_SIZE_PX = 15;
|
|
13
13
|
export const MIN_FONT_SIZE_PX = 10;
|
|
14
14
|
export const MAX_FONT_SIZE_PX = 24;
|
|
@@ -239,24 +239,6 @@ async function writeOneShotHtml(inputPath, html, options) {
|
|
|
239
239
|
await pruneCache(directory, outputPath);
|
|
240
240
|
return outputPath;
|
|
241
241
|
}
|
|
242
|
-
async function waitForShutdown(session) {
|
|
243
|
-
await new Promise((resolvePromise) => {
|
|
244
|
-
let shuttingDown = false;
|
|
245
|
-
const onInterrupt = () => shutdown("SIGINT");
|
|
246
|
-
const onTerminate = () => shutdown("SIGTERM");
|
|
247
|
-
const shutdown = (signal) => {
|
|
248
|
-
if (shuttingDown)
|
|
249
|
-
return;
|
|
250
|
-
shuttingDown = true;
|
|
251
|
-
process.off("SIGINT", onInterrupt);
|
|
252
|
-
process.off("SIGTERM", onTerminate);
|
|
253
|
-
process.stderr.write(`\nReceived ${signal}; shutting down preview server…\n`);
|
|
254
|
-
void session.close().then(resolvePromise, resolvePromise);
|
|
255
|
-
};
|
|
256
|
-
process.once("SIGINT", onInterrupt);
|
|
257
|
-
process.once("SIGTERM", onTerminate);
|
|
258
|
-
});
|
|
259
|
-
}
|
|
260
242
|
async function runOneShot(options, inputPath) {
|
|
261
243
|
const format = detectFormat(inputPath, options.format);
|
|
262
244
|
const source = await readFile(inputPath, "utf8");
|
|
@@ -279,38 +261,73 @@ async function runOneShot(options, inputPath) {
|
|
|
279
261
|
}
|
|
280
262
|
async function runWatch(options, inputPath) {
|
|
281
263
|
const format = detectFormat(inputPath, options.format);
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
theme: options.theme,
|
|
287
|
-
fontSizePx: options.fontSizePx,
|
|
288
|
-
port: options.port,
|
|
289
|
-
onLog: (message, level) => {
|
|
290
|
-
const stream = level === "info" ? process.stdout : process.stderr;
|
|
291
|
-
stream.write(`${message}\n`);
|
|
292
|
-
},
|
|
293
|
-
onStatus: (status) => {
|
|
294
|
-
if (status.status === "success" && status.revision > 1)
|
|
295
|
-
recovered = true;
|
|
296
|
-
},
|
|
264
|
+
const shutdownController = new AbortController();
|
|
265
|
+
let requestShutdown = () => undefined;
|
|
266
|
+
const shutdownRequested = new Promise((resolvePromise) => {
|
|
267
|
+
requestShutdown = resolvePromise;
|
|
297
268
|
});
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
269
|
+
let shuttingDown = false;
|
|
270
|
+
const shutdown = (signal) => {
|
|
271
|
+
if (shuttingDown)
|
|
272
|
+
return;
|
|
273
|
+
shuttingDown = true;
|
|
274
|
+
process.off("SIGINT", onInterrupt);
|
|
275
|
+
process.off("SIGTERM", onTerminate);
|
|
276
|
+
process.stderr.write(`\nReceived ${signal}; shutting down preview server…\n`);
|
|
277
|
+
shutdownController.abort();
|
|
278
|
+
requestShutdown();
|
|
279
|
+
};
|
|
280
|
+
const onInterrupt = () => shutdown("SIGINT");
|
|
281
|
+
const onTerminate = () => shutdown("SIGTERM");
|
|
282
|
+
process.once("SIGINT", onInterrupt);
|
|
283
|
+
process.once("SIGTERM", onTerminate);
|
|
284
|
+
let recovered = false;
|
|
285
|
+
let session;
|
|
304
286
|
try {
|
|
305
|
-
|
|
306
|
-
|
|
287
|
+
await assertPandocAvailable(shutdownController.signal);
|
|
288
|
+
if (shutdownController.signal.aborted)
|
|
289
|
+
return 0;
|
|
290
|
+
session = await startWatchPreview({
|
|
291
|
+
inputPath,
|
|
292
|
+
format,
|
|
293
|
+
theme: options.theme,
|
|
294
|
+
fontSizePx: options.fontSizePx,
|
|
295
|
+
port: options.port,
|
|
296
|
+
signal: shutdownController.signal,
|
|
297
|
+
onLog: (message, level) => {
|
|
298
|
+
const stream = level === "info" ? process.stdout : process.stderr;
|
|
299
|
+
stream.write(`${message}\n`);
|
|
300
|
+
},
|
|
301
|
+
onStatus: (status) => {
|
|
302
|
+
if (status.status === "success" && status.revision > 1)
|
|
303
|
+
recovered = true;
|
|
304
|
+
},
|
|
305
|
+
});
|
|
306
|
+
if (!shutdownController.signal.aborted) {
|
|
307
|
+
process.stdout.write(`Watching: ${inputPath}\n`);
|
|
308
|
+
process.stdout.write(`Preview URL: ${session.url}\n`);
|
|
309
|
+
process.stdout.write("Updates are save-based; unsaved editor buffers are not visible.\n");
|
|
310
|
+
if (session.initialError) {
|
|
311
|
+
process.stderr.write(`Initial render failed; watch mode remains active for recovery: ${session.initialError}\n`);
|
|
312
|
+
}
|
|
313
|
+
if (options.open)
|
|
314
|
+
await openInDefaultBrowser(session.url);
|
|
315
|
+
}
|
|
316
|
+
if (!shutdownController.signal.aborted)
|
|
317
|
+
await shutdownRequested;
|
|
318
|
+
await session.close();
|
|
319
|
+
return session.initialError && !recovered ? 1 : 0;
|
|
307
320
|
}
|
|
308
321
|
catch (error) {
|
|
309
|
-
await session
|
|
322
|
+
await session?.close().catch(() => undefined);
|
|
323
|
+
if (shutdownController.signal.aborted)
|
|
324
|
+
return 0;
|
|
310
325
|
throw error;
|
|
311
326
|
}
|
|
312
|
-
|
|
313
|
-
|
|
327
|
+
finally {
|
|
328
|
+
process.off("SIGINT", onInterrupt);
|
|
329
|
+
process.off("SIGTERM", onTerminate);
|
|
330
|
+
}
|
|
314
331
|
}
|
|
315
332
|
export async function runCli(argv) {
|
|
316
333
|
let options;
|
|
@@ -337,8 +354,10 @@ export async function runCli(argv) {
|
|
|
337
354
|
const inputPath = resolve(options.inputPath);
|
|
338
355
|
try {
|
|
339
356
|
await validateInputFile(inputPath);
|
|
357
|
+
if (options.watch)
|
|
358
|
+
return await runWatch(options, inputPath);
|
|
340
359
|
await assertPandocAvailable();
|
|
341
|
-
return
|
|
360
|
+
return await runOneShot(options, inputPath);
|
|
342
361
|
}
|
|
343
362
|
catch (error) {
|
|
344
363
|
process.stderr.write(`Error: ${error instanceof Error ? error.message : String(error)}\n`);
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface LocalResourceReference {
|
|
2
|
+
path: string;
|
|
3
|
+
search: string;
|
|
4
|
+
hash: string;
|
|
5
|
+
}
|
|
6
|
+
/** Reject UNC, Windows device, and mixed-separator network paths on every host. */
|
|
7
|
+
export declare function isNetworkResourcePath(value: string): boolean;
|
|
8
|
+
/**
|
|
9
|
+
* Parse a browser resource reference without allowing it to select a network
|
|
10
|
+
* file system. Query strings and fragments are retained for the rewritten URL.
|
|
11
|
+
*/
|
|
12
|
+
export declare function parseLocalResourceReference(value: string): LocalResourceReference | null;
|
|
13
|
+
/** Preserve an authored query and fragment after trusted route parameters. */
|
|
14
|
+
export declare function appendLocalResourceSuffix(route: string, reference: LocalResourceReference): string;
|
|
15
|
+
//# sourceMappingURL=local-resource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-resource.d.ts","sourceRoot":"","sources":["../src/local-resource.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,mFAAmF;AACnF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE5D;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,GAAG,sBAAsB,GAAG,IAAI,CAsCxF;AAED,8EAA8E;AAC9E,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,sBAAsB,GAAG,MAAM,CAIlG"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { win32 } from "node:path";
|
|
2
|
+
import { fileURLToPath } from "node:url";
|
|
3
|
+
/** Reject UNC, Windows device, and mixed-separator network paths on every host. */
|
|
4
|
+
export function isNetworkResourcePath(value) {
|
|
5
|
+
return value.replace(/\//g, "\\").startsWith("\\\\");
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Parse a browser resource reference without allowing it to select a network
|
|
9
|
+
* file system. Query strings and fragments are retained for the rewritten URL.
|
|
10
|
+
*/
|
|
11
|
+
export function parseLocalResourceReference(value) {
|
|
12
|
+
const trimmed = value.trim();
|
|
13
|
+
if (!trimmed || trimmed.startsWith("#"))
|
|
14
|
+
return null;
|
|
15
|
+
const hashIndex = trimmed.indexOf("#");
|
|
16
|
+
const hash = hashIndex >= 0 ? trimmed.slice(hashIndex) : "";
|
|
17
|
+
const withoutHash = hashIndex >= 0 ? trimmed.slice(0, hashIndex) : trimmed;
|
|
18
|
+
const queryIndex = withoutHash.indexOf("?");
|
|
19
|
+
const search = queryIndex >= 0 ? withoutHash.slice(queryIndex) : "";
|
|
20
|
+
const rawPath = queryIndex >= 0 ? withoutHash.slice(0, queryIndex) : withoutHash;
|
|
21
|
+
if (!rawPath || isNetworkResourcePath(rawPath))
|
|
22
|
+
return null;
|
|
23
|
+
if (/^file:/i.test(rawPath)) {
|
|
24
|
+
try {
|
|
25
|
+
const fileUrl = new URL(rawPath);
|
|
26
|
+
if (fileUrl.protocol !== "file:" || (fileUrl.hostname && fileUrl.hostname.toLowerCase() !== "localhost")) {
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
fileUrl.search = "";
|
|
30
|
+
fileUrl.hash = "";
|
|
31
|
+
const filePath = fileURLToPath(fileUrl);
|
|
32
|
+
if (filePath.includes("\0") || isNetworkResourcePath(filePath))
|
|
33
|
+
return null;
|
|
34
|
+
return { path: filePath, search, hash };
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
let decodedPath;
|
|
41
|
+
try {
|
|
42
|
+
decodedPath = decodeURIComponent(rawPath);
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
decodedPath = rawPath;
|
|
46
|
+
}
|
|
47
|
+
if (!decodedPath || decodedPath.includes("\0") || isNetworkResourcePath(decodedPath))
|
|
48
|
+
return null;
|
|
49
|
+
if (/^file:/i.test(decodedPath))
|
|
50
|
+
return null;
|
|
51
|
+
if (/^[A-Za-z][A-Za-z0-9+.-]*:/.test(decodedPath) && !win32.isAbsolute(decodedPath))
|
|
52
|
+
return null;
|
|
53
|
+
return { path: decodedPath, search, hash };
|
|
54
|
+
}
|
|
55
|
+
/** Preserve an authored query and fragment after trusted route parameters. */
|
|
56
|
+
export function appendLocalResourceSuffix(route, reference) {
|
|
57
|
+
const authoredQuery = reference.search.startsWith("?") ? reference.search.slice(1) : reference.search;
|
|
58
|
+
const withQuery = authoredQuery ? `${route}${route.includes("?") ? "&" : "?"}${authoredQuery}` : route;
|
|
59
|
+
return `${withQuery}${reference.hash}`;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=local-resource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-resource.js","sourceRoot":"","sources":["../src/local-resource.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,10 @@
|
|
|
4
4
|
* tag-masked pass handles Pandoc's Markdown-inside-native-HTML behavior.
|
|
5
5
|
*/
|
|
6
6
|
export declare function stripMarkdownHtmlComments(markdown: string): string;
|
|
7
|
+
export declare function splitValidYamlFrontMatter(source: string): {
|
|
8
|
+
frontMatter: string;
|
|
9
|
+
body: string;
|
|
10
|
+
} | undefined;
|
|
7
11
|
/** Preserve valid YAML mapping front matter byte-for-byte while removing body comments. */
|
|
8
12
|
export declare function stripMarkdownHtmlCommentsPreservingYamlFrontMatter(markdown: string): string;
|
|
9
13
|
//# sourceMappingURL=markdown-comments.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdown-comments.d.ts","sourceRoot":"","sources":["../src/markdown-comments.ts"],"names":[],"mappings":"AAmPA;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAalE;
|
|
1
|
+
{"version":3,"file":"markdown-comments.d.ts","sourceRoot":"","sources":["../src/markdown-comments.ts"],"names":[],"mappings":"AAmPA;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAalE;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAU3G;AAED,2FAA2F;AAC3F,wBAAgB,kDAAkD,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAK3F"}
|
|
@@ -255,7 +255,7 @@ export function stripMarkdownHtmlComments(markdown) {
|
|
|
255
255
|
}
|
|
256
256
|
return output + source.slice(cursor);
|
|
257
257
|
}
|
|
258
|
-
function splitValidYamlFrontMatter(source) {
|
|
258
|
+
export function splitValidYamlFrontMatter(source) {
|
|
259
259
|
const match = source.match(/^(\uFEFF?---[ \t]*\r?\n)([\s\S]*?)^((?:---|\.\.\.)[ \t]*(?:\r?\n|$))/m);
|
|
260
260
|
if (!match || match.index !== 0)
|
|
261
261
|
return undefined;
|