postext 1.22.0 → 1.22.2

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 (65) hide show
  1. package/dist/__tests__/exports.test.js +4 -0
  2. package/dist/__tests__/exports.test.js.map +1 -1
  3. package/dist/comics/lettering/__tests__/panelCache.test.d.ts +2 -0
  4. package/dist/comics/lettering/__tests__/panelCache.test.d.ts.map +1 -0
  5. package/dist/comics/lettering/__tests__/panelCache.test.js +43 -0
  6. package/dist/comics/lettering/__tests__/panelCache.test.js.map +1 -0
  7. package/dist/comics/lettering/letter.d.ts.map +1 -1
  8. package/dist/comics/lettering/letter.js +73 -0
  9. package/dist/comics/lettering/letter.js.map +1 -1
  10. package/dist/comics/lettering/shape-text.d.ts.map +1 -1
  11. package/dist/comics/lettering/shape-text.js +64 -16
  12. package/dist/comics/lettering/shape-text.js.map +1 -1
  13. package/dist/fonts/usage.d.ts +46 -0
  14. package/dist/fonts/usage.d.ts.map +1 -0
  15. package/dist/fonts/usage.js +205 -0
  16. package/dist/fonts/usage.js.map +1 -0
  17. package/dist/index.d.ts +2 -0
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +1 -0
  20. package/dist/index.js.map +1 -1
  21. package/dist/word/analyze.d.ts +33 -0
  22. package/dist/word/analyze.d.ts.map +1 -0
  23. package/dist/word/analyze.js +167 -0
  24. package/dist/word/analyze.js.map +1 -0
  25. package/dist/word/docxRead.d.ts +10 -0
  26. package/dist/word/docxRead.d.ts.map +1 -0
  27. package/dist/word/docxRead.js +584 -0
  28. package/dist/word/docxRead.js.map +1 -0
  29. package/dist/word/index.d.ts +14 -0
  30. package/dist/word/index.d.ts.map +1 -0
  31. package/dist/word/index.js +12 -0
  32. package/dist/word/index.js.map +1 -0
  33. package/dist/word/inline.d.ts +48 -0
  34. package/dist/word/inline.d.ts.map +1 -0
  35. package/dist/word/inline.js +606 -0
  36. package/dist/word/inline.js.map +1 -0
  37. package/dist/word/model.d.ts +141 -0
  38. package/dist/word/model.d.ts.map +1 -0
  39. package/dist/word/model.js +23 -0
  40. package/dist/word/model.js.map +1 -0
  41. package/dist/word/omml.d.ts +4 -0
  42. package/dist/word/omml.d.ts.map +1 -0
  43. package/dist/word/omml.js +139 -0
  44. package/dist/word/omml.js.map +1 -0
  45. package/dist/word/template.d.ts +111 -0
  46. package/dist/word/template.d.ts.map +1 -0
  47. package/dist/word/template.js +255 -0
  48. package/dist/word/template.js.map +1 -0
  49. package/dist/word/toDocx.d.ts +28 -0
  50. package/dist/word/toDocx.d.ts.map +1 -0
  51. package/dist/word/toDocx.js +684 -0
  52. package/dist/word/toDocx.js.map +1 -0
  53. package/dist/word/toMarkdown.d.ts +53 -0
  54. package/dist/word/toMarkdown.d.ts.map +1 -0
  55. package/dist/word/toMarkdown.js +632 -0
  56. package/dist/word/toMarkdown.js.map +1 -0
  57. package/dist/word/word.test.d.ts +2 -0
  58. package/dist/word/word.test.d.ts.map +1 -0
  59. package/dist/word/word.test.js +302 -0
  60. package/dist/word/word.test.js.map +1 -0
  61. package/dist/word/xml.d.ts +30 -0
  62. package/dist/word/xml.d.ts.map +1 -0
  63. package/dist/word/xml.js +127 -0
  64. package/dist/word/xml.js.map +1 -0
  65. package/package.json +5 -1
