doc-reader-sdk 0.0.0-stage → 1.0.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/LICENSE +21 -0
- package/README.md +220 -2
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +158 -0
- package/dist/cli.js.map +1 -0
- package/dist/extractors/csv.d.ts +6 -0
- package/dist/extractors/csv.d.ts.map +1 -0
- package/dist/extractors/csv.js +62 -0
- package/dist/extractors/csv.js.map +1 -0
- package/dist/extractors/docx.d.ts +6 -0
- package/dist/extractors/docx.d.ts.map +1 -0
- package/dist/extractors/docx.js +58 -0
- package/dist/extractors/docx.js.map +1 -0
- package/dist/extractors/json.d.ts +10 -0
- package/dist/extractors/json.d.ts.map +1 -0
- package/dist/extractors/json.js +89 -0
- package/dist/extractors/json.js.map +1 -0
- package/dist/extractors/pdf.d.ts +6 -0
- package/dist/extractors/pdf.d.ts.map +1 -0
- package/dist/extractors/pdf.js +74 -0
- package/dist/extractors/pdf.js.map +1 -0
- package/dist/extractors/pptx.d.ts +6 -0
- package/dist/extractors/pptx.d.ts.map +1 -0
- package/dist/extractors/pptx.js +81 -0
- package/dist/extractors/pptx.js.map +1 -0
- package/dist/extractors/text.d.ts +6 -0
- package/dist/extractors/text.d.ts.map +1 -0
- package/dist/extractors/text.js +40 -0
- package/dist/extractors/text.js.map +1 -0
- package/dist/extractors/xlsx.d.ts +6 -0
- package/dist/extractors/xlsx.d.ts.map +1 -0
- package/dist/extractors/xlsx.js +59 -0
- package/dist/extractors/xlsx.js.map +1 -0
- package/dist/extractors/zip.d.ts +6 -0
- package/dist/extractors/zip.d.ts.map +1 -0
- package/dist/extractors/zip.js +25 -0
- package/dist/extractors/zip.js.map +1 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +181 -0
- package/dist/index.js.map +1 -0
- package/dist/types/index.d.ts +38 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/helpers.d.ts +13 -0
- package/dist/utils/helpers.d.ts.map +1 -0
- package/dist/utils/helpers.js +164 -0
- package/dist/utils/helpers.js.map +1 -0
- package/package.json +74 -4
package/dist/index.js
ADDED
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.DocReader = void 0;
|
|
37
|
+
exports.readDoc = readDoc;
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const helpers_js_1 = require("./utils/helpers.js");
|
|
40
|
+
const pdf_js_1 = require("./extractors/pdf.js");
|
|
41
|
+
const docx_js_1 = require("./extractors/docx.js");
|
|
42
|
+
const xlsx_js_1 = require("./extractors/xlsx.js");
|
|
43
|
+
const pptx_js_1 = require("./extractors/pptx.js");
|
|
44
|
+
const csv_js_1 = require("./extractors/csv.js");
|
|
45
|
+
const json_js_1 = require("./extractors/json.js");
|
|
46
|
+
const text_js_1 = require("./extractors/text.js");
|
|
47
|
+
const zip_js_1 = require("./extractors/zip.js");
|
|
48
|
+
class DocReader {
|
|
49
|
+
constructor(defaultOptions = {}) {
|
|
50
|
+
this.defaultOptions = {
|
|
51
|
+
allSheets: true,
|
|
52
|
+
listOnly: true,
|
|
53
|
+
pageByPage: false,
|
|
54
|
+
chunkSize: 1024 * 1024, // 1 MB
|
|
55
|
+
...defaultOptions,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Read any document file and return its full text content.
|
|
60
|
+
* Handles PDF, DOCX, XLSX, PPTX, CSV, JSON, JSONL, TXT, MD, HTML, XML, ZIP, and more.
|
|
61
|
+
*/
|
|
62
|
+
async read(filePath, options = {}) {
|
|
63
|
+
const opts = { ...this.defaultOptions, ...options };
|
|
64
|
+
const absPath = path.resolve(filePath);
|
|
65
|
+
const docType = await (0, helpers_js_1.detectDocType)(absPath);
|
|
66
|
+
let chunks = [];
|
|
67
|
+
let warnings = [];
|
|
68
|
+
switch (docType) {
|
|
69
|
+
case 'pdf': {
|
|
70
|
+
const res = await (0, pdf_js_1.extractPdf)(absPath, opts);
|
|
71
|
+
chunks = res.chunks;
|
|
72
|
+
warnings = res.warnings;
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
75
|
+
case 'docx':
|
|
76
|
+
case 'doc': {
|
|
77
|
+
const res = await (0, docx_js_1.extractDocx)(absPath);
|
|
78
|
+
chunks = res.chunks;
|
|
79
|
+
warnings = res.warnings;
|
|
80
|
+
if (docType === 'doc') {
|
|
81
|
+
warnings.unshift('Legacy .doc format — results may be incomplete. Convert to .docx for best results.');
|
|
82
|
+
}
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
case 'xlsx':
|
|
86
|
+
case 'xls': {
|
|
87
|
+
const res = await (0, xlsx_js_1.extractXlsx)(absPath, opts);
|
|
88
|
+
chunks = res.chunks;
|
|
89
|
+
warnings = res.warnings;
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
92
|
+
case 'pptx':
|
|
93
|
+
case 'ppt': {
|
|
94
|
+
const res = await (0, pptx_js_1.extractPptx)(absPath);
|
|
95
|
+
chunks = res.chunks;
|
|
96
|
+
warnings = res.warnings;
|
|
97
|
+
if (docType === 'ppt') {
|
|
98
|
+
warnings.unshift('Legacy .ppt format detected. Results may be incomplete.');
|
|
99
|
+
}
|
|
100
|
+
break;
|
|
101
|
+
}
|
|
102
|
+
case 'csv': {
|
|
103
|
+
const res = await (0, csv_js_1.extractCsv)(absPath, ',', opts);
|
|
104
|
+
chunks = res.chunks;
|
|
105
|
+
warnings = res.warnings;
|
|
106
|
+
break;
|
|
107
|
+
}
|
|
108
|
+
case 'tsv': {
|
|
109
|
+
const res = await (0, csv_js_1.extractCsv)(absPath, '\t', opts);
|
|
110
|
+
chunks = res.chunks;
|
|
111
|
+
warnings = res.warnings;
|
|
112
|
+
break;
|
|
113
|
+
}
|
|
114
|
+
case 'json': {
|
|
115
|
+
const res = await (0, json_js_1.extractJson)(absPath, opts);
|
|
116
|
+
chunks = res.chunks;
|
|
117
|
+
warnings = res.warnings;
|
|
118
|
+
break;
|
|
119
|
+
}
|
|
120
|
+
case 'jsonl': {
|
|
121
|
+
const res = await (0, json_js_1.extractJsonl)(absPath, opts);
|
|
122
|
+
chunks = res.chunks;
|
|
123
|
+
warnings = res.warnings;
|
|
124
|
+
break;
|
|
125
|
+
}
|
|
126
|
+
case 'zip': {
|
|
127
|
+
const res = await (0, zip_js_1.extractZip)(absPath, opts.listOnly !== false);
|
|
128
|
+
chunks = res.chunks;
|
|
129
|
+
warnings = res.warnings;
|
|
130
|
+
break;
|
|
131
|
+
}
|
|
132
|
+
case 'txt':
|
|
133
|
+
case 'md':
|
|
134
|
+
case 'html':
|
|
135
|
+
case 'xml':
|
|
136
|
+
case 'rtf':
|
|
137
|
+
case 'epub':
|
|
138
|
+
case 'log':
|
|
139
|
+
case 'unknown':
|
|
140
|
+
default: {
|
|
141
|
+
const res = await (0, text_js_1.extractText)(absPath, opts);
|
|
142
|
+
chunks = res.chunks;
|
|
143
|
+
warnings = res.warnings;
|
|
144
|
+
break;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
// Apply maxChars truncation across chunks if set
|
|
148
|
+
let truncated = false;
|
|
149
|
+
if (opts.maxChars) {
|
|
150
|
+
let remaining = opts.maxChars;
|
|
151
|
+
for (const chunk of chunks) {
|
|
152
|
+
if (remaining <= 0) {
|
|
153
|
+
chunk.content = '';
|
|
154
|
+
}
|
|
155
|
+
else if (chunk.content.length > remaining) {
|
|
156
|
+
chunk.content = chunk.content.slice(0, remaining) + '\n\n[… truncated …]';
|
|
157
|
+
remaining = 0;
|
|
158
|
+
truncated = true;
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
remaining -= chunk.content.length;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
const fullContent = chunks.map(c => c.content).join('\n\n');
|
|
166
|
+
return {
|
|
167
|
+
type: docType,
|
|
168
|
+
content: fullContent,
|
|
169
|
+
chunks,
|
|
170
|
+
charCount: fullContent.length,
|
|
171
|
+
truncated,
|
|
172
|
+
warnings,
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
exports.DocReader = DocReader;
|
|
177
|
+
/** Convenience one-shot function */
|
|
178
|
+
async function readDoc(filePath, options) {
|
|
179
|
+
return new DocReader().read(filePath, options);
|
|
180
|
+
}
|
|
181
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export type DocType = 'pdf' | 'docx' | 'doc' | 'xlsx' | 'xls' | 'pptx' | 'ppt' | 'csv' | 'tsv' | 'json' | 'jsonl' | 'txt' | 'md' | 'html' | 'xml' | 'rtf' | 'epub' | 'zip' | 'log' | 'unknown';
|
|
2
|
+
export interface ExtractionOptions {
|
|
3
|
+
/** Max characters to return. Default: unlimited */
|
|
4
|
+
maxChars?: number;
|
|
5
|
+
/** For PDFs: extract page-by-page. Default: false */
|
|
6
|
+
pageByPage?: boolean;
|
|
7
|
+
/** For spreadsheets: include all sheets. Default: true */
|
|
8
|
+
allSheets?: boolean;
|
|
9
|
+
/** For ZIP: list files only, don't extract. Default: true */
|
|
10
|
+
listOnly?: boolean;
|
|
11
|
+
/** Encoding hint for text files. Default: auto-detect */
|
|
12
|
+
encoding?: BufferEncoding;
|
|
13
|
+
/** Stream large files in chunks instead of buffering. Default: true for >10MB */
|
|
14
|
+
streaming?: boolean;
|
|
15
|
+
/** Chunk size for streaming in bytes. Default: 1MB */
|
|
16
|
+
chunkSize?: number;
|
|
17
|
+
}
|
|
18
|
+
export interface DocChunk {
|
|
19
|
+
index: number;
|
|
20
|
+
content: string;
|
|
21
|
+
/** Source label: page number, sheet name, slide index, etc. */
|
|
22
|
+
source?: string;
|
|
23
|
+
}
|
|
24
|
+
export interface ExtractionResult {
|
|
25
|
+
/** Detected document type */
|
|
26
|
+
type: DocType;
|
|
27
|
+
/** Full concatenated content */
|
|
28
|
+
content: string;
|
|
29
|
+
/** Individual chunks (pages, sheets, slides…) */
|
|
30
|
+
chunks: DocChunk[];
|
|
31
|
+
/** Total character count */
|
|
32
|
+
charCount: number;
|
|
33
|
+
/** Whether content was truncated by maxChars */
|
|
34
|
+
truncated: boolean;
|
|
35
|
+
/** Warning messages (encoding fallback, partial extraction, etc.) */
|
|
36
|
+
warnings: string[];
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GACf,KAAK,GACL,MAAM,GACN,KAAK,GACL,MAAM,GACN,KAAK,GACL,MAAM,GACN,KAAK,GACL,KAAK,GACL,KAAK,GACL,MAAM,GACN,OAAO,GACP,KAAK,GACL,IAAI,GACJ,MAAM,GACN,KAAK,GACL,KAAK,GACL,MAAM,GACN,KAAK,GACL,KAAK,GACL,SAAS,CAAC;AAEd,MAAM,WAAW,iBAAiB;IAChC,mDAAmD;IACnD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,0DAA0D;IAC1D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,iFAAiF;IACjF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,+DAA+D;IAC/D,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,6BAA6B;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,gDAAgD;IAChD,SAAS,EAAE,OAAO,CAAC;IACnB,qEAAqE;IACrE,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { DocType } from '../types/index.js';
|
|
2
|
+
export declare function detectDocType(filePath: string): Promise<DocType>;
|
|
3
|
+
export declare function readTextFile(filePath: string, hint?: BufferEncoding): Promise<{
|
|
4
|
+
text: string;
|
|
5
|
+
encoding: string;
|
|
6
|
+
}>;
|
|
7
|
+
export declare function streamTextFile(filePath: string, chunkSize?: number): AsyncGenerator<string>;
|
|
8
|
+
export declare function truncate(text: string, maxChars?: number): {
|
|
9
|
+
text: string;
|
|
10
|
+
truncated: boolean;
|
|
11
|
+
};
|
|
12
|
+
export declare function fileSizeBytes(filePath: string): number;
|
|
13
|
+
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/utils/helpers.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AA6DjD,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAgBtE;AAID,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE,cAAc,GACpB,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAgB7C;AAID,wBAAuB,cAAc,CACnC,QAAQ,EAAE,MAAM,EAChB,SAAS,SAAc,GACtB,cAAc,CAAC,MAAM,CAAC,CAQxB;AAID,wBAAgB,QAAQ,CACtB,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,MAAM,GAChB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAMtC;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEtD"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.detectDocType = detectDocType;
|
|
40
|
+
exports.readTextFile = readTextFile;
|
|
41
|
+
exports.streamTextFile = streamTextFile;
|
|
42
|
+
exports.truncate = truncate;
|
|
43
|
+
exports.fileSizeBytes = fileSizeBytes;
|
|
44
|
+
const fs = __importStar(require("fs"));
|
|
45
|
+
const path = __importStar(require("path"));
|
|
46
|
+
const chardet_1 = __importDefault(require("chardet"));
|
|
47
|
+
const iconv_lite_1 = __importDefault(require("iconv-lite"));
|
|
48
|
+
// ─── Type Detection ────────────────────────────────────────────────────────────
|
|
49
|
+
const EXT_MAP = {
|
|
50
|
+
pdf: 'pdf',
|
|
51
|
+
docx: 'docx',
|
|
52
|
+
doc: 'doc',
|
|
53
|
+
xlsx: 'xlsx',
|
|
54
|
+
xls: 'xls',
|
|
55
|
+
pptx: 'pptx',
|
|
56
|
+
ppt: 'ppt',
|
|
57
|
+
csv: 'csv',
|
|
58
|
+
tsv: 'tsv',
|
|
59
|
+
json: 'json',
|
|
60
|
+
jsonl: 'jsonl',
|
|
61
|
+
txt: 'txt',
|
|
62
|
+
md: 'md',
|
|
63
|
+
markdown: 'md',
|
|
64
|
+
html: 'html',
|
|
65
|
+
htm: 'html',
|
|
66
|
+
xml: 'xml',
|
|
67
|
+
rtf: 'rtf',
|
|
68
|
+
epub: 'epub',
|
|
69
|
+
zip: 'zip',
|
|
70
|
+
log: 'log',
|
|
71
|
+
};
|
|
72
|
+
/** Magic-byte signatures for format sniffing (first 8 bytes) */
|
|
73
|
+
const MAGIC = [
|
|
74
|
+
{ bytes: [0x25, 0x50, 0x44, 0x46], type: 'pdf' }, // %PDF
|
|
75
|
+
{ bytes: [0x50, 0x4b, 0x03, 0x04], type: 'zip' }, // PK (zip, docx, xlsx, pptx, epub share this)
|
|
76
|
+
{ bytes: [0x50, 0x4b, 0x05, 0x06], type: 'zip' },
|
|
77
|
+
{ bytes: [0xd0, 0xcf, 0x11, 0xe0], type: 'doc' }, // OLE2 (doc, xls, ppt legacy)
|
|
78
|
+
{ bytes: [0x7b, 0x5c, 0x72, 0x74, 0x66], type: 'rtf' }, // {\rtf
|
|
79
|
+
];
|
|
80
|
+
function detectByMagic(buf) {
|
|
81
|
+
for (const sig of MAGIC) {
|
|
82
|
+
const match = sig.bytes.every((b, i) => buf[i] === b);
|
|
83
|
+
if (match)
|
|
84
|
+
return sig.type;
|
|
85
|
+
}
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
/** Refine a generic 'zip' magic hit using the internal paths */
|
|
89
|
+
async function refineZipType(filePath) {
|
|
90
|
+
try {
|
|
91
|
+
const AdmZip = (await Promise.resolve().then(() => __importStar(require('adm-zip')))).default;
|
|
92
|
+
const zip = new AdmZip(filePath);
|
|
93
|
+
const names = zip.getEntries().map((e) => e.entryName);
|
|
94
|
+
if (names.some((n) => n.startsWith('word/')))
|
|
95
|
+
return 'docx';
|
|
96
|
+
if (names.some((n) => n.startsWith('xl/')))
|
|
97
|
+
return 'xlsx';
|
|
98
|
+
if (names.some((n) => n.startsWith('ppt/')))
|
|
99
|
+
return 'pptx';
|
|
100
|
+
if (names.some((n) => n === 'mimetype' || n.startsWith('OEBPS/')))
|
|
101
|
+
return 'epub';
|
|
102
|
+
return 'zip';
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
return 'zip';
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
async function detectDocType(filePath) {
|
|
109
|
+
const ext = path.extname(filePath).replace('.', '').toLowerCase();
|
|
110
|
+
if (ext && EXT_MAP[ext] && EXT_MAP[ext] !== 'zip')
|
|
111
|
+
return EXT_MAP[ext];
|
|
112
|
+
// Read first 8 bytes for magic sniffing
|
|
113
|
+
const fd = fs.openSync(filePath, 'r');
|
|
114
|
+
const buf = Buffer.alloc(8);
|
|
115
|
+
fs.readSync(fd, buf, 0, 8, 0);
|
|
116
|
+
fs.closeSync(fd);
|
|
117
|
+
const magic = detectByMagic(buf);
|
|
118
|
+
if (magic === 'zip')
|
|
119
|
+
return refineZipType(filePath);
|
|
120
|
+
if (magic)
|
|
121
|
+
return magic;
|
|
122
|
+
if (ext && EXT_MAP[ext])
|
|
123
|
+
return EXT_MAP[ext];
|
|
124
|
+
return 'unknown';
|
|
125
|
+
}
|
|
126
|
+
// ─── Encoding ─────────────────────────────────────────────────────────────────
|
|
127
|
+
async function readTextFile(filePath, hint) {
|
|
128
|
+
const raw = fs.readFileSync(filePath);
|
|
129
|
+
if (hint) {
|
|
130
|
+
return { text: iconv_lite_1.default.decode(raw, hint), encoding: hint };
|
|
131
|
+
}
|
|
132
|
+
const detected = chardet_1.default.detect(raw);
|
|
133
|
+
const enc = detected ?? 'utf-8';
|
|
134
|
+
try {
|
|
135
|
+
const text = iconv_lite_1.default.decode(raw, enc);
|
|
136
|
+
return { text, encoding: enc };
|
|
137
|
+
}
|
|
138
|
+
catch {
|
|
139
|
+
return { text: raw.toString('utf-8'), encoding: 'utf-8 (fallback)' };
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
// ─── Streaming large text ─────────────────────────────────────────────────────
|
|
143
|
+
async function* streamTextFile(filePath, chunkSize = 1024 * 1024) {
|
|
144
|
+
const stream = fs.createReadStream(filePath, {
|
|
145
|
+
encoding: 'utf-8',
|
|
146
|
+
highWaterMark: chunkSize,
|
|
147
|
+
});
|
|
148
|
+
for await (const chunk of stream) {
|
|
149
|
+
yield chunk;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
// ─── Helpers ──────────────────────────────────────────────────────────────────
|
|
153
|
+
function truncate(text, maxChars) {
|
|
154
|
+
if (!maxChars || text.length <= maxChars)
|
|
155
|
+
return { text, truncated: false };
|
|
156
|
+
return {
|
|
157
|
+
text: text.slice(0, maxChars) + '\n\n[… content truncated …]',
|
|
158
|
+
truncated: true,
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
function fileSizeBytes(filePath) {
|
|
162
|
+
return fs.statSync(filePath).size;
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/utils/helpers.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiEA,sCAgBC;AAID,oCAmBC;AAID,wCAWC;AAID,4BASC;AAED,sCAEC;AAxID,uCAAyB;AACzB,2CAA6B;AAC7B,sDAA8B;AAC9B,4DAA+B;AAG/B,kFAAkF;AAElF,MAAM,OAAO,GAA4B;IACvC,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,GAAG,EAAE,KAAK;IACV,EAAE,EAAE,IAAI;IACR,QAAQ,EAAE,IAAI;IACd,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,MAAM;IACZ,GAAG,EAAE,KAAK;IACV,GAAG,EAAE,KAAK;CACX,CAAC;AAEF,gEAAgE;AAChE,MAAM,KAAK,GAA8C;IACvD,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAY,OAAO;IACnE,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAY,8CAA8C;IAC1G,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE;IAChD,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAY,8BAA8B;IAC1F,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAM,QAAQ;CACrE,CAAC;AAEF,SAAS,aAAa,CAAC,GAAW;IAChC,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACtD,IAAI,KAAK;YAAE,OAAO,GAAG,CAAC,IAAI,CAAC;IAC7B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,gEAAgE;AAChE,KAAK,UAAU,aAAa,CAAC,QAAgB;IAC3C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,CAAC,wDAAa,SAAS,GAAC,CAAC,CAAC,OAAO,CAAC;QACjD,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,CAAwB,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC9E,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAAE,OAAO,MAAM,CAAC;QACpE,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAAE,OAAO,MAAM,CAAC;QAClE,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAAE,OAAO,MAAM,CAAC;QACnE,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,KAAK,UAAU,IAAI,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAAE,OAAO,MAAM,CAAC;QACzF,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,aAAa,CAAC,QAAgB;IAClD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAClE,IAAI,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;IAEvE,wCAAwC;IACxC,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5B,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9B,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAEjB,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,KAAK,KAAK,KAAK;QAAE,OAAO,aAAa,CAAC,QAAQ,CAAC,CAAC;IACpD,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IAExB,IAAI,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;IAC7C,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,iFAAiF;AAE1E,KAAK,UAAU,YAAY,CAChC,QAAgB,EAChB,IAAqB;IAErB,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAEtC,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,EAAE,IAAI,EAAE,oBAAK,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC3D,CAAC;IAED,MAAM,QAAQ,GAAG,iBAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,GAAG,GAAG,QAAQ,IAAI,OAAO,CAAC;IAEhC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,oBAAK,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACpC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IACvE,CAAC;AACH,CAAC;AAED,iFAAiF;AAE1E,KAAK,SAAS,CAAC,CAAC,cAAc,CACnC,QAAgB,EAChB,SAAS,GAAG,IAAI,GAAG,IAAI;IAEvB,MAAM,MAAM,GAAG,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE;QAC3C,QAAQ,EAAE,OAAO;QACjB,aAAa,EAAE,SAAS;KACzB,CAAC,CAAC;IACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACjC,MAAM,KAAe,CAAC;IACxB,CAAC;AACH,CAAC;AAED,iFAAiF;AAEjF,SAAgB,QAAQ,CACtB,IAAY,EACZ,QAAiB;IAEjB,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,IAAI,QAAQ;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAC5E,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,6BAA6B;QAC7D,SAAS,EAAE,IAAI;KAChB,CAAC;AACJ,CAAC;AAED,SAAgB,aAAa,CAAC,QAAgB;IAC5C,OAAO,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;AACpC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,76 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "doc-reader-sdk",
|
|
3
|
-
"version": "
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Universal document text extractor SDK for Node.js — PDF, DOCX, XLSX, PPTX, CSV, JSON, and more",
|
|
5
|
+
"type": "commonjs",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"default": "./dist/index.js"
|
|
12
|
+
},
|
|
13
|
+
"./package.json": "./package.json"
|
|
14
|
+
},
|
|
15
|
+
"bin": {
|
|
16
|
+
"doc-reader": "dist/cli.js"
|
|
17
|
+
},
|
|
18
|
+
"files": [
|
|
19
|
+
"dist",
|
|
20
|
+
"README.md",
|
|
21
|
+
"LICENSE"
|
|
22
|
+
],
|
|
23
|
+
"scripts": {
|
|
24
|
+
"build": "tsc",
|
|
25
|
+
"clean": "rm -rf dist",
|
|
26
|
+
"prebuild": "npm run clean",
|
|
27
|
+
"dev": "tsx src/cli.ts",
|
|
28
|
+
"read": "tsx src/cli.ts",
|
|
29
|
+
"start": "node dist/cli.js",
|
|
30
|
+
"test": "vitest run",
|
|
31
|
+
"test:watch": "vitest",
|
|
32
|
+
"test:smoke": "tsx src/test.ts",
|
|
33
|
+
"typecheck": "tsc --noEmit",
|
|
34
|
+
"prepublishOnly": "npm run typecheck && npm run test && npm run build"
|
|
35
|
+
},
|
|
36
|
+
"keywords": [
|
|
37
|
+
"pdf",
|
|
38
|
+
"docx",
|
|
39
|
+
"xlsx",
|
|
40
|
+
"pptx",
|
|
41
|
+
"csv",
|
|
42
|
+
"document",
|
|
43
|
+
"extractor",
|
|
44
|
+
"parser",
|
|
45
|
+
"text-extraction",
|
|
46
|
+
"sdk"
|
|
47
|
+
],
|
|
48
|
+
"license": "MIT",
|
|
49
|
+
"author": "sashi-does (https://github.com/sashi-does)",
|
|
50
|
+
"repository": {
|
|
51
|
+
"type": "git",
|
|
52
|
+
"url": "git+https://github.com/sashi-does/doc-reader-sdk.git"
|
|
53
|
+
},
|
|
54
|
+
"homepage": "https://github.com/sashi-does/doc-reader-sdk#readme",
|
|
55
|
+
"bugs": {
|
|
56
|
+
"url": "https://github.com/sashi-does/doc-reader-sdk/issues"
|
|
57
|
+
},
|
|
58
|
+
"engines": {
|
|
59
|
+
"node": ">=18"
|
|
60
|
+
},
|
|
61
|
+
"devDependencies": {
|
|
62
|
+
"@types/node": "^22.15.3",
|
|
63
|
+
"@types/pdf-parse": "^1.1.5",
|
|
64
|
+
"tsx": "^4.23.15",
|
|
65
|
+
"typescript": "^5.8.3",
|
|
66
|
+
"vitest": "^5.0.5"
|
|
67
|
+
},
|
|
68
|
+
"dependencies": {
|
|
69
|
+
"adm-zip": "^0.6.1",
|
|
70
|
+
"chardet": "^2.0.0",
|
|
71
|
+
"iconv-lite": "^0.6.3",
|
|
72
|
+
"mammoth": "^1.13.0",
|
|
73
|
+
"pdf-parse": "^1.1.1",
|
|
74
|
+
"xlsx": "^0.18.5"
|
|
75
|
+
}
|
|
76
|
+
}
|