@unisim/doc 0.1.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 +91 -0
- package/dist/convert.d.ts +54 -0
- package/dist/convert.d.ts.map +1 -0
- package/dist/convert.js +216 -0
- package/dist/convert.js.map +1 -0
- package/dist/image.d.ts +17 -0
- package/dist/image.d.ts.map +1 -0
- package/dist/image.js +66 -0
- package/dist/image.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +51 -0
- package/dist/index.js.map +1 -0
- package/dist/merge.d.ts +14 -0
- package/dist/merge.d.ts.map +1 -0
- package/dist/merge.js +51 -0
- package/dist/merge.js.map +1 -0
- package/dist/metrics.d.ts +19 -0
- package/dist/metrics.d.ts.map +1 -0
- package/dist/metrics.js +151 -0
- package/dist/metrics.js.map +1 -0
- package/dist/model.d.ts +114 -0
- package/dist/model.d.ts.map +1 -0
- package/dist/model.js +121 -0
- package/dist/model.js.map +1 -0
- package/dist/pdfcore.d.ts +118 -0
- package/dist/pdfcore.d.ts.map +1 -0
- package/dist/pdfcore.js +398 -0
- package/dist/pdfcore.js.map +1 -0
- package/dist/read/csv.d.ts +17 -0
- package/dist/read/csv.d.ts.map +1 -0
- package/dist/read/csv.js +167 -0
- package/dist/read/csv.js.map +1 -0
- package/dist/read/doc.d.ts +3 -0
- package/dist/read/doc.d.ts.map +1 -0
- package/dist/read/doc.js +360 -0
- package/dist/read/doc.js.map +1 -0
- package/dist/read/docx.d.ts +3 -0
- package/dist/read/docx.d.ts.map +1 -0
- package/dist/read/docx.js +455 -0
- package/dist/read/docx.js.map +1 -0
- package/dist/read/html.d.ts +4 -0
- package/dist/read/html.d.ts.map +1 -0
- package/dist/read/html.js +236 -0
- package/dist/read/html.js.map +1 -0
- package/dist/read/json.d.ts +9 -0
- package/dist/read/json.d.ts.map +1 -0
- package/dist/read/json.js +105 -0
- package/dist/read/json.js.map +1 -0
- package/dist/read/markdown.d.ts +4 -0
- package/dist/read/markdown.d.ts.map +1 -0
- package/dist/read/markdown.js +247 -0
- package/dist/read/markdown.js.map +1 -0
- package/dist/read/odt.d.ts +3 -0
- package/dist/read/odt.d.ts.map +1 -0
- package/dist/read/odt.js +359 -0
- package/dist/read/odt.js.map +1 -0
- package/dist/read/rtf.d.ts +3 -0
- package/dist/read/rtf.d.ts.map +1 -0
- package/dist/read/rtf.js +341 -0
- package/dist/read/rtf.js.map +1 -0
- package/dist/read/text.d.ts +4 -0
- package/dist/read/text.d.ts.map +1 -0
- package/dist/read/text.js +62 -0
- package/dist/read/text.js.map +1 -0
- package/dist/unzip.d.ts +23 -0
- package/dist/unzip.d.ts.map +1 -0
- package/dist/unzip.js +152 -0
- package/dist/unzip.js.map +1 -0
- package/dist/write/data.d.ts +16 -0
- package/dist/write/data.d.ts.map +1 -0
- package/dist/write/data.js +89 -0
- package/dist/write/data.js.map +1 -0
- package/dist/write/pdf.d.ts +10 -0
- package/dist/write/pdf.d.ts.map +1 -0
- package/dist/write/pdf.js +696 -0
- package/dist/write/pdf.js.map +1 -0
- package/dist/write/pdfSettings.d.ts +13 -0
- package/dist/write/pdfSettings.d.ts.map +1 -0
- package/dist/write/pdfSettings.js +26 -0
- package/dist/write/pdfSettings.js.map +1 -0
- package/dist/write/text.d.ts +5 -0
- package/dist/write/text.d.ts.map +1 -0
- package/dist/write/text.js +341 -0
- package/dist/write/text.js.map +1 -0
- package/dist/xml.d.ts +22 -0
- package/dist/xml.d.ts.map +1 -0
- package/dist/xml.js +83 -0
- package/dist/xml.js.map +1 -0
- package/package.json +31 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pdf.js","sourceRoot":"","sources":["../../src/write/pdf.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export type PaperSize = 'A4' | 'Letter' | 'A5' | 'A3';
|
|
2
|
+
export type PageMargin = 'narrow' | 'normal' | 'wide';
|
|
3
|
+
export type FontChoice = 'sans' | 'serif';
|
|
4
|
+
export interface PdfSettings {
|
|
5
|
+
paper: PaperSize;
|
|
6
|
+
font: FontChoice;
|
|
7
|
+
/** Body size in points. Headings, code and tables all scale from it. */
|
|
8
|
+
fontSize: number;
|
|
9
|
+
margin: PageMargin;
|
|
10
|
+
pageNumbers: boolean;
|
|
11
|
+
}
|
|
12
|
+
export declare const DEFAULT_PDF_SETTINGS: PdfSettings;
|
|
13
|
+
//# sourceMappingURL=pdfSettings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pdfSettings.d.ts","sourceRoot":"","sources":["../../src/write/pdfSettings.ts"],"names":[],"mappings":"AAmBA,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAA;AACrD,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAA;AACrD,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,OAAO,CAAA;AAEzC,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,SAAS,CAAA;IAChB,IAAI,EAAE,UAAU,CAAA;IAChB,wEAAwE;IACxE,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,UAAU,CAAA;IAClB,WAAW,EAAE,OAAO,CAAA;CACrB;AAED,eAAO,MAAM,oBAAoB,EAAE,WAMlC,CAAA"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// The PDF settings, on their own — types and defaults, no engine.
|
|
3
|
+
//
|
|
4
|
+
// ⚠️ THIS FILE EXISTS SO THE LAYOUT ENGINE STAYS OUT OF THE MAIN BUNDLE, and it
|
|
5
|
+
// is worth knowing why before anyone tidies it back into `pdf.ts`.
|
|
6
|
+
//
|
|
7
|
+
// The settings panel needs `DEFAULT_PDF_SETTINGS` at startup, so the store
|
|
8
|
+
// imports it STATICALLY. `write/pdf.ts` is imported DYNAMICALLY, to keep the
|
|
9
|
+
// renderer and its font tables out of the way of somebody converting a JPEG.
|
|
10
|
+
// When both imports point at the same module, a bundler resolves the conflict
|
|
11
|
+
// the only way it can — by giving up on the split and putting the whole module
|
|
12
|
+
// in the main chunk. Vite says so out loud:
|
|
13
|
+
//
|
|
14
|
+
// (!) write/pdf.ts is dynamically imported but also statically imported,
|
|
15
|
+
// dynamic import will not move module into another chunk.
|
|
16
|
+
//
|
|
17
|
+
// Splitting the constants out is what makes the lazy import actually lazy.
|
|
18
|
+
// ---------------------------------------------------------------------------
|
|
19
|
+
export const DEFAULT_PDF_SETTINGS = {
|
|
20
|
+
paper: 'A4',
|
|
21
|
+
font: 'sans',
|
|
22
|
+
fontSize: 11,
|
|
23
|
+
margin: 'normal',
|
|
24
|
+
pageNumbers: true,
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=pdfSettings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pdfSettings.js","sourceRoot":"","sources":["../../src/write/pdfSettings.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,kEAAkE;AAClE,EAAE;AACF,gFAAgF;AAChF,mEAAmE;AACnE,EAAE;AACF,2EAA2E;AAC3E,6EAA6E;AAC7E,6EAA6E;AAC7E,8EAA8E;AAC9E,+EAA+E;AAC/E,4CAA4C;AAC5C,EAAE;AACF,2EAA2E;AAC3E,gEAAgE;AAChE,EAAE;AACF,2EAA2E;AAC3E,8EAA8E;AAe9E,MAAM,CAAC,MAAM,oBAAoB,GAAgB;IAC/C,KAAK,EAAE,IAAI;IACX,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,EAAE;IACZ,MAAM,EAAE,QAAQ;IAChB,WAAW,EAAE,IAAI;CAClB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/write/text.ts"],"names":[],"mappings":"AAaA,OAAO,EAAc,KAAK,OAAO,EAAY,MAAM,aAAa,CAAA;AAIhE,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAyD9C;AA+BD,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAqF9C;AAuDD,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAwElD"}
|
|
@@ -0,0 +1,341 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// RichDoc → plain text, HTML and Markdown.
|
|
3
|
+
//
|
|
4
|
+
// The three "keep the words, change the wrapper" targets, together because they
|
|
5
|
+
// are the same walk over the model with a different rendering of each block —
|
|
6
|
+
// and splitting them across three files would mean three copies of that walk.
|
|
7
|
+
//
|
|
8
|
+
// None of them can carry an image, so all three name it in the same way: the
|
|
9
|
+
// alt text where there is one, and a marker where there is not. A picture
|
|
10
|
+
// silently vanishing is the thing that makes somebody re-do the conversion by
|
|
11
|
+
// hand to find out what was there.
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
import { runsToText } from '../model.js';
|
|
14
|
+
// ── Plain text ───────────────────────────────────────────────────────────────
|
|
15
|
+
export function docToText(doc) {
|
|
16
|
+
const out = [];
|
|
17
|
+
for (const block of doc.blocks) {
|
|
18
|
+
switch (block.kind) {
|
|
19
|
+
case 'heading': {
|
|
20
|
+
const line = runsToText(block.runs);
|
|
21
|
+
out.push(line);
|
|
22
|
+
// A heading with nothing marking it as one is invisible in plain text,
|
|
23
|
+
// so it is underlined the way a README does it.
|
|
24
|
+
out.push((block.level === 1 ? '=' : '-').repeat(Math.min(line.length, 72)));
|
|
25
|
+
out.push('');
|
|
26
|
+
break;
|
|
27
|
+
}
|
|
28
|
+
case 'paragraph':
|
|
29
|
+
out.push(runsToText(block.runs), '');
|
|
30
|
+
break;
|
|
31
|
+
case 'quote':
|
|
32
|
+
for (const line of runsToText(block.runs).split('\n'))
|
|
33
|
+
out.push(`> ${line}`);
|
|
34
|
+
out.push('');
|
|
35
|
+
break;
|
|
36
|
+
case 'list': {
|
|
37
|
+
let counter = 0;
|
|
38
|
+
for (const item of block.items) {
|
|
39
|
+
counter += 1;
|
|
40
|
+
const indent = ' '.repeat(item.level);
|
|
41
|
+
const marker = block.ordered ? `${counter}.` : '-';
|
|
42
|
+
out.push(`${indent}${marker} ${runsToText(item.runs).replace(/\n/g, ' ')}`);
|
|
43
|
+
}
|
|
44
|
+
out.push('');
|
|
45
|
+
break;
|
|
46
|
+
}
|
|
47
|
+
case 'code':
|
|
48
|
+
out.push(block.text, '');
|
|
49
|
+
break;
|
|
50
|
+
case 'rule':
|
|
51
|
+
out.push('-'.repeat(72), '');
|
|
52
|
+
break;
|
|
53
|
+
case 'table':
|
|
54
|
+
out.push(...textTable(block.header, block.rows), '');
|
|
55
|
+
break;
|
|
56
|
+
case 'image':
|
|
57
|
+
out.push(`[image${block.alt ? `: ${block.alt}` : ''}]`, '');
|
|
58
|
+
break;
|
|
59
|
+
case 'pagebreak':
|
|
60
|
+
out.push('', '- - -', '');
|
|
61
|
+
break;
|
|
62
|
+
case 'pagesetup':
|
|
63
|
+
// Deliberately nothing. Plain text, HTML and Markdown have no paper, so
|
|
64
|
+
// an orientation change has nothing to say in them — but the case is
|
|
65
|
+
// named so a reader can see it was considered rather than missed, and
|
|
66
|
+
// so `noUnusedLocals`-style exhaustiveness never silently regrows a gap.
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return out.join('\n').replace(/\n{3,}/g, '\n\n').trim() + '\n';
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* A table as aligned columns.
|
|
74
|
+
*
|
|
75
|
+
* Padded to the widest cell per column rather than left as tab-separated: a tab
|
|
76
|
+
* lines up only if every cell is shorter than one tab stop, which is almost
|
|
77
|
+
* never, and a table that nearly lines up is harder to read than one that does
|
|
78
|
+
* not try.
|
|
79
|
+
*/
|
|
80
|
+
function textTable(header, rows) {
|
|
81
|
+
const all = header ? [header, ...rows] : [...rows];
|
|
82
|
+
if (!all.length)
|
|
83
|
+
return [];
|
|
84
|
+
const columns = Math.max(...all.map((r) => r.length));
|
|
85
|
+
const cells = all.map((row) => Array.from({ length: columns }, (_, c) => runsToText(row[c] ?? []).replace(/\n/g, ' ')));
|
|
86
|
+
const widths = Array.from({ length: columns }, (_, c) => Math.min(40, Math.max(...cells.map((row) => row[c].length))));
|
|
87
|
+
const line = (row) => row.map((cell, c) => cell.padEnd(widths[c]).slice(0, Math.max(widths[c], cell.length))).join(' ').trimEnd();
|
|
88
|
+
const out = cells.map(line);
|
|
89
|
+
if (header)
|
|
90
|
+
out.splice(1, 0, widths.map((w) => '-'.repeat(w)).join(' '));
|
|
91
|
+
return out;
|
|
92
|
+
}
|
|
93
|
+
// ── HTML ─────────────────────────────────────────────────────────────────────
|
|
94
|
+
export function docToHtml(doc) {
|
|
95
|
+
const body = [];
|
|
96
|
+
for (const block of doc.blocks) {
|
|
97
|
+
switch (block.kind) {
|
|
98
|
+
case 'heading':
|
|
99
|
+
body.push(`<h${block.level}>${inlineHtml(block.runs)}</h${block.level}>`);
|
|
100
|
+
break;
|
|
101
|
+
case 'paragraph':
|
|
102
|
+
body.push(`<p>${inlineHtml(block.runs)}</p>`);
|
|
103
|
+
break;
|
|
104
|
+
case 'quote':
|
|
105
|
+
body.push(`<blockquote><p>${inlineHtml(block.runs)}</p></blockquote>`);
|
|
106
|
+
break;
|
|
107
|
+
case 'list':
|
|
108
|
+
body.push(nestedListHtml(block.items, block.ordered));
|
|
109
|
+
break;
|
|
110
|
+
case 'code':
|
|
111
|
+
body.push(`<pre><code>${escapeHtml(block.text)}</code></pre>`);
|
|
112
|
+
break;
|
|
113
|
+
case 'rule':
|
|
114
|
+
body.push('<hr>');
|
|
115
|
+
break;
|
|
116
|
+
case 'table': {
|
|
117
|
+
const rows = [];
|
|
118
|
+
if (block.header) {
|
|
119
|
+
rows.push(`<thead><tr>${block.header.map((c) => `<th>${inlineHtml(c)}</th>`).join('')}</tr></thead>`);
|
|
120
|
+
}
|
|
121
|
+
rows.push(`<tbody>${block.rows
|
|
122
|
+
.map((row) => `<tr>${row.map((c) => `<td>${inlineHtml(c)}</td>`).join('')}</tr>`)
|
|
123
|
+
.join('')}</tbody>`);
|
|
124
|
+
body.push(`<table>${rows.join('')}</table>`);
|
|
125
|
+
break;
|
|
126
|
+
}
|
|
127
|
+
case 'image':
|
|
128
|
+
body.push(`<p><em>[image${block.alt ? `: ${escapeHtml(block.alt)}` : ''}]</em></p>`);
|
|
129
|
+
break;
|
|
130
|
+
case 'pagebreak':
|
|
131
|
+
// Meaningful when the page is printed and invisible when it is read,
|
|
132
|
+
// which is exactly right for a page break in a web page.
|
|
133
|
+
body.push('<hr style="page-break-after:always;border:0">');
|
|
134
|
+
case 'pagesetup':
|
|
135
|
+
// Nothing: a web page has no paper. Named so it reads as considered.
|
|
136
|
+
break;
|
|
137
|
+
break;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
const title = escapeHtml(doc.title ?? 'Document');
|
|
141
|
+
// A complete, standalone document — not a fragment. Somebody converting to
|
|
142
|
+
// HTML wants a file they can open, and a bare <p> soup opens as unstyled
|
|
143
|
+
// black Times on white in a browser that has guessed the encoding.
|
|
144
|
+
return `<!doctype html>
|
|
145
|
+
<html lang="en">
|
|
146
|
+
<head>
|
|
147
|
+
<meta charset="utf-8">
|
|
148
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
149
|
+
<title>${title}</title>
|
|
150
|
+
<style>
|
|
151
|
+
:root { color-scheme: light dark; }
|
|
152
|
+
body { max-width: 46rem; margin: 3rem auto; padding: 0 1.25rem;
|
|
153
|
+
font: 16px/1.65 system-ui, -apple-system, "Segoe UI", sans-serif;
|
|
154
|
+
color: #1f2937; background: #fff; }
|
|
155
|
+
@media (prefers-color-scheme: dark) { body { color: #e5e7eb; background: #111827; } }
|
|
156
|
+
h1, h2, h3, h4 { line-height: 1.25; margin: 2rem 0 .6rem; }
|
|
157
|
+
h1 { font-size: 2rem; } h2 { font-size: 1.5rem; } h3 { font-size: 1.2rem; }
|
|
158
|
+
p, ul, ol, blockquote, table, pre { margin: 0 0 1rem; }
|
|
159
|
+
blockquote { border-left: 3px solid #ea580c; margin-left: 0; padding-left: 1rem; color: #4b5563; }
|
|
160
|
+
code { background: rgba(127,127,127,.14); padding: .1em .35em; border-radius: .25rem; font-size: .9em; }
|
|
161
|
+
pre { background: rgba(127,127,127,.1); padding: 1rem; border-radius: .5rem; overflow-x: auto; }
|
|
162
|
+
pre code { background: none; padding: 0; }
|
|
163
|
+
table { border-collapse: collapse; width: 100%; display: block; overflow-x: auto; }
|
|
164
|
+
th, td { border: 1px solid rgba(127,127,127,.35); padding: .45rem .6rem; text-align: left; }
|
|
165
|
+
th { background: rgba(127,127,127,.1); }
|
|
166
|
+
a { color: #2563eb; }
|
|
167
|
+
hr { border: 0; border-top: 1px solid rgba(127,127,127,.35); margin: 2rem 0; }
|
|
168
|
+
</style>
|
|
169
|
+
</head>
|
|
170
|
+
<body>
|
|
171
|
+
${body.join('\n')}
|
|
172
|
+
</body>
|
|
173
|
+
</html>
|
|
174
|
+
`;
|
|
175
|
+
}
|
|
176
|
+
function nestedListHtml(items, ordered) {
|
|
177
|
+
const tag = ordered ? 'ol' : 'ul';
|
|
178
|
+
const out = [`<${tag}>`];
|
|
179
|
+
let depth = 0;
|
|
180
|
+
for (const item of items) {
|
|
181
|
+
const level = Math.max(0, item.level);
|
|
182
|
+
while (depth < level) {
|
|
183
|
+
out.push(`<${tag}>`);
|
|
184
|
+
depth += 1;
|
|
185
|
+
}
|
|
186
|
+
while (depth > level) {
|
|
187
|
+
out.push(`</${tag}>`);
|
|
188
|
+
depth -= 1;
|
|
189
|
+
}
|
|
190
|
+
out.push(`<li>${inlineHtml(item.runs)}</li>`);
|
|
191
|
+
}
|
|
192
|
+
while (depth > 0) {
|
|
193
|
+
out.push(`</${tag}>`);
|
|
194
|
+
depth -= 1;
|
|
195
|
+
}
|
|
196
|
+
out.push(`</${tag}>`);
|
|
197
|
+
return out.join('');
|
|
198
|
+
}
|
|
199
|
+
function inlineHtml(runs) {
|
|
200
|
+
return runs
|
|
201
|
+
.map((run) => {
|
|
202
|
+
let html = escapeHtml(run.text).replace(/\n/g, '<br>');
|
|
203
|
+
if (run.code)
|
|
204
|
+
html = `<code>${html}</code>`;
|
|
205
|
+
if (run.bold)
|
|
206
|
+
html = `<strong>${html}</strong>`;
|
|
207
|
+
if (run.italic)
|
|
208
|
+
html = `<em>${html}</em>`;
|
|
209
|
+
if (run.underline)
|
|
210
|
+
html = `<u>${html}</u>`;
|
|
211
|
+
if (run.strike)
|
|
212
|
+
html = `<s>${html}</s>`;
|
|
213
|
+
if (run.link)
|
|
214
|
+
html = `<a href="${escapeAttribute(run.link)}">${html}</a>`;
|
|
215
|
+
return html;
|
|
216
|
+
})
|
|
217
|
+
.join('');
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* ⚠️ Every string from a converted document goes through here.
|
|
221
|
+
*
|
|
222
|
+
* The input is somebody else's file, and a `.docx` containing the literal text
|
|
223
|
+
* `<script>…` must come out as text on the page rather than as a script tag in
|
|
224
|
+
* the file we hand back. `&` first, or the escapes escape each other.
|
|
225
|
+
*/
|
|
226
|
+
function escapeHtml(text) {
|
|
227
|
+
return text
|
|
228
|
+
.replace(/&/g, '&')
|
|
229
|
+
.replace(/</g, '<')
|
|
230
|
+
.replace(/>/g, '>');
|
|
231
|
+
}
|
|
232
|
+
/** As above, plus the quotes that would otherwise close the attribute. */
|
|
233
|
+
function escapeAttribute(value) {
|
|
234
|
+
return escapeHtml(value).replace(/"/g, '"').replace(/'/g, ''');
|
|
235
|
+
}
|
|
236
|
+
// ── Markdown ─────────────────────────────────────────────────────────────────
|
|
237
|
+
export function docToMarkdown(doc) {
|
|
238
|
+
const out = [];
|
|
239
|
+
for (const block of doc.blocks) {
|
|
240
|
+
switch (block.kind) {
|
|
241
|
+
case 'heading':
|
|
242
|
+
out.push(`${'#'.repeat(block.level)} ${inlineMarkdown(block.runs)}`, '');
|
|
243
|
+
break;
|
|
244
|
+
case 'paragraph':
|
|
245
|
+
// Two trailing spaces is markdown's own line break, so a `<w:br/>`
|
|
246
|
+
// inside a Word paragraph stays a break rather than becoming a space.
|
|
247
|
+
out.push(inlineMarkdown(block.runs).replace(/\n/g, ' \n'), '');
|
|
248
|
+
break;
|
|
249
|
+
case 'quote':
|
|
250
|
+
for (const line of inlineMarkdown(block.runs).split('\n'))
|
|
251
|
+
out.push(`> ${line}`);
|
|
252
|
+
out.push('');
|
|
253
|
+
break;
|
|
254
|
+
case 'list': {
|
|
255
|
+
let counter = 0;
|
|
256
|
+
for (const item of block.items) {
|
|
257
|
+
counter += 1;
|
|
258
|
+
out.push(`${' '.repeat(item.level)}${block.ordered ? `${counter}.` : '-'} ` +
|
|
259
|
+
inlineMarkdown(item.runs).replace(/\n/g, ' '));
|
|
260
|
+
}
|
|
261
|
+
out.push('');
|
|
262
|
+
break;
|
|
263
|
+
}
|
|
264
|
+
case 'code':
|
|
265
|
+
// A fence long enough to contain any backticks in the code itself —
|
|
266
|
+
// otherwise a snippet about markdown closes its own block.
|
|
267
|
+
out.push(fenceFor(block.text), block.text, fenceFor(block.text), '');
|
|
268
|
+
break;
|
|
269
|
+
case 'rule':
|
|
270
|
+
out.push('---', '');
|
|
271
|
+
break;
|
|
272
|
+
case 'table': {
|
|
273
|
+
const columns = Math.max(block.header?.length ?? 0, ...block.rows.map((r) => r.length), 1);
|
|
274
|
+
const row = (cells) => `| ${Array.from({ length: columns }, (_, c) => inlineMarkdown(cells[c] ?? []).replace(/\n/g, ' ').replace(/\|/g, '\\|')).join(' | ')} |`;
|
|
275
|
+
// Markdown tables REQUIRE a header row — a table with none renders as
|
|
276
|
+
// literal pipes — so an empty one is written when the source had none.
|
|
277
|
+
out.push(row(block.header ?? Array.from({ length: columns }, () => [])));
|
|
278
|
+
out.push(`|${' --- |'.repeat(columns)}`);
|
|
279
|
+
for (const r of block.rows)
|
|
280
|
+
out.push(row(r));
|
|
281
|
+
out.push('');
|
|
282
|
+
break;
|
|
283
|
+
}
|
|
284
|
+
case 'image':
|
|
285
|
+
out.push(`![${block.alt}]()`, '');
|
|
286
|
+
break;
|
|
287
|
+
case 'pagebreak':
|
|
288
|
+
out.push('', '---', '');
|
|
289
|
+
break;
|
|
290
|
+
case 'pagesetup':
|
|
291
|
+
// Deliberately nothing. Plain text, HTML and Markdown have no paper, so
|
|
292
|
+
// an orientation change has nothing to say in them — but the case is
|
|
293
|
+
// named so a reader can see it was considered rather than missed, and
|
|
294
|
+
// so `noUnusedLocals`-style exhaustiveness never silently regrows a gap.
|
|
295
|
+
break;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
const front = doc.title ? '' : '';
|
|
299
|
+
return front + out.join('\n').replace(/\n{3,}/g, '\n\n').trim() + '\n';
|
|
300
|
+
}
|
|
301
|
+
function fenceFor(code) {
|
|
302
|
+
const longest = Math.max(0, ...[...code.matchAll(/`+/g)].map((m) => m[0].length));
|
|
303
|
+
return '`'.repeat(Math.max(3, longest + 1));
|
|
304
|
+
}
|
|
305
|
+
function inlineMarkdown(runs) {
|
|
306
|
+
return runs
|
|
307
|
+
.map((run) => {
|
|
308
|
+
// Code first and alone: markdown does not apply emphasis inside a code
|
|
309
|
+
// span, so wrapping one in asterisks writes the asterisks out literally.
|
|
310
|
+
if (run.code)
|
|
311
|
+
return `\`${run.text}\``;
|
|
312
|
+
let text = escapeMarkdown(run.text);
|
|
313
|
+
if (run.bold && run.italic)
|
|
314
|
+
text = `***${text}***`;
|
|
315
|
+
else if (run.bold)
|
|
316
|
+
text = `**${text}**`;
|
|
317
|
+
else if (run.italic)
|
|
318
|
+
text = `*${text}*`;
|
|
319
|
+
if (run.strike)
|
|
320
|
+
text = `~~${text}~~`;
|
|
321
|
+
if (run.link)
|
|
322
|
+
text = `[${text}](${run.link})`;
|
|
323
|
+
return text;
|
|
324
|
+
})
|
|
325
|
+
.join('');
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* Escape the characters that would otherwise become markup.
|
|
329
|
+
*
|
|
330
|
+
* Only where they could actually be read as markup: escaping every `*` and `_`
|
|
331
|
+
* everywhere produces backslashes all through ordinary prose, and a converted
|
|
332
|
+
* document full of `\_` is worse than one where a stray underscore italicises
|
|
333
|
+
* two words.
|
|
334
|
+
*/
|
|
335
|
+
function escapeMarkdown(text) {
|
|
336
|
+
return text
|
|
337
|
+
.replace(/([\\`])/g, '\\$1')
|
|
338
|
+
.replace(/^(\s*)([-*+>#])/gm, '$1\\$2')
|
|
339
|
+
.replace(/^(\s*\d+)\./gm, '$1\\.');
|
|
340
|
+
}
|
|
341
|
+
//# sourceMappingURL=text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text.js","sourceRoot":"","sources":["../../src/write/text.ts"],"names":[],"mappings":"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"}
|
package/dist/xml.d.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export declare function parseXml(source: string, what: string): Document;
|
|
2
|
+
/** Direct children in a namespace, by local name. */
|
|
3
|
+
export declare function children(parent: Element | Document, ns: string, local: string): Element[];
|
|
4
|
+
/** The first direct child in a namespace, by local name. */
|
|
5
|
+
export declare function child(parent: Element | Document, ns: string, local: string): Element | null;
|
|
6
|
+
/** Every descendant in a namespace, by local name, in document order. */
|
|
7
|
+
export declare function descendants(root: Element | Document, ns: string, local: string): Element[];
|
|
8
|
+
/** The first descendant in a namespace, by local name. */
|
|
9
|
+
export declare function descendant(root: Element | Document, ns: string, local: string): Element | null;
|
|
10
|
+
export declare function attr(el: Element | null, ns: string, name: string): string | null;
|
|
11
|
+
/**
|
|
12
|
+
* Whether an on/off element means on.
|
|
13
|
+
*
|
|
14
|
+
* OOXML's booleans are three-valued and the trap is that ABSENT ATTRIBUTE MEANS
|
|
15
|
+
* TRUE: `<w:b/>` is bold, and `<w:b w:val="0"/>` is not. Reading the attribute
|
|
16
|
+
* and testing it for truthiness — the obvious thing — makes every bold run in
|
|
17
|
+
* every Word document come out plain.
|
|
18
|
+
*/
|
|
19
|
+
export declare function onOff(el: Element | null, ns: string): boolean;
|
|
20
|
+
/** All text under a node, with no formatting — used for cells and headings. */
|
|
21
|
+
export declare function textContentOf(el: Element | null): string;
|
|
22
|
+
//# sourceMappingURL=xml.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xml.d.ts","sourceRoot":"","sources":["../src/xml.ts"],"names":[],"mappings":"AAcA,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,CAQ/D;AAED,qDAAqD;AACrD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,OAAO,GAAG,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,CAQzF;AAED,4DAA4D;AAC5D,wBAAgB,KAAK,CAAC,MAAM,EAAE,OAAO,GAAG,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAE3F;AAED,yEAAyE;AACzE,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,CAE1F;AAED,0DAA0D;AAC1D,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAE9F;AAED,wBAAgB,IAAI,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWhF;AAED;;;;;;;GAOG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAK7D;AAED,+EAA+E;AAC/E,wBAAgB,aAAa,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,GAAG,MAAM,CAExD"}
|
package/dist/xml.js
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// The XML helpers the DOCX and ODT readers share.
|
|
3
|
+
//
|
|
4
|
+
// Both formats are namespaced XML with a prefix on every single tag — `w:p`,
|
|
5
|
+
// `text:h` — and both are read with the browser's own `DOMParser`, which is
|
|
6
|
+
// namespace-aware and already in the page.
|
|
7
|
+
//
|
|
8
|
+
// ⚠️ MATCH ON localName, NEVER ON THE PREFIX. `getElementsByTagName('w:p')`
|
|
9
|
+
// works on every file Word itself writes and then fails on one from Pages,
|
|
10
|
+
// Google Docs or a server-side generator that bound the same namespace to a
|
|
11
|
+
// different prefix. The prefix is a local nickname; the namespace URI is the
|
|
12
|
+
// name. These helpers take the URI, so the readers cannot make that mistake.
|
|
13
|
+
// ---------------------------------------------------------------------------
|
|
14
|
+
export function parseXml(source, what) {
|
|
15
|
+
const doc = new DOMParser().parseFromString(source, 'application/xml');
|
|
16
|
+
// DOMParser does not throw. It returns a document whose root is
|
|
17
|
+
// <parsererror>, which every caller would otherwise treat as an empty file
|
|
18
|
+
// and hand back a blank page for.
|
|
19
|
+
const failed = doc.getElementsByTagName('parsererror')[0];
|
|
20
|
+
if (failed)
|
|
21
|
+
throw new Error(`The ${what} inside this file is damaged and can’t be read.`);
|
|
22
|
+
return doc;
|
|
23
|
+
}
|
|
24
|
+
/** Direct children in a namespace, by local name. */
|
|
25
|
+
export function children(parent, ns, local) {
|
|
26
|
+
const out = [];
|
|
27
|
+
for (const node of Array.from(parent.childNodes)) {
|
|
28
|
+
if (node.nodeType !== 1)
|
|
29
|
+
continue;
|
|
30
|
+
const el = node;
|
|
31
|
+
if (el.localName === local && el.namespaceURI === ns)
|
|
32
|
+
out.push(el);
|
|
33
|
+
}
|
|
34
|
+
return out;
|
|
35
|
+
}
|
|
36
|
+
/** The first direct child in a namespace, by local name. */
|
|
37
|
+
export function child(parent, ns, local) {
|
|
38
|
+
return children(parent, ns, local)[0] ?? null;
|
|
39
|
+
}
|
|
40
|
+
/** Every descendant in a namespace, by local name, in document order. */
|
|
41
|
+
export function descendants(root, ns, local) {
|
|
42
|
+
return Array.from(root.getElementsByTagNameNS(ns, local));
|
|
43
|
+
}
|
|
44
|
+
/** The first descendant in a namespace, by local name. */
|
|
45
|
+
export function descendant(root, ns, local) {
|
|
46
|
+
return root.getElementsByTagNameNS(ns, local)[0] ?? null;
|
|
47
|
+
}
|
|
48
|
+
export function attr(el, ns, name) {
|
|
49
|
+
if (!el)
|
|
50
|
+
return null;
|
|
51
|
+
const value = el.getAttributeNS(ns, name);
|
|
52
|
+
if (value !== null)
|
|
53
|
+
return value;
|
|
54
|
+
// Some producers write namespaced attributes without declaring the prefix
|
|
55
|
+
// properly, which leaves them un-namespaced in the parsed tree. Falling back
|
|
56
|
+
// to a local-name scan costs nothing and rescues those files.
|
|
57
|
+
for (const candidate of Array.from(el.attributes)) {
|
|
58
|
+
if (candidate.localName === name)
|
|
59
|
+
return candidate.value;
|
|
60
|
+
}
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Whether an on/off element means on.
|
|
65
|
+
*
|
|
66
|
+
* OOXML's booleans are three-valued and the trap is that ABSENT ATTRIBUTE MEANS
|
|
67
|
+
* TRUE: `<w:b/>` is bold, and `<w:b w:val="0"/>` is not. Reading the attribute
|
|
68
|
+
* and testing it for truthiness — the obvious thing — makes every bold run in
|
|
69
|
+
* every Word document come out plain.
|
|
70
|
+
*/
|
|
71
|
+
export function onOff(el, ns) {
|
|
72
|
+
if (!el)
|
|
73
|
+
return false;
|
|
74
|
+
const value = attr(el, ns, 'val');
|
|
75
|
+
if (value === null)
|
|
76
|
+
return true;
|
|
77
|
+
return value !== '0' && value !== 'false' && value !== 'off';
|
|
78
|
+
}
|
|
79
|
+
/** All text under a node, with no formatting — used for cells and headings. */
|
|
80
|
+
export function textContentOf(el) {
|
|
81
|
+
return el?.textContent ?? '';
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=xml.js.map
|
package/dist/xml.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xml.js","sourceRoot":"","sources":["../src/xml.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@unisim/doc",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "The suite's document stack: read Word, OpenDocument, RTF, HTML, Markdown, CSV, JSON and text into one model, and write it back out as PDF, text, HTML, Markdown, CSV or JSON. No runtime dependencies.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"module": "./dist/index.js",
|
|
8
|
+
"types": "./dist/index.d.ts",
|
|
9
|
+
"sideEffects": false,
|
|
10
|
+
"exports": {
|
|
11
|
+
".": {
|
|
12
|
+
"types": "./dist/index.d.ts",
|
|
13
|
+
"import": "./dist/index.js"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"files": [
|
|
17
|
+
"dist",
|
|
18
|
+
"README.md"
|
|
19
|
+
],
|
|
20
|
+
"scripts": {
|
|
21
|
+
"build": "tsc -p tsconfig.build.json",
|
|
22
|
+
"dev": "tsc -p tsconfig.build.json --watch",
|
|
23
|
+
"typecheck": "tsc --noEmit",
|
|
24
|
+
"test": "npm run build && node scripts/selftest.mjs",
|
|
25
|
+
"prepublishOnly": "npm run typecheck && npm run build"
|
|
26
|
+
},
|
|
27
|
+
"license": "MIT",
|
|
28
|
+
"publishConfig": {
|
|
29
|
+
"access": "public"
|
|
30
|
+
}
|
|
31
|
+
}
|