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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/parse/router.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export type TextFormat = 'md' | 'html' | 'csv';
|
|
2
|
+
export declare function readTextFile(path: string): Promise<string>;
|
|
3
|
+
export declare function parseMarkdown(text: string): {
|
|
4
|
+
format: 'md';
|
|
5
|
+
text: string;
|
|
6
|
+
paragraphs: string[];
|
|
7
|
+
};
|
|
8
|
+
/** Strip tags for plain text; keep a simple paragraph list from block tags. */
|
|
9
|
+
export declare function parseHtml(text: string): {
|
|
10
|
+
format: 'html';
|
|
11
|
+
text: string;
|
|
12
|
+
paragraphs: string[];
|
|
13
|
+
};
|
|
14
|
+
export declare function parseCsv(text: string): {
|
|
15
|
+
format: 'csv';
|
|
16
|
+
text: string;
|
|
17
|
+
rows: string[][];
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=text-formats.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-formats.d.ts","sourceRoot":"","sources":["../../src/parse/text-formats.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC;AAE/C,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAEhE;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG;IAC3C,MAAM,EAAE,IAAI,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB,CAMA;AAED,+EAA+E;AAC/E,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB,CAsBA;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG;IACtC,MAAM,EAAE,KAAK,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC;CAClB,CAYA"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { readFile } from 'node:fs/promises';
|
|
2
|
+
export async function readTextFile(path) {
|
|
3
|
+
return readFile(path, 'utf8');
|
|
4
|
+
}
|
|
5
|
+
export function parseMarkdown(text) {
|
|
6
|
+
const paragraphs = text
|
|
7
|
+
.split(/\n\s*\n/)
|
|
8
|
+
.map((p) => p.trim())
|
|
9
|
+
.filter(Boolean);
|
|
10
|
+
return { format: 'md', text: text.replace(/\r\n/g, '\n'), paragraphs };
|
|
11
|
+
}
|
|
12
|
+
/** Strip tags for plain text; keep a simple paragraph list from block tags. */
|
|
13
|
+
export function parseHtml(text) {
|
|
14
|
+
const normalized = text.replace(/\r\n/g, '\n');
|
|
15
|
+
const withoutScripts = normalized
|
|
16
|
+
.replace(/<script[\s\S]*?<\/script>/gi, '')
|
|
17
|
+
.replace(/<style[\s\S]*?<\/style>/gi, '');
|
|
18
|
+
const withBreaks = withoutScripts
|
|
19
|
+
.replace(/<\/(p|div|h[1-6]|li|tr|br)\s*>/gi, '\n')
|
|
20
|
+
.replace(/<br\s*\/?>/gi, '\n');
|
|
21
|
+
const plain = withBreaks
|
|
22
|
+
.replace(/<[^>]+>/g, '')
|
|
23
|
+
.replace(/ /g, ' ')
|
|
24
|
+
.replace(/&/g, '&')
|
|
25
|
+
.replace(/</g, '<')
|
|
26
|
+
.replace(/>/g, '>')
|
|
27
|
+
.replace(/"/g, '"')
|
|
28
|
+
.replace(/\n{3,}/g, '\n\n')
|
|
29
|
+
.trim();
|
|
30
|
+
const paragraphs = plain
|
|
31
|
+
.split(/\n\s*\n/)
|
|
32
|
+
.map((p) => p.trim())
|
|
33
|
+
.filter(Boolean);
|
|
34
|
+
return { format: 'html', text: plain, paragraphs };
|
|
35
|
+
}
|
|
36
|
+
export function parseCsv(text) {
|
|
37
|
+
const lines = text.replace(/\r\n/g, '\n').replace(/\r/g, '\n').split('\n');
|
|
38
|
+
const rows = [];
|
|
39
|
+
for (const line of lines) {
|
|
40
|
+
if (line === '' && rows.length === 0)
|
|
41
|
+
continue;
|
|
42
|
+
rows.push(splitCsvLine(line));
|
|
43
|
+
}
|
|
44
|
+
// drop trailing empty line
|
|
45
|
+
while (rows.length && rows[rows.length - 1].every((c) => c === '')) {
|
|
46
|
+
rows.pop();
|
|
47
|
+
}
|
|
48
|
+
return { format: 'csv', text: text.replace(/\r\n/g, '\n'), rows };
|
|
49
|
+
}
|
|
50
|
+
function splitCsvLine(line) {
|
|
51
|
+
const cells = [];
|
|
52
|
+
let cur = '';
|
|
53
|
+
let inQuotes = false;
|
|
54
|
+
for (let i = 0; i < line.length; i++) {
|
|
55
|
+
const ch = line[i];
|
|
56
|
+
if (inQuotes) {
|
|
57
|
+
if (ch === '"' && line[i + 1] === '"') {
|
|
58
|
+
cur += '"';
|
|
59
|
+
i++;
|
|
60
|
+
}
|
|
61
|
+
else if (ch === '"') {
|
|
62
|
+
inQuotes = false;
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
cur += ch;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
else if (ch === '"') {
|
|
69
|
+
inQuotes = true;
|
|
70
|
+
}
|
|
71
|
+
else if (ch === ',') {
|
|
72
|
+
cells.push(cur);
|
|
73
|
+
cur = '';
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
cur += ch;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
cells.push(cur);
|
|
80
|
+
return cells;
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=text-formats.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-formats.js","sourceRoot":"","sources":["../../src/parse/text-formats.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared types for ai-document-parser.
|
|
3
|
+
*/
|
|
4
|
+
export type ParseOutputMode = 'text' | 'structured' | 'ast' | 'chunks';
|
|
5
|
+
export type ConvertFormat = 'md' | 'html' | 'csv' | 'rtf' | 'epub' | 'text' | 'chunks' | 'pdf';
|
|
6
|
+
export type DocumentInput = string | Buffer | Uint8Array | ArrayBuffer;
|
|
7
|
+
export interface ParseOptions {
|
|
8
|
+
/** Default: 'text' */
|
|
9
|
+
output?: ParseOutputMode;
|
|
10
|
+
/** Reserved; currently ignored (no OCR pipeline in core). Default: false */
|
|
11
|
+
ocr?: boolean;
|
|
12
|
+
extractAttachments?: boolean;
|
|
13
|
+
includeRawContent?: boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface ConvertOptions {
|
|
16
|
+
ocr?: boolean;
|
|
17
|
+
extractAttachments?: boolean;
|
|
18
|
+
generator?: Record<string, unknown>;
|
|
19
|
+
}
|
|
20
|
+
export interface DocumentWarning {
|
|
21
|
+
code: string;
|
|
22
|
+
message: string;
|
|
23
|
+
}
|
|
24
|
+
export interface DocumentResult {
|
|
25
|
+
/** Detected / resolved format (e.g. docx, xlsx, pdf) */
|
|
26
|
+
format: string;
|
|
27
|
+
/** Plain text when output is text, or stringified structured/chunks */
|
|
28
|
+
text: string;
|
|
29
|
+
charCount: number;
|
|
30
|
+
/** Path when input was a file path */
|
|
31
|
+
path?: string;
|
|
32
|
+
/** Structured agent-friendly payload when output === 'structured' */
|
|
33
|
+
structured?: DocxStructured | SpreadsheetStructured | LegacyDocStructured | PptxStructured | Record<string, unknown>;
|
|
34
|
+
/** Simplified document shape when output === 'ast' */
|
|
35
|
+
ast?: unknown;
|
|
36
|
+
/** Chunks when output === 'chunks' */
|
|
37
|
+
chunks?: unknown[];
|
|
38
|
+
warnings?: DocumentWarning[];
|
|
39
|
+
}
|
|
40
|
+
export interface DocxStructured {
|
|
41
|
+
format: 'docx';
|
|
42
|
+
paragraphs: string[];
|
|
43
|
+
}
|
|
44
|
+
export interface SpreadsheetStructured {
|
|
45
|
+
format: 'xlsx' | 'xls';
|
|
46
|
+
sheets: Record<string, (string | number | boolean | null)[][]>;
|
|
47
|
+
}
|
|
48
|
+
export interface LegacyDocStructured {
|
|
49
|
+
format: 'doc';
|
|
50
|
+
paragraphs: string[];
|
|
51
|
+
source: 'ai-document-parser-doc-binary';
|
|
52
|
+
}
|
|
53
|
+
export interface PptxStructured {
|
|
54
|
+
format: 'pptx';
|
|
55
|
+
/** Per-slide text blocks (DrawingML a:t runs grouped by a:p). */
|
|
56
|
+
slides: string[][];
|
|
57
|
+
}
|
|
58
|
+
export interface ConvertResult {
|
|
59
|
+
value: string | Uint8Array | unknown;
|
|
60
|
+
messages: DocumentWarning[];
|
|
61
|
+
format: ConvertFormat;
|
|
62
|
+
}
|
|
63
|
+
export type EditDocxOp = {
|
|
64
|
+
type: 'docx';
|
|
65
|
+
op: 'replace';
|
|
66
|
+
oldString: string;
|
|
67
|
+
newString: string;
|
|
68
|
+
replaceAll?: boolean;
|
|
69
|
+
} | {
|
|
70
|
+
type: 'docx';
|
|
71
|
+
op: 'append';
|
|
72
|
+
paragraphs: string[];
|
|
73
|
+
};
|
|
74
|
+
export type EditSpreadsheetOp = {
|
|
75
|
+
type: 'spreadsheet';
|
|
76
|
+
op: 'patchCells';
|
|
77
|
+
updates: Array<{
|
|
78
|
+
sheet?: string;
|
|
79
|
+
cell: string;
|
|
80
|
+
value: string | number | boolean | null;
|
|
81
|
+
}>;
|
|
82
|
+
};
|
|
83
|
+
export type EditDocumentOp = EditDocxOp | EditSpreadsheetOp;
|
|
84
|
+
export interface EditResult {
|
|
85
|
+
path: string;
|
|
86
|
+
message: string;
|
|
87
|
+
changes: number;
|
|
88
|
+
}
|
|
89
|
+
export type WriteDocumentInput = {
|
|
90
|
+
type: 'docx';
|
|
91
|
+
content: string | string[];
|
|
92
|
+
} | {
|
|
93
|
+
type: 'xlsx' | 'xls';
|
|
94
|
+
sheets: Record<string, (string | number | boolean | null)[][]>;
|
|
95
|
+
} | {
|
|
96
|
+
type: 'pdf';
|
|
97
|
+
content: string;
|
|
98
|
+
title?: string;
|
|
99
|
+
};
|
|
100
|
+
export interface WriteResult {
|
|
101
|
+
path: string;
|
|
102
|
+
message: string;
|
|
103
|
+
}
|
|
104
|
+
export type DocumentErrorCode = 'UNSUPPORTED_FORMAT' | 'PARSE_FAILED' | 'CONVERT_FAILED' | 'EDIT_TARGET_NOT_FOUND' | 'MULTIPLE_MATCHES' | 'WRITE_FAILED' | 'LICENSE_PEER_MISSING' | 'LEGACY_DOC_LOW_FIDELITY' | 'INVALID_ARGUMENT' | 'IO_ERROR';
|
|
105
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { DocumentErrorCode } from '../types.js';
|
|
2
|
+
export declare class DocumentError extends Error {
|
|
3
|
+
readonly code: DocumentErrorCode;
|
|
4
|
+
readonly cause?: unknown;
|
|
5
|
+
constructor(code: DocumentErrorCode, message: string, cause?: unknown);
|
|
6
|
+
}
|
|
7
|
+
export declare function wrapError(code: DocumentErrorCode, message: string, err: unknown): DocumentError;
|
|
8
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,qBAAa,aAAc,SAAQ,KAAK;IACtC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;gBAEb,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAMtE;AAED,wBAAgB,SAAS,CACvB,IAAI,EAAE,iBAAiB,EACvB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,OAAO,GACX,aAAa,CAIf"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export class DocumentError extends Error {
|
|
2
|
+
code;
|
|
3
|
+
cause;
|
|
4
|
+
constructor(code, message, cause) {
|
|
5
|
+
super(message);
|
|
6
|
+
this.name = 'DocumentError';
|
|
7
|
+
this.code = code;
|
|
8
|
+
this.cause = cause;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export function wrapError(code, message, err) {
|
|
12
|
+
if (err instanceof DocumentError)
|
|
13
|
+
return err;
|
|
14
|
+
const detail = err instanceof Error ? err.message : String(err);
|
|
15
|
+
return new DocumentError(code, `${message}: ${detail}`, err);
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,aAAc,SAAQ,KAAK;IAC7B,IAAI,CAAoB;IACxB,KAAK,CAAW;IAEzB,YAAY,IAAuB,EAAE,OAAe,EAAE,KAAe;QACnE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AAED,MAAM,UAAU,SAAS,CACvB,IAAuB,EACvB,OAAe,EACf,GAAY;IAEZ,IAAI,GAAG,YAAY,aAAa;QAAE,OAAO,GAAG,CAAC;IAC7C,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChE,OAAO,IAAI,aAAa,CAAC,IAAI,EAAE,GAAG,OAAO,KAAK,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC;AAC/D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":"AAEA,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3C;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAE1D;AASD,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGrE"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
export function extOf(input) {
|
|
3
|
+
return path.extname(input).toLowerCase();
|
|
4
|
+
}
|
|
5
|
+
export function isPathLike(input) {
|
|
6
|
+
return typeof input === 'string' && !looksLikeRawContent(input);
|
|
7
|
+
}
|
|
8
|
+
/** Heuristic: short strings without path separators may still be paths (e.g. "a.docx"). */
|
|
9
|
+
function looksLikeRawContent(s) {
|
|
10
|
+
if (s.includes('\n') || s.includes('\r'))
|
|
11
|
+
return true;
|
|
12
|
+
if (s.length > 512 && !/[\\/]/.test(s) && !/\.\w{1,8}$/.test(s))
|
|
13
|
+
return true;
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
export async function ensureParentDir(filePath) {
|
|
17
|
+
const { mkdir } = await import('node:fs/promises');
|
|
18
|
+
await mkdir(path.dirname(filePath), { recursive: true });
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,UAAU,KAAK,CAAC,KAAa;IACjC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAc;IACvC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;AAClE,CAAC;AAED,2FAA2F;AAC3F,SAAS,mBAAmB,CAAC,CAAS;IACpC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACtD,IAAI,CAAC,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7E,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,QAAgB;IACpD,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;IACnD,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC3D,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** Escape text for HTML element content / attributes. */
|
|
2
|
+
export declare function escapeHtml(s: string): string;
|
|
3
|
+
/** Escape a single CSV cell (RFC-style quotes when needed). */
|
|
4
|
+
export declare function csvEscapeCell(value: string | number | boolean | null | undefined): string;
|
|
5
|
+
//# sourceMappingURL=text.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/utils/text.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAM5C;AAED,+DAA+D;AAC/D,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAIzF"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/** Escape text for HTML element content / attributes. */
|
|
2
|
+
export function escapeHtml(s) {
|
|
3
|
+
return s
|
|
4
|
+
.replace(/&/g, '&')
|
|
5
|
+
.replace(/</g, '<')
|
|
6
|
+
.replace(/>/g, '>')
|
|
7
|
+
.replace(/"/g, '"');
|
|
8
|
+
}
|
|
9
|
+
/** Escape a single CSV cell (RFC-style quotes when needed). */
|
|
10
|
+
export function csvEscapeCell(value) {
|
|
11
|
+
if (value === null || value === undefined)
|
|
12
|
+
return '';
|
|
13
|
+
const s = String(value);
|
|
14
|
+
return /[",\n\r]/.test(s) ? `"${s.replace(/"/g, '""')}"` : s;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text.js","sourceRoot":"","sources":["../../src/utils/text.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,MAAM,UAAU,UAAU,CAAC,CAAS;IAClC,OAAO,CAAC;SACL,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7B,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,aAAa,CAAC,KAAmD;IAC/E,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACrD,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACxB,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docx.d.ts","sourceRoot":"","sources":["../../src/write/docx.ts"],"names":[],"mappings":"AAKA,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GACzB,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CA+B9B"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { writeFile } from 'node:fs/promises';
|
|
2
|
+
import { Document, Packer, Paragraph, TextRun } from 'docx';
|
|
3
|
+
import { ensureParentDir } from '../utils/paths.js';
|
|
4
|
+
import { wrapError } from '../utils/errors.js';
|
|
5
|
+
export async function writeDocx(filePath, content) {
|
|
6
|
+
try {
|
|
7
|
+
const paragraphs = Array.isArray(content)
|
|
8
|
+
? content
|
|
9
|
+
: content.split(/\r?\n/);
|
|
10
|
+
const children = paragraphs.map((text) => new Paragraph({
|
|
11
|
+
children: [new TextRun(text || ' ')],
|
|
12
|
+
}));
|
|
13
|
+
const doc = new Document({
|
|
14
|
+
sections: [
|
|
15
|
+
{
|
|
16
|
+
children: children.length > 0 ? children : [new Paragraph({ children: [] })],
|
|
17
|
+
},
|
|
18
|
+
],
|
|
19
|
+
});
|
|
20
|
+
const buffer = await Packer.toBuffer(doc);
|
|
21
|
+
await ensureParentDir(filePath);
|
|
22
|
+
await writeFile(filePath, buffer);
|
|
23
|
+
return {
|
|
24
|
+
message: `Created DOCX: ${filePath} (${paragraphs.length} paragraph(s))`,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
throw wrapError('WRITE_FAILED', `Failed to write docx ${filePath}`, err);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=docx.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docx.js","sourceRoot":"","sources":["../../src/write/docx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,QAAgB,EAChB,OAA0B;IAE1B,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;YACvC,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAE3B,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAC7B,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,SAAS,CAAC;YACZ,QAAQ,EAAE,CAAC,IAAI,OAAO,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC;SACrC,CAAC,CACL,CAAC;QAEF,MAAM,GAAG,GAAG,IAAI,QAAQ,CAAC;YACvB,QAAQ,EAAE;gBACR;oBACE,QAAQ,EACN,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;iBACrE;aACF;SACF,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;QAChC,MAAM,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAClC,OAAO;YACL,OAAO,EAAE,iBAAiB,QAAQ,KAAK,UAAU,CAAC,MAAM,gBAAgB;SACzE,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,SAAS,CAAC,cAAc,EAAE,wBAAwB,QAAQ,EAAE,EAAE,GAAG,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { WriteDocumentInput, WriteResult } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Create a new document from scratch (plain text / grid).
|
|
4
|
+
*/
|
|
5
|
+
export declare function writeDocument(filePath: string, input: WriteDocumentInput): Promise<WriteResult>;
|
|
6
|
+
export { writeDocx } from './docx.js';
|
|
7
|
+
export { writePdf } from './pdf.js';
|
|
8
|
+
export { writeSpreadsheet } from './spreadsheet.js';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/write/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAKnE;;GAEG;AACH,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,kBAAkB,GACxB,OAAO,CAAC,WAAW,CAAC,CAyCtB;AAED,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { DocumentError } from '../utils/errors.js';
|
|
3
|
+
import { writeDocx } from './docx.js';
|
|
4
|
+
import { writePdf } from './pdf.js';
|
|
5
|
+
import { writeSpreadsheet } from './spreadsheet.js';
|
|
6
|
+
/**
|
|
7
|
+
* Create a new document from scratch (plain text / grid).
|
|
8
|
+
*/
|
|
9
|
+
export async function writeDocument(filePath, input) {
|
|
10
|
+
const ext = path.extname(filePath).toLowerCase();
|
|
11
|
+
if (input.type === 'docx') {
|
|
12
|
+
if (ext && ext !== '.docx') {
|
|
13
|
+
throw new DocumentError('INVALID_ARGUMENT', `Expected .docx path for type docx, got ${ext}`);
|
|
14
|
+
}
|
|
15
|
+
const result = await writeDocx(filePath, input.content);
|
|
16
|
+
return { path: filePath, message: result.message };
|
|
17
|
+
}
|
|
18
|
+
if (input.type === 'xlsx' || input.type === 'xls') {
|
|
19
|
+
const expected = input.type === 'xls' ? '.xls' : '.xlsx';
|
|
20
|
+
if (ext && ext !== expected) {
|
|
21
|
+
throw new DocumentError('INVALID_ARGUMENT', `Expected ${expected} path for type ${input.type}, got ${ext}`);
|
|
22
|
+
}
|
|
23
|
+
const result = await writeSpreadsheet(filePath, input.sheets);
|
|
24
|
+
return { path: filePath, message: result.message };
|
|
25
|
+
}
|
|
26
|
+
if (input.type === 'pdf') {
|
|
27
|
+
if (ext && ext !== '.pdf') {
|
|
28
|
+
throw new DocumentError('INVALID_ARGUMENT', `Expected .pdf path for type pdf, got ${ext}`);
|
|
29
|
+
}
|
|
30
|
+
const result = await writePdf(filePath, input.content, input.title);
|
|
31
|
+
return { path: filePath, message: result.message };
|
|
32
|
+
}
|
|
33
|
+
throw new DocumentError('INVALID_ARGUMENT', `Unsupported write type: ${input.type}`);
|
|
34
|
+
}
|
|
35
|
+
export { writeDocx } from './docx.js';
|
|
36
|
+
export { writePdf } from './pdf.js';
|
|
37
|
+
export { writeSpreadsheet } from './spreadsheet.js';
|
|
38
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/write/index.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,QAAgB,EAChB,KAAyB;IAEzB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IAEjD,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC1B,IAAI,GAAG,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YAC3B,MAAM,IAAI,aAAa,CACrB,kBAAkB,EAClB,0CAA0C,GAAG,EAAE,CAChD,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACxD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;IACrD,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAClD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QACzD,IAAI,GAAG,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,IAAI,aAAa,CACrB,kBAAkB,EAClB,YAAY,QAAQ,kBAAkB,KAAK,CAAC,IAAI,SAAS,GAAG,EAAE,CAC/D,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAC9D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;IACrD,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QACzB,IAAI,GAAG,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;YAC1B,MAAM,IAAI,aAAa,CACrB,kBAAkB,EAClB,wCAAwC,GAAG,EAAE,CAC9C,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QACpE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;IACrD,CAAC;IAED,MAAM,IAAI,aAAa,CACrB,kBAAkB,EAClB,2BAA4B,KAA0B,CAAC,IAAI,EAAE,CAC9D,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pdf.d.ts","sourceRoot":"","sources":["../../src/write/pdf.ts"],"names":[],"mappings":"AAwCA,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAqC9B"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { readFileSync } from 'node:fs';
|
|
2
|
+
import { writeFile } from 'node:fs/promises';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import { fileURLToPath } from 'node:url';
|
|
5
|
+
import { jsPDF } from 'jspdf';
|
|
6
|
+
import { ensureParentDir } from '../utils/paths.js';
|
|
7
|
+
import { wrapError } from '../utils/errors.js';
|
|
8
|
+
const PDF_FONT = 'DejaVuSans';
|
|
9
|
+
const PDF_FONT_FILE = 'DejaVuSans.ttf';
|
|
10
|
+
function resolveFontPath() {
|
|
11
|
+
// Prefer packaged fonts next to dist/, then repo fonts/
|
|
12
|
+
const here = path.dirname(fileURLToPath(import.meta.url));
|
|
13
|
+
const candidates = [
|
|
14
|
+
path.join(here, '..', '..', 'fonts', PDF_FONT_FILE),
|
|
15
|
+
path.join(here, '..', 'fonts', PDF_FONT_FILE),
|
|
16
|
+
path.join(process.cwd(), 'fonts', PDF_FONT_FILE),
|
|
17
|
+
];
|
|
18
|
+
for (const c of candidates) {
|
|
19
|
+
try {
|
|
20
|
+
readFileSync(c);
|
|
21
|
+
return c;
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
/* try next */
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
throw new Error(`Font ${PDF_FONT_FILE} not found. Expected under package fonts/`);
|
|
28
|
+
}
|
|
29
|
+
function registerCyrillicFont(doc) {
|
|
30
|
+
const fontPath = resolveFontPath();
|
|
31
|
+
const fontData = readFileSync(fontPath).toString('binary');
|
|
32
|
+
doc.addFileToVFS(PDF_FONT_FILE, fontData);
|
|
33
|
+
doc.addFont(PDF_FONT_FILE, PDF_FONT, 'normal');
|
|
34
|
+
doc.setFont(PDF_FONT);
|
|
35
|
+
}
|
|
36
|
+
export async function writePdf(filePath, content, title) {
|
|
37
|
+
try {
|
|
38
|
+
const doc = new jsPDF({ unit: 'mm', format: 'a4' });
|
|
39
|
+
registerCyrillicFont(doc);
|
|
40
|
+
const margin = 15;
|
|
41
|
+
const pageWidth = doc.internal.pageSize.getWidth() - margin * 2;
|
|
42
|
+
let y = margin;
|
|
43
|
+
if (title) {
|
|
44
|
+
doc.setFontSize(14);
|
|
45
|
+
const titleLines = doc.splitTextToSize(title, pageWidth);
|
|
46
|
+
doc.text(titleLines, margin, y);
|
|
47
|
+
y += titleLines.length * 7 + 4;
|
|
48
|
+
}
|
|
49
|
+
doc.setFontSize(11);
|
|
50
|
+
const lines = doc.splitTextToSize(content, pageWidth);
|
|
51
|
+
const lineHeight = 5;
|
|
52
|
+
for (const line of lines) {
|
|
53
|
+
if (y > doc.internal.pageSize.getHeight() - margin) {
|
|
54
|
+
doc.addPage();
|
|
55
|
+
doc.setFont(PDF_FONT);
|
|
56
|
+
y = margin;
|
|
57
|
+
}
|
|
58
|
+
doc.text(line, margin, y);
|
|
59
|
+
y += lineHeight;
|
|
60
|
+
}
|
|
61
|
+
const buffer = Buffer.from(doc.output('arraybuffer'));
|
|
62
|
+
await ensureParentDir(filePath);
|
|
63
|
+
await writeFile(filePath, buffer);
|
|
64
|
+
return { message: `Created PDF: ${filePath} (${lines.length} line(s))` };
|
|
65
|
+
}
|
|
66
|
+
catch (err) {
|
|
67
|
+
throw wrapError('WRITE_FAILED', `Failed to write pdf ${filePath}`, err);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=pdf.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pdf.js","sourceRoot":"","sources":["../../src/write/pdf.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spreadsheet.d.ts","sourceRoot":"","sources":["../../src/write/spreadsheet.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,yBAAyB,EACzB,8BAA8B,EAC9B,mCAAmC,EACnC,iBAAiB,EACjB,KAAK,SAAS,EACd,KAAK,UAAU,GAChB,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spreadsheet.js","sourceRoot":"","sources":["../../src/write/spreadsheet.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,yBAAyB,EACzB,8BAA8B,EAC9B,mCAAmC,EACnC,iBAAiB,GAGlB,MAAM,wBAAwB,CAAC"}
|
|
Binary file
|