@page-scanner/cli 0.1.1 → 0.2.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.
Files changed (51) hide show
  1. package/README.md +53 -4
  2. package/dist/api.d.ts +82 -2
  3. package/dist/api.d.ts.map +1 -1
  4. package/dist/api.js +147 -18
  5. package/dist/api.js.map +1 -1
  6. package/dist/batch.d.ts +60 -0
  7. package/dist/batch.d.ts.map +1 -0
  8. package/dist/batch.js +116 -0
  9. package/dist/batch.js.map +1 -0
  10. package/dist/cli/args.d.ts +21 -4
  11. package/dist/cli/args.d.ts.map +1 -1
  12. package/dist/cli/args.js +94 -10
  13. package/dist/cli/args.js.map +1 -1
  14. package/dist/cli/commands.d.ts +2 -0
  15. package/dist/cli/commands.d.ts.map +1 -1
  16. package/dist/cli/commands.js +143 -14
  17. package/dist/cli/commands.js.map +1 -1
  18. package/dist/daemon/rpc-server.d.ts.map +1 -1
  19. package/dist/daemon/rpc-server.js +17 -1
  20. package/dist/daemon/rpc-server.js.map +1 -1
  21. package/dist/diff/image.d.ts +42 -0
  22. package/dist/diff/image.d.ts.map +1 -0
  23. package/dist/diff/image.js +144 -0
  24. package/dist/diff/image.js.map +1 -0
  25. package/dist/diff/index.d.ts +46 -0
  26. package/dist/diff/index.d.ts.map +1 -0
  27. package/dist/diff/index.js +108 -0
  28. package/dist/diff/index.js.map +1 -0
  29. package/dist/diff/png.d.ts +12 -0
  30. package/dist/diff/png.d.ts.map +1 -0
  31. package/dist/diff/png.js +169 -0
  32. package/dist/diff/png.js.map +1 -0
  33. package/dist/diff/text.d.ts +54 -0
  34. package/dist/diff/text.d.ts.map +1 -0
  35. package/dist/diff/text.js +198 -0
  36. package/dist/diff/text.js.map +1 -0
  37. package/dist/index.d.ts +5 -3
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.js +5 -3
  40. package/dist/index.js.map +1 -1
  41. package/dist/output.d.ts +10 -0
  42. package/dist/output.d.ts.map +1 -1
  43. package/dist/output.js +24 -4
  44. package/dist/output.js.map +1 -1
  45. package/dist/protocol.d.ts +37 -2
  46. package/dist/protocol.d.ts.map +1 -1
  47. package/dist/protocol.js +23 -2
  48. package/dist/protocol.js.map +1 -1
  49. package/dist/version.d.ts +1 -1
  50. package/dist/version.js +1 -1
  51. package/package.json +3 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"png.js","sourceRoot":"","sources":["../../src/diff/png.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * What changed in a page's text between two captures (#60): the Markdown
3
+ * `scan --markdown` writes (#61), compared a line at a time.
4
+ *
5
+ * A line of that Markdown is a block of the page (a heading, a paragraph, a
6
+ * list item, a table row), so a line diff is a passage diff: a reworded
7
+ * sentence shows as its paragraph removed and added again, which is how a
8
+ * person reading a policy for changes wants it. The front matter is set
9
+ * aside first, because its capture time differs on every run and would make
10
+ * two identical pages look changed.
11
+ *
12
+ * Myers' algorithm, the one `diff` and git use, with the common head and tail
13
+ * trimmed first. Past `MAX_EDIT_DISTANCE` edits it stops looking for the
14
+ * shortest script and reports the rest as removed and added whole: two
15
+ * captures that different are a different page, and the search would
16
+ * otherwise cost memory in the square of the edits.
17
+ */
18
+ export declare const MAX_EDIT_DISTANCE = 2000;
19
+ /** Unchanged lines kept around each change, as `diff -u` does. */
20
+ export declare const CONTEXT_LINES = 3;
21
+ export type DiffOp = ' ' | '-' | '+';
22
+ export interface DiffLine {
23
+ op: DiffOp;
24
+ text: string;
25
+ }
26
+ export interface Hunk {
27
+ /** 1-based first line in the old text, and how many lines of it the hunk covers. */
28
+ oldStart: number;
29
+ oldLines: number;
30
+ newStart: number;
31
+ newLines: number;
32
+ lines: DiffLine[];
33
+ }
34
+ export interface TextDiff {
35
+ added: number;
36
+ removed: number;
37
+ hunks: Hunk[];
38
+ }
39
+ export interface FrontMatter {
40
+ /** Each `key: value` line, with a JSON-quoted value unquoted. */
41
+ fields: Record<string, string>;
42
+ body: string;
43
+ }
44
+ /** The YAML front matter a Markdown export starts with, taken off the text. */
45
+ export declare function splitFrontMatter(text: string): FrontMatter;
46
+ /** The edit script from `a` to `b`, as a line each: kept, removed or added. */
47
+ export declare function diffLines(a: readonly string[], b: readonly string[]): DiffLine[];
48
+ /** The script cut into hunks with `context` unchanged lines around each change. */
49
+ export declare function toHunks(lines: readonly DiffLine[], context?: number): Hunk[];
50
+ /** Two Markdown captures compared, front matter aside. */
51
+ export declare function diffText(before: string, after: string): TextDiff;
52
+ /** The hunks as `diff -u` prints them, under a header naming the two files. */
53
+ export declare function formatUnified(diff: TextDiff, oldLabel: string, newLabel: string): string;
54
+ //# sourceMappingURL=text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/diff/text.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,eAAO,MAAM,iBAAiB,OAAO,CAAC;AACtC,kEAAkE;AAClE,eAAO,MAAM,aAAa,IAAI,CAAC;AAE/B,MAAM,MAAM,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAErC,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,IAAI;IACnB,oFAAoF;IACpF,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,IAAI,EAAE,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,iEAAiE;IACjE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,+EAA+E;AAC/E,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAoB1D;AAED,+EAA+E;AAC/E,wBAAgB,SAAS,CAAC,CAAC,EAAE,SAAS,MAAM,EAAE,EAAE,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,QAAQ,EAAE,CAiBhF;AA2ED,mFAAmF;AACnF,wBAAgB,OAAO,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,EAAE,OAAO,SAAgB,GAAG,IAAI,EAAE,CA+BnF;AAED,0DAA0D;AAC1D,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,CAUhE;AAED,+EAA+E;AAC/E,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAYxF"}
@@ -0,0 +1,198 @@
1
+ /**
2
+ * What changed in a page's text between two captures (#60): the Markdown
3
+ * `scan --markdown` writes (#61), compared a line at a time.
4
+ *
5
+ * A line of that Markdown is a block of the page (a heading, a paragraph, a
6
+ * list item, a table row), so a line diff is a passage diff: a reworded
7
+ * sentence shows as its paragraph removed and added again, which is how a
8
+ * person reading a policy for changes wants it. The front matter is set
9
+ * aside first, because its capture time differs on every run and would make
10
+ * two identical pages look changed.
11
+ *
12
+ * Myers' algorithm, the one `diff` and git use, with the common head and tail
13
+ * trimmed first. Past `MAX_EDIT_DISTANCE` edits it stops looking for the
14
+ * shortest script and reports the rest as removed and added whole: two
15
+ * captures that different are a different page, and the search would
16
+ * otherwise cost memory in the square of the edits.
17
+ */
18
+ export const MAX_EDIT_DISTANCE = 2000;
19
+ /** Unchanged lines kept around each change, as `diff -u` does. */
20
+ export const CONTEXT_LINES = 3;
21
+ /** The YAML front matter a Markdown export starts with, taken off the text. */
22
+ export function splitFrontMatter(text) {
23
+ const normalised = text.replace(/\r\n?/g, '\n');
24
+ const match = /^---\n([\s\S]*?)\n---\n?/.exec(normalised);
25
+ if (!match)
26
+ return { fields: {}, body: normalised };
27
+ const fields = {};
28
+ for (const line of match[1].split('\n')) {
29
+ const colon = line.indexOf(':');
30
+ if (colon <= 0)
31
+ continue;
32
+ const raw = line.slice(colon + 1).trim();
33
+ let value = raw;
34
+ if (raw.startsWith('"')) {
35
+ try {
36
+ value = String(JSON.parse(raw));
37
+ }
38
+ catch {
39
+ value = raw;
40
+ }
41
+ }
42
+ fields[line.slice(0, colon).trim()] = value;
43
+ }
44
+ return { fields, body: normalised.slice(match[0].length) };
45
+ }
46
+ /** The edit script from `a` to `b`, as a line each: kept, removed or added. */
47
+ export function diffLines(a, b) {
48
+ let head = 0;
49
+ while (head < a.length && head < b.length && a[head] === b[head])
50
+ head++;
51
+ let tail = 0;
52
+ while (tail < a.length - head &&
53
+ tail < b.length - head &&
54
+ a[a.length - 1 - tail] === b[b.length - 1 - tail]) {
55
+ tail++;
56
+ }
57
+ const middle = myers(a.slice(head, a.length - tail), b.slice(head, b.length - tail));
58
+ return [
59
+ ...a.slice(0, head).map((text) => ({ op: ' ', text })),
60
+ ...middle,
61
+ ...a.slice(a.length - tail).map((text) => ({ op: ' ', text })),
62
+ ];
63
+ }
64
+ function myers(a, b) {
65
+ const n = a.length;
66
+ const m = b.length;
67
+ if (n === 0)
68
+ return b.map((text) => ({ op: '+', text }));
69
+ if (m === 0)
70
+ return a.map((text) => ({ op: '-', text }));
71
+ // Lines as numbers, so the inner loop compares integers.
72
+ const ids = new Map();
73
+ const id = (line) => {
74
+ let value = ids.get(line);
75
+ if (value === undefined)
76
+ ids.set(line, (value = ids.size));
77
+ return value;
78
+ };
79
+ const x0 = a.map(id);
80
+ const y0 = b.map(id);
81
+ const limit = Math.min(n + m, MAX_EDIT_DISTANCE);
82
+ const offset = limit + 1;
83
+ const v = new Int32Array(2 * limit + 3);
84
+ // Each round's diagonals, -d..d, for the walk back.
85
+ const trace = [];
86
+ for (let d = 0; d <= limit; d++) {
87
+ for (let k = -d; k <= d; k += 2) {
88
+ let x = k === -d || (k !== d && v[offset + k - 1] < v[offset + k + 1])
89
+ ? v[offset + k + 1]
90
+ : v[offset + k - 1] + 1;
91
+ let y = x - k;
92
+ while (x < n && y < m && x0[x] === y0[y]) {
93
+ x++;
94
+ y++;
95
+ }
96
+ v[offset + k] = x;
97
+ if (x >= n && y >= m) {
98
+ trace.push(v.slice(offset - d, offset + d + 1));
99
+ return walkBack(trace, a, b);
100
+ }
101
+ }
102
+ trace.push(v.slice(offset - d, offset + d + 1));
103
+ }
104
+ // Too far apart to be worth the search: all of one, then all of the other.
105
+ return [
106
+ ...a.map((text) => ({ op: '-', text })),
107
+ ...b.map((text) => ({ op: '+', text })),
108
+ ];
109
+ }
110
+ function walkBack(trace, a, b) {
111
+ const out = [];
112
+ let x = a.length;
113
+ let y = b.length;
114
+ for (let d = trace.length - 1; d > 0; d--) {
115
+ const previous = trace[d - 1];
116
+ const at = (k) => previous[k + d - 1];
117
+ const k = x - y;
118
+ const down = k === -d || (k !== d && at(k - 1) < at(k + 1));
119
+ const prevK = down ? k + 1 : k - 1;
120
+ const prevX = at(prevK);
121
+ const prevY = prevX - prevK;
122
+ while (x > prevX && y > prevY) {
123
+ out.push({ op: ' ', text: a[--x] });
124
+ y--;
125
+ }
126
+ if (down)
127
+ out.push({ op: '+', text: b[--y] });
128
+ else
129
+ out.push({ op: '-', text: a[--x] });
130
+ }
131
+ while (x > 0 && y > 0) {
132
+ out.push({ op: ' ', text: a[--x] });
133
+ y--;
134
+ }
135
+ return out.reverse();
136
+ }
137
+ /** The script cut into hunks with `context` unchanged lines around each change. */
138
+ export function toHunks(lines, context = CONTEXT_LINES) {
139
+ // Where each script line sits in the old text and the new, 1-based.
140
+ const oldAt = [];
141
+ const newAt = [];
142
+ let oldLine = 1;
143
+ let newLine = 1;
144
+ for (const line of lines) {
145
+ oldAt.push(oldLine);
146
+ newAt.push(newLine);
147
+ if (line.op !== '+')
148
+ oldLine++;
149
+ if (line.op !== '-')
150
+ newLine++;
151
+ }
152
+ // Runs of changes no more than two contexts apart share a hunk.
153
+ const groups = [];
154
+ lines.forEach((line, index) => {
155
+ if (line.op === ' ')
156
+ return;
157
+ const last = groups[groups.length - 1];
158
+ if (last && index - last[1] - 1 <= context * 2)
159
+ last[1] = index;
160
+ else
161
+ groups.push([index, index]);
162
+ });
163
+ return groups.map(([first, last]) => {
164
+ const start = Math.max(0, first - context);
165
+ const slice = lines.slice(start, Math.min(lines.length, last + context + 1));
166
+ return {
167
+ oldStart: oldAt[start],
168
+ oldLines: slice.filter((line) => line.op !== '+').length,
169
+ newStart: newAt[start],
170
+ newLines: slice.filter((line) => line.op !== '-').length,
171
+ lines: slice,
172
+ };
173
+ });
174
+ }
175
+ /** Two Markdown captures compared, front matter aside. */
176
+ export function diffText(before, after) {
177
+ const lines = diffLines(splitFrontMatter(before).body.split('\n'), splitFrontMatter(after).body.split('\n'));
178
+ return {
179
+ added: lines.filter((line) => line.op === '+').length,
180
+ removed: lines.filter((line) => line.op === '-').length,
181
+ hunks: toHunks(lines),
182
+ };
183
+ }
184
+ /** The hunks as `diff -u` prints them, under a header naming the two files. */
185
+ export function formatUnified(diff, oldLabel, newLabel) {
186
+ if (diff.hunks.length === 0)
187
+ return '';
188
+ const range = (start, count) => count === 1 ? `${start}` : `${count === 0 ? start - 1 : start},${count}`;
189
+ return [
190
+ `--- ${oldLabel}`,
191
+ `+++ ${newLabel}`,
192
+ ...diff.hunks.flatMap((hunk) => [
193
+ `@@ -${range(hunk.oldStart, hunk.oldLines)} +${range(hunk.newStart, hunk.newLines)} @@`,
194
+ ...hunk.lines.map((line) => `${line.op}${line.text}`),
195
+ ]),
196
+ ].join('\n');
197
+ }
198
+ //# sourceMappingURL=text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.js","sourceRoot":"","sources":["../../src/diff/text.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -5,13 +5,15 @@
5
5
  * a separate process. `@page-scanner/cli/daemon` is the entry point that starts
6
6
  * one in-process, and it is the only one that pulls the WebSocket server in.
7
7
  */
8
- export { listBrowsers, listTabs, pair, scan, status, stop, waitForBrowser, type CommonOptions, type PairResult, type ScanOptions, type ScanResult, type StatusReport, type TabsResult, } from './api.js';
8
+ export { listBrowsers, listTabs, pair, scan, scanMany, checkBatch, checkOutput, MARKDOWN_MODES, status, stop, waitForBrowser, type CommonOptions, type PairResult, type ScanOptions, type ScanResult, type BatchItem, type BatchOptions, type BatchResult, type MarkdownMode, type PageText, type StatusReport, type TabsResult, } from './api.js';
9
9
  export { configDir, configPath, configFileIsOwnerOnly, ensureConfig, readConfig, DEFAULT_PORT, type PairingConfig, } from './config.js';
10
10
  export { exitCodeFor, isPageScannerError, toPageScannerError, PageScannerError, ERROR_CODES, type ErrorCode, } from './errors.js';
11
- export { resolveOutputPath, writeScanFile } from './output.js';
11
+ export { outputNamesAFile, resolveOutputPath, withExtension, writeScanFile, writeTextFile, } from './output.js';
12
+ export { diffCaptures, type DiffOptions, type DiffResult, type TextDiffResult, type VisualDiffResult, } from './diff/index.js';
13
+ export { MAX_BATCH_URLS, NAME_FIELDS, checkNameTemplate, fillNameTemplate, readUrlList, type NameField, } from './batch.js';
12
14
  export { connectDaemon, stopDaemon, DAEMON_START_TIMEOUT_MS, type ConnectOptions, type DaemonClient, } from './daemon/client.js';
13
15
  export { daemonLogPath, daemonStatePath, readDaemonState, type DaemonState, } from './daemon/state.js';
14
16
  export type { ConnectedBrowser } from './bridge/server.js';
15
- export { BRIDGE_PING_INTERVAL_MS, BRIDGE_PROTOCOL_VERSION, DEFAULT_PAGE_SIZE, EXPORT_FORMAT_IDS, PAGE_SIZE_IDS, VIDEO_HANDLINGS, type ExportFormatId, type PageSizeId, type TabSummary, type TruncationReport, type VideoHandling, type WindowSummary, } from './protocol.js';
17
+ export { BRIDGE_PING_INTERVAL_MS, BRIDGE_PROTOCOL_VERSION, CAPTURE_WIDTHS, COLOR_SCHEME_PREFERENCES, DEFAULT_CAPTURE_WIDTH, DEFAULT_COLOR_SCHEME, DEFAULT_PAGE_SIZE, EXPORT_FORMAT_IDS, PAGE_SIZE_IDS, STRUCTURED_MODES, VIDEO_HANDLINGS, type CaptureWidth, type ColorSchemePreference, type ExportFormatId, type PageSizeId, type StructuredHeading, type StructuredMode, type StructuredPage, type TabSummary, type TruncationReport, type VideoHandling, type WindowSummary, } from './protocol.js';
16
18
  export { CLI_VERSION } from './version.js';
17
19
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,IAAI,EACJ,cAAc,EACd,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,UAAU,GAChB,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,SAAS,EACT,UAAU,EACV,qBAAqB,EACrB,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,KAAK,aAAa,GACnB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,EACX,KAAK,SAAS,GACf,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE/D,OAAO,EACL,aAAa,EACb,UAAU,EACV,uBAAuB,EACvB,KAAK,cAAc,EACnB,KAAK,YAAY,GAClB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,aAAa,EACb,eAAe,EACf,eAAe,EACf,KAAK,WAAW,GACjB,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,aAAa,GACnB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,WAAW,EACX,cAAc,EACd,MAAM,EACN,IAAI,EACJ,cAAc,EACd,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,UAAU,GAChB,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,SAAS,EACT,UAAU,EACV,qBAAqB,EACrB,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,KAAK,aAAa,GACnB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,EACX,KAAK,SAAS,GACf,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,aAAa,GACd,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,YAAY,EACZ,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,gBAAgB,GACtB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EACX,KAAK,SAAS,GACf,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,aAAa,EACb,UAAU,EACV,uBAAuB,EACvB,KAAK,cAAc,EACnB,KAAK,YAAY,GAClB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,aAAa,EACb,eAAe,EACf,eAAe,EACf,KAAK,WAAW,GACjB,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,cAAc,EACd,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,KAAK,YAAY,EACjB,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,aAAa,GACnB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC"}
package/dist/index.js CHANGED
@@ -5,12 +5,14 @@
5
5
  * a separate process. `@page-scanner/cli/daemon` is the entry point that starts
6
6
  * one in-process, and it is the only one that pulls the WebSocket server in.
7
7
  */
8
- export { listBrowsers, listTabs, pair, scan, status, stop, waitForBrowser, } from './api.js';
8
+ export { listBrowsers, listTabs, pair, scan, scanMany, checkBatch, checkOutput, MARKDOWN_MODES, status, stop, waitForBrowser, } from './api.js';
9
9
  export { configDir, configPath, configFileIsOwnerOnly, ensureConfig, readConfig, DEFAULT_PORT, } from './config.js';
10
10
  export { exitCodeFor, isPageScannerError, toPageScannerError, PageScannerError, ERROR_CODES, } from './errors.js';
11
- export { resolveOutputPath, writeScanFile } from './output.js';
11
+ export { outputNamesAFile, resolveOutputPath, withExtension, writeScanFile, writeTextFile, } from './output.js';
12
+ export { diffCaptures, } from './diff/index.js';
13
+ export { MAX_BATCH_URLS, NAME_FIELDS, checkNameTemplate, fillNameTemplate, readUrlList, } from './batch.js';
12
14
  export { connectDaemon, stopDaemon, DAEMON_START_TIMEOUT_MS, } from './daemon/client.js';
13
15
  export { daemonLogPath, daemonStatePath, readDaemonState, } from './daemon/state.js';
14
- export { BRIDGE_PING_INTERVAL_MS, BRIDGE_PROTOCOL_VERSION, DEFAULT_PAGE_SIZE, EXPORT_FORMAT_IDS, PAGE_SIZE_IDS, VIDEO_HANDLINGS, } from './protocol.js';
16
+ export { BRIDGE_PING_INTERVAL_MS, BRIDGE_PROTOCOL_VERSION, CAPTURE_WIDTHS, COLOR_SCHEME_PREFERENCES, DEFAULT_CAPTURE_WIDTH, DEFAULT_COLOR_SCHEME, DEFAULT_PAGE_SIZE, EXPORT_FORMAT_IDS, PAGE_SIZE_IDS, STRUCTURED_MODES, VIDEO_HANDLINGS, } from './protocol.js';
15
17
  export { CLI_VERSION } from './version.js';
16
18
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,IAAI,EACJ,IAAI,EACJ,MAAM,EACN,IAAI,EACJ,cAAc,GAOf,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,SAAS,EACT,UAAU,EACV,qBAAqB,EACrB,YAAY,EACZ,UAAU,EACV,YAAY,GAEb,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,GAEZ,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE/D,OAAO,EACL,aAAa,EACb,UAAU,EACV,uBAAuB,GAGxB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,aAAa,EACb,eAAe,EACf,eAAe,GAEhB,MAAM,mBAAmB,CAAC;AAI3B,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,eAAe,GAOhB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,IAAI,EACJ,IAAI,EACJ,QAAQ,EACR,UAAU,EACV,WAAW,EACX,cAAc,EACd,MAAM,EACN,IAAI,EACJ,cAAc,GAYf,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,SAAS,EACT,UAAU,EACV,qBAAqB,EACrB,YAAY,EACZ,UAAU,EACV,YAAY,GAEb,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,GAEZ,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,aAAa,GACd,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,YAAY,GAKb,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,GAEZ,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,aAAa,EACb,UAAU,EACV,uBAAuB,GAGxB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,aAAa,EACb,eAAe,EACf,eAAe,GAEhB,MAAM,mBAAmB,CAAC;AAI3B,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,cAAc,EACd,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,eAAe,GAYhB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC"}
package/dist/output.d.ts CHANGED
@@ -5,6 +5,16 @@
5
5
  * caller holding someone else's working directory can pass it.
6
6
  */
7
7
  export declare function resolveOutputPath(outputPath: string | undefined, suggestedName: string, cwd?: string): string;
8
+ /**
9
+ * Whether `--out` names the file itself rather than a directory to put it in:
10
+ * no trailing separator, an extension, and not a directory that is already
11
+ * there. A batch (#59) writes several files, so it needs the directory.
12
+ */
13
+ export declare function outputNamesAFile(outputPath: string, cwd?: string): boolean;
14
+ /** The same path with another extension: `page.pdf` to `page.md`. */
15
+ export declare function withExtension(path: string, extension: string): string;
16
+ /** Text as UTF-8, its directories made on the way, as `writeScanFile` does for bytes. */
17
+ export declare function writeTextFile(target: string, text: string): void;
8
18
  /**
9
19
  * `--out captures/2026/page.pdf` should not fail because `2026` is not there
10
20
  * yet, so the parent chain is created on the way in.
@@ -1 +1 @@
1
- {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AA+BA;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,aAAa,EAAE,MAAM,EACrB,GAAG,GAAE,MAAsB,GAC1B,MAAM,CASR;AAqBD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAGvE"}
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AA+BA;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,aAAa,EAAE,MAAM,EACrB,GAAG,GAAE,MAAsB,GAC1B,MAAM,CAKR;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,GAAE,MAAsB,GAAG,OAAO,CAOzF;AAqBD,qEAAqE;AACrE,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAKrE;AAED,yFAAyF;AACzF,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAGhE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAGvE"}
package/dist/output.js CHANGED
@@ -7,7 +7,7 @@
7
7
  * nothing to do with where the person typing the command is standing.
8
8
  */
9
9
  import { mkdirSync, statSync, writeFileSync } from 'node:fs';
10
- import { dirname, join, resolve } from 'node:path';
10
+ import { basename, dirname, join, resolve } from 'node:path';
11
11
  /**
12
12
  * A trailing separator is how the user says "this is a directory", and the only
13
13
  * way to say it about a directory that does not exist yet.
@@ -36,10 +36,18 @@ export function resolveOutputPath(outputPath, suggestedName, cwd = process.cwd()
36
36
  if (!outputPath)
37
37
  return resolve(cwd, suggestedName);
38
38
  const target = resolve(cwd, outputPath);
39
- const namesAFile = !TRAILING_SEPARATOR.test(outputPath) &&
39
+ return outputNamesAFile(outputPath, cwd) ? target : join(target, suggestedName);
40
+ }
41
+ /**
42
+ * Whether `--out` names the file itself rather than a directory to put it in:
43
+ * no trailing separator, an extension, and not a directory that is already
44
+ * there. A batch (#59) writes several files, so it needs the directory.
45
+ */
46
+ export function outputNamesAFile(outputPath, cwd = process.cwd()) {
47
+ const target = resolve(cwd, outputPath);
48
+ return (!TRAILING_SEPARATOR.test(outputPath) &&
40
49
  FILE_EXTENSION.test(target) &&
41
- !isExistingDirectory(target);
42
- return namesAFile ? target : join(target, suggestedName);
50
+ !isExistingDirectory(target));
43
51
  }
44
52
  /**
45
53
  * An existing directory wins over the extension rule, so `--out ./v1.2` writes
@@ -60,6 +68,18 @@ function isExistingDirectory(candidate) {
60
68
  return false;
61
69
  }
62
70
  }
71
+ /** The same path with another extension: `page.pdf` to `page.md`. */
72
+ export function withExtension(path, extension) {
73
+ const base = basename(path);
74
+ const dot = base.lastIndexOf('.');
75
+ const stem = dot > 0 ? path.slice(0, path.length - base.length + dot) : path;
76
+ return `${stem}.${extension}`;
77
+ }
78
+ /** Text as UTF-8, its directories made on the way, as `writeScanFile` does for bytes. */
79
+ export function writeTextFile(target, text) {
80
+ mkdirSync(dirname(target), { recursive: true });
81
+ writeFileSync(target, text, 'utf8');
82
+ }
63
83
  /**
64
84
  * `--out captures/2026/page.pdf` should not fail because `2026` is not there
65
85
  * yet, so the parent chain is created on the way in.
@@ -1 +1 @@
1
- {"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEnD;;;;;;;;;;GAUG;AACH,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AAEpC;;;;GAIG;AACH,MAAM,cAAc,GAAG,mBAAmB,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,UAA8B,EAC9B,aAAqB,EACrB,MAAc,OAAO,CAAC,GAAG,EAAE;IAE3B,IAAI,CAAC,UAAU;QAAE,OAAO,OAAO,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IAEpD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACxC,MAAM,UAAU,GACd,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;QACpC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;QAC3B,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC/B,OAAO,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AAC3D,CAAC;AAED;;;GAGG;AACH,SAAS,mBAAmB,CAAC,SAAiB;IAC5C,IAAI,CAAC;QACH,qEAAqE;QACrE,0EAA0E;QAC1E,sEAAsE;QACtE,2EAA2E;QAC3E,uEAAuE;QACvE,yEAAyE;QACzE,qBAAqB;QACrB,OAAO,QAAQ,CAAC,SAAS,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI,KAAK,CAAC;IAChF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,MAAc,EAAE,WAAmB;IAC/D,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC5D,CAAC"}
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE7D;;;;;;;;;;GAUG;AACH,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AAEpC;;;;GAIG;AACH,MAAM,cAAc,GAAG,mBAAmB,CAAC;AAE3C;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,UAA8B,EAC9B,aAAqB,EACrB,MAAc,OAAO,CAAC,GAAG,EAAE;IAE3B,IAAI,CAAC,UAAU;QAAE,OAAO,OAAO,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IAEpD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACxC,OAAO,gBAAgB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AAClF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,UAAkB,EAAE,MAAc,OAAO,CAAC,GAAG,EAAE;IAC9E,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IACxC,OAAO,CACL,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;QACpC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;QAC3B,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAC7B,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,mBAAmB,CAAC,SAAiB;IAC5C,IAAI,CAAC;QACH,qEAAqE;QACrE,0EAA0E;QAC1E,sEAAsE;QACtE,2EAA2E;QAC3E,uEAAuE;QACvE,yEAAyE;QACzE,qBAAqB;QACrB,OAAO,QAAQ,CAAC,SAAS,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI,KAAK,CAAC;IAChF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,SAAiB;IAC3D,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7E,OAAO,GAAG,IAAI,IAAI,SAAS,EAAE,CAAC;AAChC,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,aAAa,CAAC,MAAc,EAAE,IAAY;IACxD,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,aAAa,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AACtC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,MAAc,EAAE,WAAmB;IAC/D,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC5D,CAAC"}
@@ -17,9 +17,12 @@
17
17
  export declare const BRIDGE_PROTOCOL_VERSION = 1;
18
18
  /** Ping cadence. Chrome resets the service worker's idle timer on every frame. */
19
19
  export declare const BRIDGE_PING_INTERVAL_MS = 20000;
20
- /** Mirrors EXPORT_FORMAT_IDS in `extension/src/lib/export/formats.ts`. */
20
+ /** Mirrors BRIDGE_FORMAT_IDS in `extension/src/lib/bridge/protocol.ts`. */
21
21
  export declare const EXPORT_FORMAT_IDS: readonly ["pdf", "png", "jpeg"];
22
22
  export type ExportFormatId = (typeof EXPORT_FORMAT_IDS)[number];
23
+ /** Mirrors STRUCTURED_MODES: the page's text beside the file, or instead of it (#61). */
24
+ export declare const STRUCTURED_MODES: readonly ["alongside", "only"];
25
+ export type StructuredMode = (typeof STRUCTURED_MODES)[number];
23
26
  /** Mirrors the keys of PAGE_SIZE_LABELS in `extension/src/lib/pdf/layout.ts`. */
24
27
  export declare const PAGE_SIZE_IDS: readonly ["auto", "a4", "letter"];
25
28
  export type PageSizeId = (typeof PAGE_SIZE_IDS)[number];
@@ -28,6 +31,16 @@ export declare const DEFAULT_PAGE_SIZE: PageSizeId;
28
31
  /** Mirrors VIDEO_HANDLINGS in `extension/src/lib/capture/viewport-units.ts`. */
29
32
  export declare const VIDEO_HANDLINGS: readonly ["frame", "blank"];
30
33
  export type VideoHandling = (typeof VIDEO_HANDLINGS)[number];
34
+ /** Mirrors COLOR_SCHEME_PREFERENCES in `extension/src/lib/capture/color-scheme.ts`. */
35
+ export declare const COLOR_SCHEME_PREFERENCES: readonly ["auto", "light", "dark"];
36
+ export type ColorSchemePreference = (typeof COLOR_SCHEME_PREFERENCES)[number];
37
+ /** Mirrors DEFAULT_COLOR_SCHEME in `extension/src/lib/capture/color-scheme.ts`. */
38
+ export declare const DEFAULT_COLOR_SCHEME: ColorSchemePreference;
39
+ /** Mirrors CAPTURE_WIDTHS in `extension/src/lib/capture/page-width.ts`. */
40
+ export declare const CAPTURE_WIDTHS: readonly ["window", "a4", "letter"];
41
+ export type CaptureWidth = (typeof CAPTURE_WIDTHS)[number];
42
+ /** Mirrors DEFAULT_CAPTURE_WIDTH in `extension/src/lib/capture/page-width.ts`. */
43
+ export declare const DEFAULT_CAPTURE_WIDTH: CaptureWidth;
31
44
  /** First frame the extension sends. The server answers `hello-ok` or closes. */
32
45
  export interface HelloFrame {
33
46
  type: 'hello';
@@ -71,8 +84,28 @@ export interface ScanRequest {
71
84
  /** 0..1, only meaningful for a lossy format. */
72
85
  quality?: number;
73
86
  videoHandling?: VideoHandling;
87
+ /** Which of a page's two themes to capture. Optional and additive. */
88
+ colorScheme?: ColorSchemePreference;
89
+ /** Lay the page out at a sheet's width, so the PDF needs no shrinking. */
90
+ captureWidth?: CaptureWidth;
74
91
  /** Leave the capture open in an editor tab afterwards. Default false. */
75
92
  openEditor?: boolean;
93
+ /** Send the page's text back as well, or instead of the file. Optional and additive. */
94
+ structured?: StructuredMode;
95
+ }
96
+ export interface StructuredHeading {
97
+ level: number;
98
+ text: string;
99
+ }
100
+ /** The page as text: Markdown, and what it is. Mirrors the extension's. */
101
+ export interface StructuredPage {
102
+ markdown: string;
103
+ title: string;
104
+ url: string;
105
+ /** Milliseconds since the epoch. */
106
+ capturedAt: number;
107
+ language: string | null;
108
+ headings: StructuredHeading[];
76
109
  }
77
110
  export interface WindowSummary {
78
111
  windowId: number;
@@ -120,8 +153,10 @@ export interface ScanResultResponse {
120
153
  /** Absent unless the capture stopped short of the whole page. */
121
154
  truncated?: TruncationReport;
122
155
  fileName: string;
123
- /** The built file. Base64 because JSON is the frame format. */
156
+ /** The built file. Base64 because JSON is the frame format. Empty for `structured: 'only'`. */
124
157
  bytesBase64: string;
158
+ /** Present when the request asked for it and the extension knows how. */
159
+ structured?: StructuredPage;
125
160
  }
126
161
  export interface ErrorResponse {
127
162
  type: 'error';
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"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"}
package/dist/protocol.js CHANGED
@@ -17,14 +17,24 @@
17
17
  export const BRIDGE_PROTOCOL_VERSION = 1;
18
18
  /** Ping cadence. Chrome resets the service worker's idle timer on every frame. */
19
19
  export const BRIDGE_PING_INTERVAL_MS = 20_000;
20
- /** Mirrors EXPORT_FORMAT_IDS in `extension/src/lib/export/formats.ts`. */
20
+ /** Mirrors BRIDGE_FORMAT_IDS in `extension/src/lib/bridge/protocol.ts`. */
21
21
  export const EXPORT_FORMAT_IDS = ['pdf', 'png', 'jpeg'];
22
+ /** Mirrors STRUCTURED_MODES: the page's text beside the file, or instead of it (#61). */
23
+ export const STRUCTURED_MODES = ['alongside', 'only'];
22
24
  /** Mirrors the keys of PAGE_SIZE_LABELS in `extension/src/lib/pdf/layout.ts`. */
23
25
  export const PAGE_SIZE_IDS = ['auto', 'a4', 'letter'];
24
26
  /** Mirrors DEFAULT_PAGE_SIZE in `extension/src/lib/pdf/layout.ts`. */
25
27
  export const DEFAULT_PAGE_SIZE = 'a4';
26
28
  /** Mirrors VIDEO_HANDLINGS in `extension/src/lib/capture/viewport-units.ts`. */
27
29
  export const VIDEO_HANDLINGS = ['frame', 'blank'];
30
+ /** Mirrors COLOR_SCHEME_PREFERENCES in `extension/src/lib/capture/color-scheme.ts`. */
31
+ export const COLOR_SCHEME_PREFERENCES = ['auto', 'light', 'dark'];
32
+ /** Mirrors DEFAULT_COLOR_SCHEME in `extension/src/lib/capture/color-scheme.ts`. */
33
+ export const DEFAULT_COLOR_SCHEME = 'auto';
34
+ /** Mirrors CAPTURE_WIDTHS in `extension/src/lib/capture/page-width.ts`. */
35
+ export const CAPTURE_WIDTHS = ['window', 'a4', 'letter'];
36
+ /** Mirrors DEFAULT_CAPTURE_WIDTH in `extension/src/lib/capture/page-width.ts`. */
37
+ export const DEFAULT_CAPTURE_WIDTH = 'window';
28
38
  function isRecord(value) {
29
39
  return typeof value === 'object' && value !== null && !Array.isArray(value);
30
40
  }
@@ -82,6 +92,16 @@ export function isTabsResponse(value) {
82
92
  Array.isArray(value.tabs) &&
83
93
  value.tabs.every(isTabSummary));
84
94
  }
95
+ function isStructuredPage(value) {
96
+ return (isRecord(value) &&
97
+ typeof value.markdown === 'string' &&
98
+ typeof value.title === 'string' &&
99
+ typeof value.url === 'string' &&
100
+ isFiniteNumber(value.capturedAt) &&
101
+ (value.language === null || typeof value.language === 'string') &&
102
+ Array.isArray(value.headings) &&
103
+ value.headings.every((heading) => isRecord(heading) && isFiniteNumber(heading.level) && typeof heading.text === 'string'));
104
+ }
85
105
  export function isScanResultResponse(value) {
86
106
  return (isRecord(value) &&
87
107
  value.type === 'scan-result' &&
@@ -91,7 +111,8 @@ export function isScanResultResponse(value) {
91
111
  (value.mode === 'vector' || value.mode === 'raster') &&
92
112
  isNonEmptyString(value.fileName) &&
93
113
  typeof value.bytesBase64 === 'string' &&
94
- (value.truncated === undefined || isTruncationReport(value.truncated)));
114
+ (value.truncated === undefined || isTruncationReport(value.truncated)) &&
115
+ (value.structured === undefined || isStructuredPage(value.structured)));
95
116
  }
96
117
  export function isErrorResponse(value) {
97
118
  return (isRecord(value) &&
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"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"}
package/dist/version.d.ts CHANGED
@@ -7,5 +7,5 @@
7
7
  * `version.test.ts` asserts this matches package.json, so the copy cannot
8
8
  * drift without a red test.
9
9
  */
10
- export declare const CLI_VERSION = "0.1.1";
10
+ export declare const CLI_VERSION = "0.2.0";
11
11
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -7,5 +7,5 @@
7
7
  * `version.test.ts` asserts this matches package.json, so the copy cannot
8
8
  * drift without a red test.
9
9
  */
10
- export const CLI_VERSION = '0.1.1';
10
+ export const CLI_VERSION = '0.2.0';
11
11
  //# sourceMappingURL=version.js.map