@@ -0,0 +1,167 @@
1
+ // What a Word document brings: the styles in use (with counts and a sample
2
+ // of each) and a quality report of the original. A well-styled manuscript
3
+ // converts cleanly; one set entirely in Normal with formatting by hand comes
4
+ // in as plain paragraphs, and the report says so before the import.
5
+ import { paragraphStyleName, paragraphText } from './model';
6
+ import { paragraphTargetOf } from './toMarkdown';
7
+ const SAMPLE_LENGTH = 72;
8
+ const sample = (t) => {
9
+ const s = t.replace(/\s+/g, ' ').trim();
10
+ return s.length > SAMPLE_LENGTH ? `${s.slice(0, SAMPLE_LENGTH - 1).trimEnd()}…` : s;
11
+ };
12
+ /** Style names Word gives ordinary body text. */
13
+ const BODY_STYLE_RE = /^(?:normal|default|standard|body text(?: \d)?|text body|list paragraph|no spacing|normal \(web\)|plain text|default paragraph font)$/i;
14
+ const TYPED_NUMBERING_RE = /^\s*(?:\(?\d{1,3}[.)]|\(?[a-zA-Z][.)]|[•·▪◦‣●○■□–—-])\s+/;
15
+ /** Body-level paragraphs (text boxes included, table cells and notes not). */
16
+ function* bodyParagraphs(blocks) {
17
+ for (const b of blocks) {
18
+ if (b.type !== 'paragraph')
19
+ continue;
20
+ yield b;
21
+ if (b.textBoxes)
22
+ yield* bodyParagraphs(b.textBoxes);
23
+ }
24
+ }
25
+ /** Every paragraph, cells and text boxes included. */
26
+ function* allParagraphs(blocks) {
27
+ for (const b of blocks) {
28
+ if (b.type === 'paragraph') {
29
+ yield b;
30
+ if (b.textBoxes)
31
+ yield* allParagraphs(b.textBoxes);
32
+ }
33
+ else {
34
+ for (const row of b.rows)
35
+ for (const cell of row)
36
+ yield* allParagraphs(cell.blocks);
37
+ }
38
+ }
39
+ }
40
+ function countTables(blocks) {
41
+ let n = 0;
42
+ for (const b of blocks) {
43
+ if (b.type === 'table')
44
+ n++;
45
+ else if (b.textBoxes)
46
+ n += countTables(b.textBoxes);
47
+ }
48
+ return n;
49
+ }
50
+ export function analyzeDocx(doc, template, config) {
51
+ const paraStyles = new Map();
52
+ const charStyles = new Map();
53
+ const found = new Map();
54
+ const note = (id, severity, example, n = 1) => {
55
+ const f = found.get(id) ?? { id, count: 0, examples: [], severity };
56
+ f.count += n;
57
+ if (example && f.examples.length < 3 && !f.examples.includes(example))
58
+ f.examples.push(example);
59
+ found.set(id, f);
60
+ };
61
+ let paragraphs = 0;
62
+ let styled = 0;
63
+ let pictures = 0;
64
+ let footnotes = 0;
65
+ const unsupported = new Set();
66
+ for (const p of bodyParagraphs(doc.blocks)) {
67
+ const text = paragraphText(p);
68
+ const name = paragraphStyleName(doc, p);
69
+ const ex = sample(text);
70
+ const hasContent = text.trim() !== '' || p.runs.some((r) => r.type === 'image' || r.type === 'math');
71
+ if (!hasContent) {
72
+ if (!p.pageBreakBefore && !p.runs.some((r) => r.type === 'break' && r.kind === 'page'))
73
+ note('emptyParagraphs', 'warn');
74
+ continue;
75
+ }
76
+ const use = paraStyles.get(name) ?? { name, count: 0, sample: '' };
77
+ use.count++;
78
+ if (!use.sample && ex)
79
+ use.sample = ex;
80
+ paraStyles.set(name, use);
81
+ if (!text.trim())
82
+ continue;
83
+ paragraphs++;
84
+ const target = paragraphTargetOf(doc, p.styleId, template, config);
85
+ const bodyStyle = BODY_STYLE_RE.test(name) || (p.styleId === '' || p.styleId === doc.defaultParagraphStyle);
86
+ if (!bodyStyle)
87
+ styled++;
88
+ const textRuns = p.runs.filter((r) => r.type === 'text');
89
+ if (p.manualLayout || textRuns.some((r) => r.manual))
90
+ note('directFormatting', 'warn', ex);
91
+ const t = text.trim();
92
+ if (target.kind === 'body' && !p.list && t.length <= 120 && !/[.:;,]$/.test(t)
93
+ && textRuns.some((r) => r.text.trim())
94
+ && textRuns.filter((r) => r.text.trim()).every((r) => r.bold === true)) {
95
+ note('manualHeadings', 'warn', ex);
96
+ }
97
+ const lineBreaks = p.runs.filter((r) => r.type === 'break' && r.kind === 'line').length;
98
+ if (lineBreaks)
99
+ note('lineBreaks', 'info', ex, lineBreaks);
100
+ const pageBreaks = p.runs.filter((r) => r.type === 'break' && r.kind === 'page').length + (p.pageBreakBefore ? 1 : 0);
101
+ if (pageBreaks)
102
+ note('pageBreaks', 'info', ex, pageBreaks);
103
+ if (!p.list && TYPED_NUMBERING_RE.test(text))
104
+ note('typedNumbering', 'warn', ex);
105
+ if (p.runs.some((r) => r.type === 'tab') || / {2,}/.test(text) || /^\s+\S/.test(text))
106
+ note('spacing', 'info', ex);
107
+ if (textRuns.some((r) => r.hidden))
108
+ note('hiddenText', 'info', ex);
109
+ if (p.textBoxes?.length)
110
+ note('textBoxes', 'info', ex);
111
+ }
112
+ for (const p of allParagraphs(doc.blocks)) {
113
+ for (const r of p.runs) {
114
+ if (r.type === 'text' && r.charStyle && r.text.trim()) {
115
+ const use = charStyles.get(r.charStyle) ?? { name: r.charStyle, count: 0, sample: '' };
116
+ use.count++;
117
+ if (!use.sample)
118
+ use.sample = sample(r.text);
119
+ charStyles.set(r.charStyle, use);
120
+ }
121
+ else if (r.type === 'image') {
122
+ pictures++;
123
+ const media = doc.media.get(r.rId);
124
+ if (media && !/^image\/(png|jpeg|gif|webp|svg\+xml)$/.test(media.contentType))
125
+ unsupported.add(media.path.split('/').pop() ?? media.path);
126
+ }
127
+ else if (r.type === 'math')
128
+ note('equations', 'info', sample(r.tex));
129
+ else if (r.type === 'note')
130
+ footnotes++;
131
+ }
132
+ }
133
+ if (unsupported.size) {
134
+ const f = { id: 'unsupportedPictures', count: unsupported.size, examples: [...unsupported].slice(0, 3), severity: 'warn' };
135
+ found.set(f.id, f);
136
+ }
137
+ const revisions = doc.revisions.insertions + doc.revisions.deletions;
138
+ if (revisions)
139
+ found.set('trackedChanges', { id: 'trackedChanges', count: revisions, examples: [], severity: 'warn' });
140
+ if (doc.revisions.comments)
141
+ found.set('comments', { id: 'comments', count: doc.revisions.comments, examples: [], severity: 'info' });
142
+ const direct = found.get('directFormatting')?.count ?? 0;
143
+ const manualHeadings = found.get('manualHeadings')?.count ?? 0;
144
+ let verdict;
145
+ if (paragraphs > 0 && styled === 0) {
146
+ verdict = 'plain';
147
+ found.set('allNormal', { id: 'allNormal', count: paragraphs, examples: [], severity: 'warn' });
148
+ }
149
+ else if (manualHeadings === 0 && direct <= Math.max(1, paragraphs * 0.1) && !found.has('typedNumbering'))
150
+ verdict = 'clean';
151
+ else
152
+ verdict = 'mixed';
153
+ const order = ['allNormal', 'manualHeadings', 'directFormatting', 'typedNumbering', 'trackedChanges', 'unsupportedPictures', 'emptyParagraphs', 'lineBreaks', 'pageBreaks', 'spacing', 'textBoxes', 'equations', 'hiddenText', 'comments'];
154
+ const byCount = (a, b) => b.count - a.count || a.name.localeCompare(b.name);
155
+ return {
156
+ verdict,
157
+ paragraphs,
158
+ styled,
159
+ paragraphStyles: [...paraStyles.values()].sort(byCount),
160
+ characterStyles: [...charStyles.values()].sort(byCount),
161
+ pictures,
162
+ tables: countTables(doc.blocks),
163
+ footnotes,
164
+ findings: order.map((id) => found.get(id)).filter((f) => !!f),
165
+ };
166
+ }
167
+ //# sourceMappingURL=analyze.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../src/word/analyze.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { WordDocument } from './model';
2
+ /** customXml item holding the template of a Postext export. */
3
+ export declare const TEMPLATE_XML_ROOT = "postextWordTemplate";
4
+ export declare const TEMPLATE_XML_NS = "https://postext.dev/word-template";
5
+ export declare class DocxReadError extends Error {
6
+ }
7
+ /** Read a `.docx` file's bytes. Throws {@link DocxReadError} when it is not a
8
+ * Word document (an old binary `.doc`, a renamed file, a broken zip). */
9
+ export declare function readDocx(data: ArrayBuffer | Uint8Array): WordDocument;
10
+ //# sourceMappingURL=docxRead.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docxRead.d.ts","sourceRoot":"","sources":["../../src/word/docxRead.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAGV,YAAY,EAQb,MAAM,SAAS,CAAC;AAIjB,+DAA+D;AAC/D,eAAO,MAAM,iBAAiB,wBAAwB,CAAC;AACvD,eAAO,MAAM,eAAe,sCAAsC,CAAC;AAEnE,qBAAa,aAAc,SAAQ,KAAK;CAAG;AAuf3C;0EAC0E;AAC1E,wBAAgB,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG,UAAU,GAAG,YAAY,CAgDrE"}