wikimem 0.8.0 → 0.8.1
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/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +97 -8
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/core/connectors.d.ts +1 -1
- package/dist/core/connectors.d.ts.map +1 -1
- package/dist/core/git.d.ts +1 -1
- package/dist/core/git.d.ts.map +1 -1
- package/dist/core/git.js.map +1 -1
- package/dist/core/ingest.d.ts.map +1 -1
- package/dist/core/ingest.js +74 -3
- package/dist/core/ingest.js.map +1 -1
- package/dist/core/lint.d.ts.map +1 -1
- package/dist/core/lint.js +23 -4
- package/dist/core/lint.js.map +1 -1
- package/dist/core/oauth-defaults.d.ts +31 -0
- package/dist/core/oauth-defaults.d.ts.map +1 -0
- package/dist/core/oauth-defaults.js +77 -0
- package/dist/core/oauth-defaults.js.map +1 -0
- package/dist/core/observer.d.ts +24 -1
- package/dist/core/observer.d.ts.map +1 -1
- package/dist/core/observer.js +146 -4
- package/dist/core/observer.js.map +1 -1
- package/dist/core/sync/gdrive.d.ts +14 -0
- package/dist/core/sync/gdrive.d.ts.map +1 -0
- package/dist/core/sync/gdrive.js +205 -0
- package/dist/core/sync/gdrive.js.map +1 -0
- package/dist/core/sync/github.d.ts +20 -0
- package/dist/core/sync/github.d.ts.map +1 -0
- package/dist/core/sync/github.js +206 -0
- package/dist/core/sync/github.js.map +1 -0
- package/dist/core/sync/gmail.d.ts +15 -0
- package/dist/core/sync/gmail.d.ts.map +1 -0
- package/dist/core/sync/gmail.js +159 -0
- package/dist/core/sync/gmail.js.map +1 -0
- package/dist/core/sync/index.d.ts +47 -0
- package/dist/core/sync/index.d.ts.map +1 -0
- package/dist/core/sync/index.js +100 -0
- package/dist/core/sync/index.js.map +1 -0
- package/dist/core/sync/jira.d.ts +15 -0
- package/dist/core/sync/jira.d.ts.map +1 -0
- package/dist/core/sync/jira.js +176 -0
- package/dist/core/sync/jira.js.map +1 -0
- package/dist/core/sync/linear.d.ts +15 -0
- package/dist/core/sync/linear.d.ts.map +1 -0
- package/dist/core/sync/linear.js +111 -0
- package/dist/core/sync/linear.js.map +1 -0
- package/dist/core/sync/notion.d.ts +14 -0
- package/dist/core/sync/notion.d.ts.map +1 -0
- package/dist/core/sync/notion.js +168 -0
- package/dist/core/sync/notion.js.map +1 -0
- package/dist/core/sync/rss.d.ts +20 -0
- package/dist/core/sync/rss.d.ts.map +1 -0
- package/dist/core/sync/rss.js +165 -0
- package/dist/core/sync/rss.js.map +1 -0
- package/dist/core/sync/scheduler.d.ts +31 -0
- package/dist/core/sync/scheduler.d.ts.map +1 -0
- package/dist/core/sync/scheduler.js +129 -0
- package/dist/core/sync/scheduler.js.map +1 -0
- package/dist/core/sync/slack.d.ts +16 -0
- package/dist/core/sync/slack.d.ts.map +1 -0
- package/dist/core/sync/slack.js +173 -0
- package/dist/core/sync/slack.js.map +1 -0
- package/dist/core/vault.d.ts +22 -0
- package/dist/core/vault.d.ts.map +1 -1
- package/dist/core/vault.js +65 -0
- package/dist/core/vault.js.map +1 -1
- package/dist/core/webhooks.d.ts +13 -0
- package/dist/core/webhooks.d.ts.map +1 -0
- package/dist/core/webhooks.js +206 -0
- package/dist/core/webhooks.js.map +1 -0
- package/dist/mcp-server.d.ts +11 -6
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +99 -6
- package/dist/mcp-server.js.map +1 -1
- package/dist/mcp-tools-extended.d.ts +15 -0
- package/dist/mcp-tools-extended.d.ts.map +1 -0
- package/dist/mcp-tools-extended.js +277 -0
- package/dist/mcp-tools-extended.js.map +1 -0
- package/dist/processors/csv.d.ts +18 -0
- package/dist/processors/csv.d.ts.map +1 -0
- package/dist/processors/csv.js +230 -0
- package/dist/processors/csv.js.map +1 -0
- package/dist/processors/image.d.ts.map +1 -1
- package/dist/processors/image.js +55 -27
- package/dist/processors/image.js.map +1 -1
- package/dist/processors/pdf.d.ts.map +1 -1
- package/dist/processors/pdf.js +5 -1
- package/dist/processors/pdf.js.map +1 -1
- package/dist/processors/pptx.d.ts +3 -1
- package/dist/processors/pptx.d.ts.map +1 -1
- package/dist/processors/pptx.js +236 -95
- package/dist/processors/pptx.js.map +1 -1
- package/dist/processors/xlsx.d.ts +2 -0
- package/dist/processors/xlsx.d.ts.map +1 -1
- package/dist/processors/xlsx.js +182 -46
- package/dist/processors/xlsx.js.map +1 -1
- package/dist/templates/source-types.d.ts +33 -0
- package/dist/templates/source-types.d.ts.map +1 -0
- package/dist/templates/source-types.js +178 -0
- package/dist/templates/source-types.js.map +1 -0
- package/dist/web/public/index.html +1785 -103
- package/dist/web/server.d.ts.map +1 -1
- package/dist/web/server.js +746 -38
- package/dist/web/server.js.map +1 -1
- package/package.json +4 -1
- package/src/web/public/index.html +1785 -103
- package/templates/source-types/article.md +21 -0
- package/templates/source-types/book.md +21 -0
- package/templates/source-types/paper.md +23 -0
- package/templates/source-types/podcast.md +21 -0
- package/templates/source-types/raw-notes.md +17 -0
- package/templates/source-types/tweet-thread.md +19 -0
- package/templates/source-types/video.md +21 -0
package/dist/processors/pptx.js
CHANGED
|
@@ -1,18 +1,30 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* PowerPoint (.pptx) processor.
|
|
3
|
-
* Extracts
|
|
3
|
+
* Extracts slides via zip (adm-zip) + XML parsing.
|
|
4
|
+
* Features: slide titles, body text with bullet/numbered list structure,
|
|
5
|
+
* speaker notes, image alt-text, proper paragraph grouping.
|
|
4
6
|
*/
|
|
5
|
-
import { readFileSync } from 'node:fs';
|
|
6
7
|
import { basename } from 'node:path';
|
|
8
|
+
import AdmZip from 'adm-zip';
|
|
7
9
|
export async function processPptx(filePath) {
|
|
8
10
|
const title = basename(filePath, '.pptx');
|
|
9
|
-
|
|
11
|
+
let slides;
|
|
12
|
+
try {
|
|
13
|
+
slides = extractSlides(filePath);
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
return {
|
|
17
|
+
title,
|
|
18
|
+
content: `[PowerPoint — extraction failed for ${basename(filePath)}]`,
|
|
19
|
+
markdown: buildMarkdown(title, filePath, '[Extraction failed — file may be corrupted]', 0),
|
|
20
|
+
slideCount: 0,
|
|
21
|
+
sourcePath: filePath,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
10
24
|
const slideCount = slides.length;
|
|
11
25
|
let content;
|
|
12
26
|
if (slides.length > 0) {
|
|
13
|
-
content = slides
|
|
14
|
-
.map((slide) => formatSlide(slide))
|
|
15
|
-
.join('\n\n---\n\n');
|
|
27
|
+
content = slides.map(formatSlide).join('\n\n---\n\n');
|
|
16
28
|
}
|
|
17
29
|
else {
|
|
18
30
|
content = `[PowerPoint — no text content extracted from ${basename(filePath)}]`;
|
|
@@ -26,109 +38,203 @@ export async function processPptx(filePath) {
|
|
|
26
38
|
};
|
|
27
39
|
}
|
|
28
40
|
function extractSlides(filePath) {
|
|
29
|
-
const
|
|
30
|
-
const
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
continue;
|
|
43
|
-
const texts = extractTextElements(chunk);
|
|
44
|
-
if (texts.length > 0) {
|
|
45
|
-
slides.push({
|
|
46
|
-
slideNumber: i + 1,
|
|
47
|
-
texts,
|
|
48
|
-
notes: [], // Notes extraction below
|
|
49
|
-
});
|
|
41
|
+
const zip = new AdmZip(filePath);
|
|
42
|
+
const entries = zip.getEntries();
|
|
43
|
+
const slideEntries = new Map();
|
|
44
|
+
const noteEntries = new Map();
|
|
45
|
+
for (const entry of entries) {
|
|
46
|
+
const name = entry.entryName;
|
|
47
|
+
const slideMatch = name.match(/^ppt\/slides\/slide(\d+)\.xml$/);
|
|
48
|
+
if (slideMatch?.[1]) {
|
|
49
|
+
slideEntries.set(parseInt(slideMatch[1], 10), entry.getData().toString('utf-8'));
|
|
50
|
+
}
|
|
51
|
+
const noteMatch = name.match(/^ppt\/notesSlides\/notesSlide(\d+)\.xml$/);
|
|
52
|
+
if (noteMatch?.[1]) {
|
|
53
|
+
noteEntries.set(parseInt(noteMatch[1], 10), entry.getData().toString('utf-8'));
|
|
50
54
|
}
|
|
51
55
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
56
|
+
const slideNumbers = [...slideEntries.keys()].sort((a, b) => a - b);
|
|
57
|
+
const slides = [];
|
|
58
|
+
for (const num of slideNumbers) {
|
|
59
|
+
const slideXml = slideEntries.get(num) ?? '';
|
|
60
|
+
const noteXml = noteEntries.get(num) ?? '';
|
|
61
|
+
const title = extractSlideTitle(slideXml);
|
|
62
|
+
const paragraphs = extractBodyParagraphs(slideXml, title);
|
|
63
|
+
const notes = noteXml ? extractNotesText(noteXml) : [];
|
|
64
|
+
const imageAlts = extractImageAltTexts(slideXml);
|
|
65
|
+
slides.push({ slideNumber: num, title, paragraphs, notes, imageAlts });
|
|
66
|
+
}
|
|
67
|
+
return slides;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Extract slide title from <p:sp> with <p:ph type="title"> or type="ctrTitle".
|
|
71
|
+
*/
|
|
72
|
+
function extractSlideTitle(xml) {
|
|
73
|
+
const titleTypes = ['title', 'ctrTitle'];
|
|
74
|
+
for (const phType of titleTypes) {
|
|
75
|
+
const phPattern = new RegExp(`<p:sp>([\\s\\S]*?)<p:ph[^>]*type="${phType}"[^>]*/?>([\\s\\S]*?)</p:sp>`, 'g');
|
|
76
|
+
let match;
|
|
77
|
+
while ((match = phPattern.exec(xml)) !== null) {
|
|
78
|
+
const texts = extractRawTextFromXml(match[0]);
|
|
79
|
+
if (texts.length > 0)
|
|
80
|
+
return texts.join(' ');
|
|
66
81
|
}
|
|
67
82
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
83
|
+
return '';
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Extract body paragraphs with bullet/list detection.
|
|
87
|
+
* Parses <a:p> elements within shapes, detecting:
|
|
88
|
+
* - <a:buChar char="•"/> or similar → bullet point
|
|
89
|
+
* - <a:buAutoNum type="arabicPeriod"/> → numbered list
|
|
90
|
+
* - <a:buNone/> → no bullet (plain paragraph)
|
|
91
|
+
* - <a:pPr lvl="N"/> → indentation level
|
|
92
|
+
* - <a:rPr b="1"/> → bold text
|
|
93
|
+
*/
|
|
94
|
+
function extractBodyParagraphs(xml, titleText) {
|
|
95
|
+
const paragraphs = [];
|
|
96
|
+
// Extract all shape bodies, skipping title/subtitle placeholders
|
|
97
|
+
const shapeRegex = /<p:sp>([\s\S]*?)<\/p:sp>/g;
|
|
98
|
+
let shapeMatch;
|
|
99
|
+
while ((shapeMatch = shapeRegex.exec(xml)) !== null) {
|
|
100
|
+
const shapeXml = shapeMatch[1] ?? '';
|
|
101
|
+
// Skip title/subtitle placeholder shapes
|
|
102
|
+
if (/<p:ph[^>]*type="(title|ctrTitle|subTitle)"/.test(shapeXml))
|
|
103
|
+
continue;
|
|
104
|
+
// Skip slide number, date, footer placeholders
|
|
105
|
+
if (/<p:ph[^>]*type="(sldNum|dt|ftr)"/.test(shapeXml))
|
|
73
106
|
continue;
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
107
|
+
// Extract <p:txBody> content
|
|
108
|
+
const txBodyMatch = shapeXml.match(/<p:txBody>([\s\S]*?)<\/p:txBody>/);
|
|
109
|
+
if (!txBodyMatch?.[1])
|
|
110
|
+
continue;
|
|
111
|
+
const txBody = txBodyMatch[1];
|
|
112
|
+
const parsedParagraphs = parseParagraphs(txBody);
|
|
113
|
+
for (const p of parsedParagraphs) {
|
|
114
|
+
// Skip if text matches title or is a pure number/date
|
|
115
|
+
if (p.text === titleText)
|
|
116
|
+
continue;
|
|
117
|
+
if (/^\d+$/.test(p.text) || /^\d{1,2}\/\d{1,2}\/\d{2,4}$/.test(p.text))
|
|
118
|
+
continue;
|
|
119
|
+
paragraphs.push(p);
|
|
79
120
|
}
|
|
80
121
|
}
|
|
81
|
-
return
|
|
122
|
+
return paragraphs;
|
|
82
123
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
const
|
|
124
|
+
/**
|
|
125
|
+
* Parse <a:p> elements from a txBody, detecting bullets and levels.
|
|
126
|
+
*/
|
|
127
|
+
function parseParagraphs(txBodyXml) {
|
|
128
|
+
const result = [];
|
|
129
|
+
const paraRegex = /<a:p>([\s\S]*?)<\/a:p>/g;
|
|
88
130
|
let match;
|
|
89
|
-
while ((match =
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
|
|
131
|
+
while ((match = paraRegex.exec(txBodyXml)) !== null) {
|
|
132
|
+
const paraXml = match[1] ?? '';
|
|
133
|
+
// Extract indentation level from <a:pPr lvl="N">
|
|
134
|
+
const levelMatch = paraXml.match(/<a:pPr[^>]*\blvl="(\d+)"/);
|
|
135
|
+
const level = levelMatch?.[1] ? parseInt(levelMatch[1], 10) : 0;
|
|
136
|
+
// Detect bullet type
|
|
137
|
+
let bullet = 'none';
|
|
138
|
+
if (/<a:buChar\b/.test(paraXml)) {
|
|
139
|
+
bullet = 'bullet';
|
|
140
|
+
}
|
|
141
|
+
else if (/<a:buAutoNum\b/.test(paraXml)) {
|
|
142
|
+
bullet = 'numbered';
|
|
143
|
+
}
|
|
144
|
+
else if (/<a:buNone\s*\/>/.test(paraXml)) {
|
|
145
|
+
bullet = 'none';
|
|
146
|
+
}
|
|
147
|
+
else if (/<a:pPr\b/.test(paraXml) && !/<a:buNone/.test(paraXml) && level > 0) {
|
|
148
|
+
// If there's a pPr with a level but no explicit buNone, it's likely a bullet
|
|
149
|
+
bullet = 'bullet';
|
|
150
|
+
}
|
|
151
|
+
// Check for bold
|
|
152
|
+
const isBold = /<a:rPr[^>]*\bb="1"/.test(paraXml);
|
|
153
|
+
// Extract text runs
|
|
154
|
+
const texts = [];
|
|
155
|
+
const runRegex = /<a:r>([\s\S]*?)<\/a:r>/g;
|
|
156
|
+
let runMatch;
|
|
157
|
+
while ((runMatch = runRegex.exec(paraXml)) !== null) {
|
|
158
|
+
const tMatch = (runMatch[1] ?? '').match(/<a:t>([\s\S]*?)<\/a:t>/);
|
|
159
|
+
if (tMatch?.[1]?.trim()) {
|
|
160
|
+
texts.push(decodeXmlEntities(tMatch[1].trim()));
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
// Also check for <a:fld> (field) text runs (e.g., slide numbers in body)
|
|
164
|
+
const fldRegex = /<a:fld[^>]*>([\s\S]*?)<\/a:fld>/g;
|
|
165
|
+
let fldMatch;
|
|
166
|
+
while ((fldMatch = fldRegex.exec(paraXml)) !== null) {
|
|
167
|
+
const tMatch = (fldMatch[1] ?? '').match(/<a:t>([\s\S]*?)<\/a:t>/);
|
|
168
|
+
if (tMatch?.[1]?.trim()) {
|
|
169
|
+
texts.push(decodeXmlEntities(tMatch[1].trim()));
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
const text = texts.join(' ');
|
|
173
|
+
if (text.length > 0) {
|
|
174
|
+
result.push({ text, level, bullet, isBold });
|
|
175
|
+
}
|
|
96
176
|
}
|
|
97
|
-
return
|
|
177
|
+
return result;
|
|
98
178
|
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
179
|
+
/**
|
|
180
|
+
* Extract image alt-text from <p:pic> elements.
|
|
181
|
+
* Alt text is stored in: <p:cNvPr id="..." name="..." descr="Alt text here"/>
|
|
182
|
+
*/
|
|
183
|
+
function extractImageAltTexts(xml) {
|
|
184
|
+
const alts = [];
|
|
185
|
+
// Look for p:pic shapes with descr attribute
|
|
186
|
+
const picRegex = /<p:pic>([\s\S]*?)<\/p:pic>/g;
|
|
103
187
|
let match;
|
|
104
|
-
while ((match =
|
|
105
|
-
|
|
188
|
+
while ((match = picRegex.exec(xml)) !== null) {
|
|
189
|
+
const picXml = match[1] ?? '';
|
|
190
|
+
// descr attribute on cNvPr holds alt text
|
|
191
|
+
const descrMatch = picXml.match(/descr="([^"]+)"/);
|
|
192
|
+
if (descrMatch?.[1]) {
|
|
193
|
+
alts.push(decodeXmlEntities(descrMatch[1]));
|
|
194
|
+
}
|
|
195
|
+
// Also check for <a:hlinkClick> tooltip as fallback
|
|
196
|
+
const tooltipMatch = picXml.match(/tooltip="([^"]+)"/);
|
|
197
|
+
if (tooltipMatch?.[1] && !descrMatch) {
|
|
198
|
+
alts.push(decodeXmlEntities(tooltipMatch[1]));
|
|
199
|
+
}
|
|
106
200
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
201
|
+
// Also check <wsp> (WordArt/shapes) and <p:sp> with images
|
|
202
|
+
const spRegex = /<p:sp>([\s\S]*?)<\/p:sp>/g;
|
|
203
|
+
while ((match = spRegex.exec(xml)) !== null) {
|
|
204
|
+
const spXml = match[1] ?? '';
|
|
205
|
+
if (/<a:blipFill>/.test(spXml)) {
|
|
206
|
+
const descrMatch = spXml.match(/<p:cNvPr[^>]*descr="([^"]+)"/);
|
|
207
|
+
if (descrMatch?.[1]) {
|
|
208
|
+
alts.push(decodeXmlEntities(descrMatch[1]));
|
|
209
|
+
}
|
|
210
|
+
}
|
|
111
211
|
}
|
|
112
|
-
return
|
|
212
|
+
return alts;
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Extract speaker notes text from notesSlide XML.
|
|
216
|
+
* Parses at paragraph level for better structure.
|
|
217
|
+
*/
|
|
218
|
+
function extractNotesText(noteXml) {
|
|
219
|
+
const paragraphs = parseParagraphs(noteXml);
|
|
220
|
+
return paragraphs
|
|
221
|
+
.map((p) => p.text)
|
|
222
|
+
.filter((t) => {
|
|
223
|
+
if (/^\d+$/.test(t))
|
|
224
|
+
return false;
|
|
225
|
+
if (t.length < 2)
|
|
226
|
+
return false;
|
|
227
|
+
return true;
|
|
228
|
+
});
|
|
113
229
|
}
|
|
114
|
-
function
|
|
230
|
+
function extractRawTextFromXml(xml) {
|
|
115
231
|
const texts = [];
|
|
116
|
-
// <a:t> elements contain text in Office OpenXML
|
|
117
232
|
const textRegex = /<a:t>([\s\S]*?)<\/a:t>/g;
|
|
118
233
|
let match;
|
|
119
234
|
while ((match = textRegex.exec(xml)) !== null) {
|
|
120
235
|
const text = match[1]?.trim();
|
|
121
|
-
if (text && text.length > 0)
|
|
122
|
-
texts.push(decodeXmlEntities(text));
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
// Also check for <a:fld> (field codes that may contain text)
|
|
126
|
-
const fldRegex = /<a:fld[^>]*>[\s\S]*?<a:t>([\s\S]*?)<\/a:t>[\s\S]*?<\/a:fld>/g;
|
|
127
|
-
while ((match = fldRegex.exec(xml)) !== null) {
|
|
128
|
-
const text = match[1]?.trim();
|
|
129
|
-
if (text && text.length > 0 && !texts.includes(text)) {
|
|
236
|
+
if (text && text.length > 0)
|
|
130
237
|
texts.push(decodeXmlEntities(text));
|
|
131
|
-
}
|
|
132
238
|
}
|
|
133
239
|
return texts;
|
|
134
240
|
}
|
|
@@ -139,15 +245,52 @@ function decodeXmlEntities(text) {
|
|
|
139
245
|
.replace(/>/g, '>')
|
|
140
246
|
.replace(/"/g, '"')
|
|
141
247
|
.replace(/'/g, "'")
|
|
142
|
-
.replace(/&#(\d+);/g, (_, code) => String.fromCharCode(parseInt(code, 10)))
|
|
248
|
+
.replace(/&#(\d+);/g, (_, code) => String.fromCharCode(parseInt(code, 10)))
|
|
249
|
+
.replace(/&#x([0-9A-Fa-f]+);/g, (_, code) => String.fromCharCode(parseInt(code, 16)));
|
|
143
250
|
}
|
|
144
251
|
function formatSlide(slide) {
|
|
145
|
-
|
|
146
|
-
|
|
252
|
+
const parts = [];
|
|
253
|
+
// Heading
|
|
254
|
+
if (slide.title) {
|
|
255
|
+
parts.push(`## Slide ${slide.slideNumber}: ${slide.title}`);
|
|
256
|
+
}
|
|
257
|
+
else {
|
|
258
|
+
parts.push(`## Slide ${slide.slideNumber}`);
|
|
259
|
+
}
|
|
260
|
+
// Body paragraphs with proper bullet/list formatting
|
|
261
|
+
if (slide.paragraphs.length > 0) {
|
|
262
|
+
let numberedCounter = 0;
|
|
263
|
+
const bodyLines = [];
|
|
264
|
+
for (const p of slide.paragraphs) {
|
|
265
|
+
const indent = ' '.repeat(p.level);
|
|
266
|
+
const text = p.isBold ? `**${p.text}**` : p.text;
|
|
267
|
+
if (p.bullet === 'numbered') {
|
|
268
|
+
numberedCounter++;
|
|
269
|
+
bodyLines.push(`${indent}${numberedCounter}. ${text}`);
|
|
270
|
+
}
|
|
271
|
+
else if (p.bullet === 'bullet') {
|
|
272
|
+
numberedCounter = 0;
|
|
273
|
+
bodyLines.push(`${indent}- ${text}`);
|
|
274
|
+
}
|
|
275
|
+
else {
|
|
276
|
+
numberedCounter = 0;
|
|
277
|
+
bodyLines.push(`${indent}${text}`);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
parts.push(bodyLines.join('\n'));
|
|
281
|
+
}
|
|
282
|
+
else {
|
|
283
|
+
parts.push('_[No body text]_');
|
|
284
|
+
}
|
|
285
|
+
// Image alt-texts
|
|
286
|
+
if (slide.imageAlts.length > 0) {
|
|
287
|
+
parts.push(`**Images:** ${slide.imageAlts.map((a) => `_${a}_`).join(', ')}`);
|
|
288
|
+
}
|
|
289
|
+
// Speaker notes
|
|
147
290
|
if (slide.notes.length > 0) {
|
|
148
|
-
|
|
291
|
+
parts.push(`**Speaker Notes:**\n\n> ${slide.notes.join('\n> ')}`);
|
|
149
292
|
}
|
|
150
|
-
return
|
|
293
|
+
return parts.join('\n\n');
|
|
151
294
|
}
|
|
152
295
|
function buildMarkdown(title, filePath, content, slideCount) {
|
|
153
296
|
return `# ${title}
|
|
@@ -157,8 +300,6 @@ function buildMarkdown(title, filePath, content, slideCount) {
|
|
|
157
300
|
> **Slides:** ${slideCount}
|
|
158
301
|
> **Processed:** ${new Date().toISOString().split('T')[0]}
|
|
159
302
|
|
|
160
|
-
## Slides
|
|
161
|
-
|
|
162
303
|
${content}
|
|
163
304
|
`;
|
|
164
305
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pptx.js","sourceRoot":"","sources":["../../src/processors/pptx.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pptx.js","sourceRoot":"","sources":["../../src/processors/pptx.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Excel/spreadsheet (.xlsx, .xls) processor.
|
|
3
3
|
* Uses xlsx (SheetJS) for extraction, with a raw XML fallback.
|
|
4
|
+
* Features: multiple sheets as sections, formula result values,
|
|
5
|
+
* bold/italic header detection, cell metadata.
|
|
4
6
|
*/
|
|
5
7
|
export interface XlsxResult {
|
|
6
8
|
title: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xlsx.d.ts","sourceRoot":"","sources":["../../src/processors/xlsx.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"xlsx.d.ts","sourceRoot":"","sources":["../../src/processors/xlsx.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CA4BvE"}
|