ai-document-parser 0.1.101
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/LICENSE +21 -0
- package/LICENSES.md +26 -0
- package/README.md +106 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +124 -0
- package/dist/cli.js.map +1 -0
- package/dist/convert/converter.d.ts +7 -0
- package/dist/convert/converter.d.ts.map +1 -0
- package/dist/convert/converter.js +201 -0
- package/dist/convert/converter.js.map +1 -0
- package/dist/convert/emit.d.ts +15 -0
- package/dist/convert/emit.d.ts.map +1 -0
- package/dist/convert/emit.js +95 -0
- package/dist/convert/emit.js.map +1 -0
- package/dist/convert/index.d.ts +2 -0
- package/dist/convert/index.d.ts.map +1 -0
- package/dist/convert/index.js +2 -0
- package/dist/convert/index.js.map +1 -0
- package/dist/edit/docx-ooxml.d.ts +13 -0
- package/dist/edit/docx-ooxml.d.ts.map +1 -0
- package/dist/edit/docx-ooxml.js +182 -0
- package/dist/edit/docx-ooxml.js.map +1 -0
- package/dist/edit/index.d.ts +8 -0
- package/dist/edit/index.d.ts.map +1 -0
- package/dist/edit/index.js +26 -0
- package/dist/edit/index.js.map +1 -0
- package/dist/edit/spreadsheet.d.ts +19 -0
- package/dist/edit/spreadsheet.d.ts.map +1 -0
- package/dist/edit/spreadsheet.js +123 -0
- package/dist/edit/spreadsheet.js.map +1 -0
- package/dist/fonts/DejaVuSans.ttf +0 -0
- package/dist/fonts/LICENSE-DejaVu.txt +2 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/parse/detect.d.ts +19 -0
- package/dist/parse/detect.d.ts.map +1 -0
- package/dist/parse/detect.js +109 -0
- package/dist/parse/detect.js.map +1 -0
- package/dist/parse/formats.d.ts +14 -0
- package/dist/parse/formats.d.ts.map +1 -0
- package/dist/parse/formats.js +23 -0
- package/dist/parse/formats.js.map +1 -0
- package/dist/parse/index.d.ts +4 -0
- package/dist/parse/index.d.ts.map +1 -0
- package/dist/parse/index.js +4 -0
- package/dist/parse/index.js.map +1 -0
- package/dist/parse/legacy-doc.d.ts +15 -0
- package/dist/parse/legacy-doc.d.ts.map +1 -0
- package/dist/parse/legacy-doc.js +100 -0
- package/dist/parse/legacy-doc.js.map +1 -0
- package/dist/parse/pdf.d.ts +8 -0
- package/dist/parse/pdf.d.ts.map +1 -0
- package/dist/parse/pdf.js +34 -0
- package/dist/parse/pdf.js.map +1 -0
- package/dist/parse/pptx.d.ts +7 -0
- package/dist/parse/pptx.d.ts.map +1 -0
- package/dist/parse/pptx.js +107 -0
- package/dist/parse/pptx.js.map +1 -0
- package/dist/parse/router.d.ts +7 -0
- package/dist/parse/router.d.ts.map +1 -0
- package/dist/parse/router.js +286 -0
- package/dist/parse/router.js.map +1 -0
- package/dist/parse/text-formats.d.ts +19 -0
- package/dist/parse/text-formats.d.ts.map +1 -0
- package/dist/parse/text-formats.js +82 -0
- package/dist/parse/text-formats.js.map +1 -0
- package/dist/types.d.ts +105 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/errors.d.ts +8 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +17 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/paths.d.ts +4 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +20 -0
- package/dist/utils/paths.js.map +1 -0
- package/dist/utils/text.d.ts +5 -0
- package/dist/utils/text.d.ts.map +1 -0
- package/dist/utils/text.js +16 -0
- package/dist/utils/text.js.map +1 -0
- package/dist/write/docx.d.ts +4 -0
- package/dist/write/docx.d.ts.map +1 -0
- package/dist/write/docx.js +31 -0
- package/dist/write/docx.js.map +1 -0
- package/dist/write/index.d.ts +9 -0
- package/dist/write/index.d.ts.map +1 -0
- package/dist/write/index.js +38 -0
- package/dist/write/index.js.map +1 -0
- package/dist/write/pdf.d.ts +4 -0
- package/dist/write/pdf.d.ts.map +1 -0
- package/dist/write/pdf.js +70 -0
- package/dist/write/pdf.js.map +1 -0
- package/dist/write/spreadsheet.d.ts +2 -0
- package/dist/write/spreadsheet.d.ts.map +1 -0
- package/dist/write/spreadsheet.js +2 -0
- package/dist/write/spreadsheet.js.map +1 -0
- package/fonts/DejaVuSans.ttf +0 -0
- package/fonts/LICENSE-DejaVu.txt +2 -0
- package/package.json +88 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Alexander Novitsky
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/LICENSES.md
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Third-party licenses
|
|
2
|
+
|
|
3
|
+
This package is licensed under the **MIT License** (see [LICENSE](LICENSE)).
|
|
4
|
+
|
|
5
|
+
## Bundled assets
|
|
6
|
+
|
|
7
|
+
| Component | Upstream | License | Notes |
|
|
8
|
+
|-----------|----------|---------|-------|
|
|
9
|
+
| DejaVu Sans | DejaVu Fonts | SIL Open Font License | Bundled in `fonts/` for Cyrillic PDF output |
|
|
10
|
+
|
|
11
|
+
## Direct dependencies (runtime)
|
|
12
|
+
|
|
13
|
+
| Package | License | Role |
|
|
14
|
+
|---------|---------|------|
|
|
15
|
+
| `pdfjs-dist` | Apache-2.0 | PDF text extraction |
|
|
16
|
+
| `jszip` | MIT OR GPL-3.0-or-later (used as MIT) | OOXML ZIP: DOCX surgical edit, PPTX parse, ZIP format refine |
|
|
17
|
+
| `docx` | MIT | Create DOCX from scratch |
|
|
18
|
+
| `jspdf` | MIT | Plain-text PDF write |
|
|
19
|
+
| `cfb` | Apache-2.0 | Legacy `.doc` OLE |
|
|
20
|
+
| `@e965/xlsx` | Apache-2.0 | XLSX / XLS read, write, cell patch |
|
|
21
|
+
|
|
22
|
+
## Policy
|
|
23
|
+
|
|
24
|
+
- Direct dependencies must be permissive (MIT / Apache-2.0 / BSD / ISC / dual including MIT).
|
|
25
|
+
- CI runs `npm run check-licenses` (allowlist + deny-list: abandoned `xlsx`, `docxtemplater`).
|
|
26
|
+
- Install scripts: `esbuild` allowed (tsx); `core-js` denied (optional jspdf polyfill noise).
|
package/README.md
ADDED
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# ai-document-parser
|
|
2
|
+
|
|
3
|
+
TypeScript library for **parse / convert / edit / write** of office documents — built for AI agents and Node apps.
|
|
4
|
+
|
|
5
|
+
- **MIT** license
|
|
6
|
+
- Surgical **DOCX** / spreadsheet edit without full regeneration
|
|
7
|
+
- Permissive dependencies only (see [LICENSES.md](LICENSES.md))
|
|
8
|
+
|
|
9
|
+
## Install
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npm install ai-document-parser
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Quick start
|
|
16
|
+
|
|
17
|
+
```ts
|
|
18
|
+
import { parseDocument, convertDocument, editDocument, writeDocument } from 'ai-document-parser';
|
|
19
|
+
|
|
20
|
+
// Parse
|
|
21
|
+
const result = await parseDocument('report.docx', { output: 'text' });
|
|
22
|
+
// output: 'text' | 'structured' | 'ast' | 'chunks'
|
|
23
|
+
|
|
24
|
+
// Convert (parse + emit in one step)
|
|
25
|
+
const { value } = await convertDocument('data.xlsx', 'md');
|
|
26
|
+
const slides = await convertDocument('deck.pptx', 'md'); // ## Slide N …
|
|
27
|
+
|
|
28
|
+
// Surgical edit
|
|
29
|
+
await editDocument('contract.docx', {
|
|
30
|
+
type: 'docx',
|
|
31
|
+
op: 'replace',
|
|
32
|
+
oldString: 'Acme Corp',
|
|
33
|
+
newString: 'Beta LLC',
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
await editDocument('budget.xlsx', {
|
|
37
|
+
type: 'spreadsheet',
|
|
38
|
+
op: 'patchCells',
|
|
39
|
+
updates: [{ sheet: 'Q1', cell: 'B2', value: 1500 }],
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
// Create
|
|
43
|
+
await writeDocument('memo.docx', {
|
|
44
|
+
type: 'docx',
|
|
45
|
+
content: 'Paragraph one\nParagraph two',
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
await writeDocument('out.pdf', {
|
|
49
|
+
type: 'pdf',
|
|
50
|
+
content: 'Текст с кириллицей',
|
|
51
|
+
title: 'Отчёт',
|
|
52
|
+
});
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Agent workflow
|
|
56
|
+
|
|
57
|
+
1. `parseDocument(path, { output: 'structured' })` — paragraphs / sheet grids / pptx slides
|
|
58
|
+
2. `editDocument(...)` — targeted changes (**docx** / **xlsx** only)
|
|
59
|
+
3. Re-read structured output to verify
|
|
60
|
+
|
|
61
|
+
For read-only formats (pptx, pdf, md, …) prefer `convertDocument` → `md` / `text` / `chunks`.
|
|
62
|
+
|
|
63
|
+
See [docs/AGENT_GUIDE.md](docs/AGENT_GUIDE.md).
|
|
64
|
+
|
|
65
|
+
## Format matrix (v0.1)
|
|
66
|
+
|
|
67
|
+
| Format | Parse | Convert | Edit | Write |
|
|
68
|
+
|--------|-------|---------|------|-------|
|
|
69
|
+
| docx | yes | md/html/text/chunks | replace/append | yes |
|
|
70
|
+
| xlsx / xls | yes | csv/md/html/text/chunks | cell patch | yes |
|
|
71
|
+
| pptx | yes | md/html/text/chunks | — | — |
|
|
72
|
+
| pdf | text | md/html/text/chunks | — | plain text |
|
|
73
|
+
| md / html / csv | yes | md/html/text/csv/chunks | — | — |
|
|
74
|
+
| legacy .doc | heuristic | via extract / convertDocToDocx | — | via convert→docx |
|
|
75
|
+
| odt / rtf / epub / legacy .ppt | — | — | — | — |
|
|
76
|
+
|
|
77
|
+
Notes:
|
|
78
|
+
|
|
79
|
+
- Convert targets `rtf` / `epub` / `pdf` are **not** supported (create PDF with `writeDocument`).
|
|
80
|
+
- **DOCX** and **PPTX** cannot convert **to csv** (use a spreadsheet source).
|
|
81
|
+
|
|
82
|
+
## Subpath exports
|
|
83
|
+
|
|
84
|
+
```ts
|
|
85
|
+
import { parseDocument } from 'ai-document-parser/parse';
|
|
86
|
+
import { convertDocument } from 'ai-document-parser/convert';
|
|
87
|
+
import { editDocument } from 'ai-document-parser/edit';
|
|
88
|
+
import { writeDocument } from 'ai-document-parser/write';
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## CLI
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
npx ai-document-parser read file.docx --output text
|
|
95
|
+
npx ai-document-parser read file.docx --output structured
|
|
96
|
+
npx ai-document-parser convert file.docx --to md -o out.md
|
|
97
|
+
npx ai-document-parser convert deck.pptx --to md -o slides.md
|
|
98
|
+
npx ai-document-parser edit file.docx --replace "old" "new"
|
|
99
|
+
npx ai-document-parser edit file.docx --replace "dup" "new" --all
|
|
100
|
+
npx ai-document-parser write-docx out.docx --content "Hello"
|
|
101
|
+
npx ai-document-parser write-pdf out.pdf --content "Текст" --title "Отчёт"
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## License
|
|
105
|
+
|
|
106
|
+
MIT — see [LICENSE](LICENSE) and [LICENSES.md](LICENSES.md).
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Minimal CLI for ai-document-parser
|
|
4
|
+
* Usage:
|
|
5
|
+
* ai-document-parser read <file> [--output text|structured|ast|chunks]
|
|
6
|
+
* ai-document-parser convert <file> --to md|html|csv|text|chunks [-o out]
|
|
7
|
+
* ai-document-parser edit <file> --replace <old> <new> [--all]
|
|
8
|
+
* ai-document-parser write-docx <file> --content <text>
|
|
9
|
+
*/
|
|
10
|
+
import { readFile, writeFile } from 'node:fs/promises';
|
|
11
|
+
import { parseDocument, convertDocument, editDocument, writeDocument, } from './index.js';
|
|
12
|
+
function usage() {
|
|
13
|
+
console.error(`ai-document-parser <command> ...
|
|
14
|
+
|
|
15
|
+
Commands:
|
|
16
|
+
read <file> [--output text|structured|ast|chunks]
|
|
17
|
+
convert <file> --to <format> [-o <outfile>]
|
|
18
|
+
edit <docx> --replace <old> <new> [--all]
|
|
19
|
+
write-docx <file> --content <text>
|
|
20
|
+
write-pdf <file> --content <text> [--title <title>]
|
|
21
|
+
`);
|
|
22
|
+
process.exit(1);
|
|
23
|
+
}
|
|
24
|
+
async function main() {
|
|
25
|
+
const args = process.argv.slice(2);
|
|
26
|
+
const cmd = args[0];
|
|
27
|
+
if (!cmd)
|
|
28
|
+
usage();
|
|
29
|
+
if (cmd === 'read') {
|
|
30
|
+
const file = args[1];
|
|
31
|
+
if (!file)
|
|
32
|
+
usage();
|
|
33
|
+
const outIdx = args.indexOf('--output');
|
|
34
|
+
const output = (outIdx >= 0 ? args[outIdx + 1] : 'text');
|
|
35
|
+
const result = await parseDocument(file, { output });
|
|
36
|
+
if (output === 'ast') {
|
|
37
|
+
console.log(JSON.stringify(result.ast, null, 2));
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
console.log(result.text);
|
|
41
|
+
}
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
if (cmd === 'convert') {
|
|
45
|
+
const file = args[1];
|
|
46
|
+
const toIdx = args.indexOf('--to');
|
|
47
|
+
const oIdx = args.indexOf('-o');
|
|
48
|
+
if (!file || toIdx < 0)
|
|
49
|
+
usage();
|
|
50
|
+
const to = args[toIdx + 1];
|
|
51
|
+
const result = await convertDocument(file, to);
|
|
52
|
+
const outPath = oIdx >= 0 ? args[oIdx + 1] : undefined;
|
|
53
|
+
if (outPath) {
|
|
54
|
+
const data = typeof result.value === 'string'
|
|
55
|
+
? result.value
|
|
56
|
+
: Buffer.from(result.value);
|
|
57
|
+
await writeFile(outPath, data);
|
|
58
|
+
console.log(`Wrote ${outPath}`);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
if (typeof result.value === 'string')
|
|
62
|
+
console.log(result.value);
|
|
63
|
+
else
|
|
64
|
+
process.stdout.write(Buffer.from(result.value));
|
|
65
|
+
}
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
if (cmd === 'edit') {
|
|
69
|
+
const file = args[1];
|
|
70
|
+
const rIdx = args.indexOf('--replace');
|
|
71
|
+
if (!file || rIdx < 0)
|
|
72
|
+
usage();
|
|
73
|
+
const oldString = args[rIdx + 1];
|
|
74
|
+
const newString = args[rIdx + 2];
|
|
75
|
+
const replaceAll = args.includes('--all');
|
|
76
|
+
const result = await editDocument(file, {
|
|
77
|
+
type: 'docx',
|
|
78
|
+
op: 'replace',
|
|
79
|
+
oldString,
|
|
80
|
+
newString,
|
|
81
|
+
replaceAll,
|
|
82
|
+
});
|
|
83
|
+
console.log(result.message);
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
if (cmd === 'write-docx') {
|
|
87
|
+
const file = args[1];
|
|
88
|
+
const cIdx = args.indexOf('--content');
|
|
89
|
+
if (!file || cIdx < 0)
|
|
90
|
+
usage();
|
|
91
|
+
let content = args[cIdx + 1];
|
|
92
|
+
if (content === '-' || content === '@-') {
|
|
93
|
+
const chunks = [];
|
|
94
|
+
for await (const chunk of process.stdin) {
|
|
95
|
+
chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
|
|
96
|
+
}
|
|
97
|
+
content = Buffer.concat(chunks).toString('utf8');
|
|
98
|
+
}
|
|
99
|
+
else if (content?.startsWith('@')) {
|
|
100
|
+
content = await readFile(content.slice(1), 'utf8');
|
|
101
|
+
}
|
|
102
|
+
const result = await writeDocument(file, { type: 'docx', content });
|
|
103
|
+
console.log(result.message);
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
if (cmd === 'write-pdf') {
|
|
107
|
+
const file = args[1];
|
|
108
|
+
const cIdx = args.indexOf('--content');
|
|
109
|
+
const tIdx = args.indexOf('--title');
|
|
110
|
+
if (!file || cIdx < 0)
|
|
111
|
+
usage();
|
|
112
|
+
const content = args[cIdx + 1];
|
|
113
|
+
const title = tIdx >= 0 ? args[tIdx + 1] : undefined;
|
|
114
|
+
const result = await writeDocument(file, { type: 'pdf', content, title });
|
|
115
|
+
console.log(result.message);
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
usage();
|
|
119
|
+
}
|
|
120
|
+
main().catch((err) => {
|
|
121
|
+
console.error(err instanceof Error ? err.message : err);
|
|
122
|
+
process.exit(1);
|
|
123
|
+
});
|
|
124
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ConvertFormat, ConvertOptions, ConvertResult, DocumentInput } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Convert a document to another format in one step (parse + generate).
|
|
4
|
+
* Driven by parseDocument structured result — works for paths and buffers alike.
|
|
5
|
+
*/
|
|
6
|
+
export declare function convertDocument(input: DocumentInput, to: ConvertFormat | string, options?: ConvertOptions): Promise<ConvertResult>;
|
|
7
|
+
//# sourceMappingURL=converter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"converter.d.ts","sourceRoot":"","sources":["../../src/convert/converter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,aAAa,EACb,aAAa,EAKd,MAAM,aAAa,CAAC;AA+BrB;;;GAGG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,aAAa,EACpB,EAAE,EAAE,aAAa,GAAG,MAAM,EAC1B,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,aAAa,CAAC,CA+BxB"}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
import { DocumentError, wrapError } from '../utils/errors.js';
|
|
2
|
+
import { parseDocument } from '../parse/router.js';
|
|
3
|
+
import { emitCsvFromSheet, emitHtmlFromParagraphs, emitHtmlFromPptx, emitHtmlFromText, emitMarkdownFromParagraphs, emitMarkdownFromPptx, emitMarkdownFromSpreadsheet, emitMarkdownFromText, emitText, emitTextFromSpreadsheet, chunkText, csvEscapeCell, } from './emit.js';
|
|
4
|
+
import { pptxToText } from '../parse/pptx.js';
|
|
5
|
+
const FORMAT_MAP = {
|
|
6
|
+
md: 'md',
|
|
7
|
+
markdown: 'md',
|
|
8
|
+
html: 'html',
|
|
9
|
+
csv: 'csv',
|
|
10
|
+
text: 'text',
|
|
11
|
+
txt: 'text',
|
|
12
|
+
chunks: 'chunks',
|
|
13
|
+
pdf: 'pdf',
|
|
14
|
+
rtf: 'rtf',
|
|
15
|
+
epub: 'epub',
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Convert a document to another format in one step (parse + generate).
|
|
19
|
+
* Driven by parseDocument structured result — works for paths and buffers alike.
|
|
20
|
+
*/
|
|
21
|
+
export async function convertDocument(input, to, options = {}) {
|
|
22
|
+
void options;
|
|
23
|
+
const dest = FORMAT_MAP[String(to).toLowerCase()];
|
|
24
|
+
if (!dest) {
|
|
25
|
+
throw new DocumentError('UNSUPPORTED_FORMAT', `Unsupported convert target: ${to}`);
|
|
26
|
+
}
|
|
27
|
+
try {
|
|
28
|
+
if (dest === 'rtf' || dest === 'epub') {
|
|
29
|
+
throw new DocumentError('UNSUPPORTED_FORMAT', `Convert target "${dest}" is not supported. Use md, html, csv, text, or chunks.`);
|
|
30
|
+
}
|
|
31
|
+
if (dest === 'pdf') {
|
|
32
|
+
throw new DocumentError('UNSUPPORTED_FORMAT', 'Convert to PDF is not supported in core. Use writeDocument for plain-text PDF creation.');
|
|
33
|
+
}
|
|
34
|
+
const parsed = await parseDocument(input, { output: 'structured' });
|
|
35
|
+
return emitFromParsed(parsed, dest);
|
|
36
|
+
}
|
|
37
|
+
catch (err) {
|
|
38
|
+
if (err instanceof DocumentError)
|
|
39
|
+
throw err;
|
|
40
|
+
throw wrapError('CONVERT_FAILED', `Failed to convert to ${to}`, err);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
function paragraphsOf(parsed) {
|
|
44
|
+
const paras = parsed.structured
|
|
45
|
+
?.paragraphs;
|
|
46
|
+
if (Array.isArray(paras))
|
|
47
|
+
return paras;
|
|
48
|
+
return [];
|
|
49
|
+
}
|
|
50
|
+
function emitFromParsed(parsed, dest) {
|
|
51
|
+
const messages = parsed.warnings ?? [];
|
|
52
|
+
const format = parsed.format;
|
|
53
|
+
if (format === 'xlsx' || format === 'xls') {
|
|
54
|
+
const structured = parsed.structured;
|
|
55
|
+
if (dest === 'csv') {
|
|
56
|
+
return { value: emitCsvFromSheet(structured), messages, format: 'csv' };
|
|
57
|
+
}
|
|
58
|
+
if (dest === 'md') {
|
|
59
|
+
return {
|
|
60
|
+
value: emitMarkdownFromSpreadsheet(structured),
|
|
61
|
+
messages,
|
|
62
|
+
format: 'md',
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
if (dest === 'text') {
|
|
66
|
+
return {
|
|
67
|
+
value: emitTextFromSpreadsheet(structured),
|
|
68
|
+
messages,
|
|
69
|
+
format: 'text',
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
if (dest === 'html') {
|
|
73
|
+
return {
|
|
74
|
+
value: emitHtmlFromText(emitTextFromSpreadsheet(structured)),
|
|
75
|
+
messages,
|
|
76
|
+
format: 'html',
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
if (dest === 'chunks') {
|
|
80
|
+
return {
|
|
81
|
+
value: chunkText(emitTextFromSpreadsheet(structured)),
|
|
82
|
+
messages,
|
|
83
|
+
format: 'chunks',
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
if (format === 'csv') {
|
|
88
|
+
const rows = parsed.structured?.rows ?? [];
|
|
89
|
+
const csvText = rows.map((row) => row.map(csvEscapeCell).join(',')).join('\n');
|
|
90
|
+
if (dest === 'csv') {
|
|
91
|
+
return { value: csvText, messages, format: 'csv' };
|
|
92
|
+
}
|
|
93
|
+
return emitFromPlain(csvText, dest, messages);
|
|
94
|
+
}
|
|
95
|
+
if (format === 'docx' || format === 'doc') {
|
|
96
|
+
if (dest === 'csv') {
|
|
97
|
+
throw new DocumentError('UNSUPPORTED_FORMAT', 'Cannot convert DOCX/DOC to CSV; use a spreadsheet source.');
|
|
98
|
+
}
|
|
99
|
+
const paragraphs = parsed.structured?.paragraphs ??
|
|
100
|
+
paragraphsOf(parsed);
|
|
101
|
+
return emitFromParagraphs(paragraphs, dest, messages);
|
|
102
|
+
}
|
|
103
|
+
if (format === 'pptx') {
|
|
104
|
+
if (dest === 'csv') {
|
|
105
|
+
throw new DocumentError('UNSUPPORTED_FORMAT', 'Cannot convert PPTX to CSV; use md, html, text, or chunks.');
|
|
106
|
+
}
|
|
107
|
+
const slides = parsed.structured?.slides ?? [];
|
|
108
|
+
if (dest === 'md') {
|
|
109
|
+
return {
|
|
110
|
+
value: emitMarkdownFromPptx(slides),
|
|
111
|
+
messages,
|
|
112
|
+
format: 'md',
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
if (dest === 'html') {
|
|
116
|
+
return {
|
|
117
|
+
value: emitHtmlFromPptx(slides),
|
|
118
|
+
messages,
|
|
119
|
+
format: 'html',
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
if (dest === 'text') {
|
|
123
|
+
return {
|
|
124
|
+
value: emitText(pptxToText({ format: 'pptx', slides })),
|
|
125
|
+
messages,
|
|
126
|
+
format: 'text',
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
if (dest === 'chunks') {
|
|
130
|
+
return {
|
|
131
|
+
value: chunkText(pptxToText({ format: 'pptx', slides })),
|
|
132
|
+
messages,
|
|
133
|
+
format: 'chunks',
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
// md / html / pdf / other paragraph-shaped structured
|
|
138
|
+
const paragraphs = paragraphsOf(parsed);
|
|
139
|
+
if (paragraphs.length > 0) {
|
|
140
|
+
return emitFromParagraphs(paragraphs, dest, messages);
|
|
141
|
+
}
|
|
142
|
+
return emitFromPlain('', dest, messages);
|
|
143
|
+
}
|
|
144
|
+
function emitFromParagraphs(paragraphs, dest, messages) {
|
|
145
|
+
if (dest === 'md') {
|
|
146
|
+
return {
|
|
147
|
+
value: emitMarkdownFromParagraphs(paragraphs),
|
|
148
|
+
messages,
|
|
149
|
+
format: 'md',
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
if (dest === 'html') {
|
|
153
|
+
return {
|
|
154
|
+
value: emitHtmlFromParagraphs(paragraphs),
|
|
155
|
+
messages,
|
|
156
|
+
format: 'html',
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
if (dest === 'text') {
|
|
160
|
+
return {
|
|
161
|
+
value: emitText(paragraphs.join('\n')),
|
|
162
|
+
messages,
|
|
163
|
+
format: 'text',
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
if (dest === 'chunks') {
|
|
167
|
+
return {
|
|
168
|
+
value: chunkText(paragraphs.join('\n\n')),
|
|
169
|
+
messages,
|
|
170
|
+
format: 'chunks',
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
if (dest === 'csv') {
|
|
174
|
+
const csv = paragraphs.map((line) => csvEscapeCell(line)).join('\n');
|
|
175
|
+
return { value: csv, messages, format: 'csv' };
|
|
176
|
+
}
|
|
177
|
+
throw new DocumentError('UNSUPPORTED_FORMAT', `Unsupported convert target: ${dest}`);
|
|
178
|
+
}
|
|
179
|
+
function emitFromPlain(text, dest, messages) {
|
|
180
|
+
if (dest === 'text') {
|
|
181
|
+
return { value: emitText(text), messages, format: 'text' };
|
|
182
|
+
}
|
|
183
|
+
if (dest === 'md') {
|
|
184
|
+
return { value: emitMarkdownFromText(text), messages, format: 'md' };
|
|
185
|
+
}
|
|
186
|
+
if (dest === 'html') {
|
|
187
|
+
return { value: emitHtmlFromText(text), messages, format: 'html' };
|
|
188
|
+
}
|
|
189
|
+
if (dest === 'chunks') {
|
|
190
|
+
return { value: chunkText(text), messages, format: 'chunks' };
|
|
191
|
+
}
|
|
192
|
+
if (dest === 'csv') {
|
|
193
|
+
const csv = text
|
|
194
|
+
.split('\n')
|
|
195
|
+
.map((line) => csvEscapeCell(line))
|
|
196
|
+
.join('\n');
|
|
197
|
+
return { value: csv, messages, format: 'csv' };
|
|
198
|
+
}
|
|
199
|
+
throw new DocumentError('UNSUPPORTED_FORMAT', `Unsupported convert target: ${dest}`);
|
|
200
|
+
}
|
|
201
|
+
//# sourceMappingURL=converter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"converter.js","sourceRoot":"","sources":["../../src/convert/converter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { SpreadsheetStructured } from '../types.js';
|
|
2
|
+
export { csvEscapeCell, escapeHtml } from '../utils/text.js';
|
|
3
|
+
/** Emit markdown / html / text / csv from already-extracted content. */
|
|
4
|
+
export declare function emitText(text: string): string;
|
|
5
|
+
export declare function emitMarkdownFromParagraphs(paragraphs: string[]): string;
|
|
6
|
+
export declare function emitHtmlFromParagraphs(paragraphs: string[]): string;
|
|
7
|
+
export declare function emitMarkdownFromText(text: string): string;
|
|
8
|
+
export declare function emitHtmlFromText(text: string): string;
|
|
9
|
+
export declare function emitCsvFromSheet(structured: SpreadsheetStructured, sheetName?: string): string;
|
|
10
|
+
export declare function emitMarkdownFromSpreadsheet(structured: SpreadsheetStructured): string;
|
|
11
|
+
export declare function emitMarkdownFromPptx(slides: string[][]): string;
|
|
12
|
+
export declare function emitHtmlFromPptx(slides: string[][]): string;
|
|
13
|
+
export declare function emitTextFromSpreadsheet(structured: SpreadsheetStructured): string;
|
|
14
|
+
export declare function chunkText(text: string, maxChars?: number): string[];
|
|
15
|
+
//# sourceMappingURL=emit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emit.d.ts","sourceRoot":"","sources":["../../src/convert/emit.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAGzD,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE7D,wEAAwE;AACxE,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,CAEvE;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,CAOnE;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CASrD;AAED,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,qBAAqB,EACjC,SAAS,CAAC,EAAE,MAAM,GACjB,MAAM,CAMR;AAED,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,qBAAqB,GAAG,MAAM,CAerF;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,CAQ/D;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,CAY3D;AAED,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,qBAAqB,GAAG,MAAM,CAEjF;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,SAAO,GAAG,MAAM,EAAE,CAWjE"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { csvEscapeCell, escapeHtml } from '../utils/text.js';
|
|
2
|
+
import { spreadsheetToText } from '../edit/spreadsheet.js';
|
|
3
|
+
export { csvEscapeCell, escapeHtml } from '../utils/text.js';
|
|
4
|
+
/** Emit markdown / html / text / csv from already-extracted content. */
|
|
5
|
+
export function emitText(text) {
|
|
6
|
+
return text.replace(/\r\n/g, '\n').trim();
|
|
7
|
+
}
|
|
8
|
+
export function emitMarkdownFromParagraphs(paragraphs) {
|
|
9
|
+
return paragraphs.map((p) => p.trim()).filter(Boolean).join('\n\n');
|
|
10
|
+
}
|
|
11
|
+
export function emitHtmlFromParagraphs(paragraphs) {
|
|
12
|
+
const body = paragraphs
|
|
13
|
+
.map((p) => p.trim())
|
|
14
|
+
.filter(Boolean)
|
|
15
|
+
.map((p) => `<p>${escapeHtml(p)}</p>`)
|
|
16
|
+
.join('\n');
|
|
17
|
+
return `<!DOCTYPE html>\n<html><body>\n${body}\n</body></html>\n`;
|
|
18
|
+
}
|
|
19
|
+
export function emitMarkdownFromText(text) {
|
|
20
|
+
return emitText(text);
|
|
21
|
+
}
|
|
22
|
+
export function emitHtmlFromText(text) {
|
|
23
|
+
const paragraphs = text
|
|
24
|
+
.split(/\n\s*\n/)
|
|
25
|
+
.map((p) => p.trim())
|
|
26
|
+
.filter(Boolean);
|
|
27
|
+
if (!paragraphs.length) {
|
|
28
|
+
return `<!DOCTYPE html>\n<html><body><pre>${escapeHtml(text)}</pre></body></html>\n`;
|
|
29
|
+
}
|
|
30
|
+
return emitHtmlFromParagraphs(paragraphs);
|
|
31
|
+
}
|
|
32
|
+
export function emitCsvFromSheet(structured, sheetName) {
|
|
33
|
+
const name = sheetName ?? Object.keys(structured.sheets)[0];
|
|
34
|
+
const rows = structured.sheets[name] ?? [];
|
|
35
|
+
return rows
|
|
36
|
+
.map((row) => row.map((c) => csvEscapeCell(c)).join(','))
|
|
37
|
+
.join('\n');
|
|
38
|
+
}
|
|
39
|
+
export function emitMarkdownFromSpreadsheet(structured) {
|
|
40
|
+
const parts = [];
|
|
41
|
+
for (const [name, rows] of Object.entries(structured.sheets)) {
|
|
42
|
+
parts.push(`## ${name}`);
|
|
43
|
+
if (!rows.length)
|
|
44
|
+
continue;
|
|
45
|
+
const header = rows[0].map((c) => String(c ?? ''));
|
|
46
|
+
const sep = header.map(() => '---');
|
|
47
|
+
parts.push(`| ${header.join(' | ')} |`);
|
|
48
|
+
parts.push(`| ${sep.join(' | ')} |`);
|
|
49
|
+
for (const row of rows.slice(1)) {
|
|
50
|
+
parts.push(`| ${row.map((c) => String(c ?? '')).join(' | ')} |`);
|
|
51
|
+
}
|
|
52
|
+
parts.push('');
|
|
53
|
+
}
|
|
54
|
+
return parts.join('\n').trim();
|
|
55
|
+
}
|
|
56
|
+
export function emitMarkdownFromPptx(slides) {
|
|
57
|
+
return slides
|
|
58
|
+
.map((texts, i) => {
|
|
59
|
+
const body = texts.map((t) => t.trim()).filter(Boolean).join('\n\n');
|
|
60
|
+
return body ? `## Slide ${i + 1}\n\n${body}` : `## Slide ${i + 1}`;
|
|
61
|
+
})
|
|
62
|
+
.join('\n\n')
|
|
63
|
+
.trim();
|
|
64
|
+
}
|
|
65
|
+
export function emitHtmlFromPptx(slides) {
|
|
66
|
+
const sections = slides
|
|
67
|
+
.map((texts, i) => {
|
|
68
|
+
const paras = texts
|
|
69
|
+
.map((t) => t.trim())
|
|
70
|
+
.filter(Boolean)
|
|
71
|
+
.map((t) => `<p>${escapeHtml(t)}</p>`)
|
|
72
|
+
.join('\n');
|
|
73
|
+
return `<section>\n<h2>Slide ${i + 1}</h2>\n${paras || '<p></p>'}\n</section>`;
|
|
74
|
+
})
|
|
75
|
+
.join('\n');
|
|
76
|
+
return `<!DOCTYPE html>\n<html><body>\n${sections}\n</body></html>\n`;
|
|
77
|
+
}
|
|
78
|
+
export function emitTextFromSpreadsheet(structured) {
|
|
79
|
+
return spreadsheetToText(structured);
|
|
80
|
+
}
|
|
81
|
+
export function chunkText(text, maxChars = 1200) {
|
|
82
|
+
const trimmed = text.trim();
|
|
83
|
+
if (!trimmed)
|
|
84
|
+
return [];
|
|
85
|
+
if (trimmed.length <= maxChars)
|
|
86
|
+
return [trimmed];
|
|
87
|
+
const chunks = [];
|
|
88
|
+
let i = 0;
|
|
89
|
+
while (i < trimmed.length) {
|
|
90
|
+
chunks.push(trimmed.slice(i, i + maxChars));
|
|
91
|
+
i += maxChars;
|
|
92
|
+
}
|
|
93
|
+
return chunks;
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=emit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emit.js","sourceRoot":"","sources":["../../src/convert/emit.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/convert/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC"}
|