Skip to content

Commit 0e3c0d5

Browse files
committed
chore(lint): tighten converter typings
1 parent 4c6fe05 commit 0e3c0d5

File tree

5 files changed

+171
-88
lines changed

5 files changed

+171
-88
lines changed

src/docx.ts

Lines changed: 34 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,12 @@ import {
1919
ChartBlock,
2020
DiagramBlock,
2121
OSFCodeBlock,
22+
type TextRun as OSFTextRun,
2223
} from 'omniscript-parser';
2324
import { Converter, ConverterOptions, ConversionResult } from './types';
2425

26+
type DocxElement = Paragraph | Table;
27+
2528
export class DOCXConverter implements Converter {
2629
getSupportedFormats(): string[] {
2730
return ['docx'];
@@ -51,8 +54,11 @@ export class DOCXConverter implements Converter {
5154
};
5255
}
5356

54-
private generateDocumentElements(document: OSFDocument, options: ConverterOptions): any[] {
55-
const elements: any[] = [];
57+
private generateDocumentElements(
58+
document: OSFDocument,
59+
options: ConverterOptions
60+
): DocxElement[] {
61+
const elements: DocxElement[] = [];
5662

5763
for (const block of document.blocks) {
5864
switch (block.type) {
@@ -85,8 +91,8 @@ export class DOCXConverter implements Converter {
8591
return elements;
8692
}
8793

88-
private renderMetaBlock(meta: MetaBlock): any[] {
89-
const elements: any[] = [];
94+
private renderMetaBlock(meta: MetaBlock): DocxElement[] {
95+
const elements: DocxElement[] = [];
9096

9197
if (meta.props.title) {
9298
elements.push(
@@ -129,9 +135,9 @@ export class DOCXConverter implements Converter {
129135
return elements;
130136
}
131137

132-
private renderDocBlock(doc: DocBlock): any[] {
138+
private renderDocBlock(doc: DocBlock): DocxElement[] {
133139
const content = doc.content || '';
134-
const elements: any[] = [];
140+
const elements: DocxElement[] = [];
135141

136142
// Split content into lines and process markdown-like syntax
137143
const lines = content.split('\n');
@@ -212,8 +218,8 @@ export class DOCXConverter implements Converter {
212218
return elements;
213219
}
214220

215-
private renderSlideBlock(slide: SlideBlock): any[] {
216-
const elements: any[] = [];
221+
private renderSlideBlock(slide: SlideBlock): DocxElement[] {
222+
const elements: DocxElement[] = [];
217223

218224
// Add slide title
219225
if (slide.title) {
@@ -256,8 +262,8 @@ export class DOCXConverter implements Converter {
256262
return elements;
257263
}
258264

259-
private renderSheetBlock(sheet: SheetBlock): any[] {
260-
const elements: any[] = [];
265+
private renderSheetBlock(sheet: SheetBlock): DocxElement[] {
266+
const elements: DocxElement[] = [];
261267

262268
// Add sheet title
263269
if (sheet.name) {
@@ -361,7 +367,12 @@ export class DOCXConverter implements Converter {
361367
{ regex: /`(.+?)`/g, format: { font: 'Courier New' } },
362368
];
363369

364-
const matches: Array<{ index: number; length: number; text: string; format: any }> = [];
370+
const matches: Array<{
371+
index: number;
372+
length: number;
373+
text: string;
374+
format: { bold?: boolean; italics?: boolean; font?: string };
375+
}> = [];
365376

366377
// Find all formatting matches
367378
for (const pattern of patterns) {
@@ -410,16 +421,18 @@ export class DOCXConverter implements Converter {
410421
return runs;
411422
}
412423

413-
private extractText(run: any): string {
424+
private extractText(run: OSFTextRun): string {
414425
if (typeof run === 'string') return run;
415-
if (run.type === 'link') return run.text;
416-
if (run.type === 'image') return run.alt || '';
417-
if (run.text) return run.text;
426+
if ('type' in run) {
427+
if (run.type === 'link') return run.text;
428+
if (run.type === 'image') return run.alt || '';
429+
}
430+
if ('text' in run) return run.text;
418431
return '';
419432
}
420433

421-
private renderChartBlock(chart: ChartBlock): any[] {
422-
const elements: any[] = [];
434+
private renderChartBlock(chart: ChartBlock): DocxElement[] {
435+
const elements: DocxElement[] = [];
423436

424437
if (chart.title) {
425438
elements.push(
@@ -463,8 +476,8 @@ export class DOCXConverter implements Converter {
463476
return elements;
464477
}
465478

466-
private renderDiagramBlock(diagram: DiagramBlock): any[] {
467-
const elements: any[] = [];
479+
private renderDiagramBlock(diagram: DiagramBlock): DocxElement[] {
480+
const elements: DocxElement[] = [];
468481

469482
if (diagram.title) {
470483
elements.push(
@@ -510,8 +523,8 @@ export class DOCXConverter implements Converter {
510523
return elements;
511524
}
512525

513-
private renderCodeBlock(code: OSFCodeBlock): any[] {
514-
const elements: any[] = [];
526+
private renderCodeBlock(code: OSFCodeBlock): DocxElement[] {
527+
const elements: DocxElement[] = [];
515528

516529
if (code.caption) {
517530
elements.push(

src/pdf.ts

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {
1111
OSFCodeBlock,
1212
TableBlock,
1313
} from 'omniscript-parser';
14+
import type { TextRun as OSFTextRun } from 'omniscript-parser';
1415
import { Converter, ConverterOptions, ConversionResult } from './types';
1516

1617
export class PDFConverter implements Converter {
@@ -182,12 +183,14 @@ export class PDFConverter implements Converter {
182183
}
183184

184185
private renderDocBlock(doc: DocBlock, options: ConverterOptions): string {
186+
void options;
185187
const content = doc.content || '';
186188
const html = this.renderMarkdown(content);
187189
return `<div class="doc-block">${html}</div>`;
188190
}
189191

190192
private renderSlideBlock(slide: SlideBlock, options: ConverterOptions): string {
193+
void options;
191194
let html = '<div class="slide-block">';
192195

193196
if (slide.title) {
@@ -330,6 +333,7 @@ export class PDFConverter implements Converter {
330333
}
331334

332335
private renderSheetBlock(sheet: SheetBlock, options: ConverterOptions): string {
336+
void options;
333337
let html = '<div class="sheet-block">';
334338

335339
if (sheet.name) {
@@ -381,6 +385,7 @@ export class PDFConverter implements Converter {
381385
}
382386

383387
private renderTableBlock(table: TableBlock, options: ConverterOptions): string {
388+
void options;
384389
const tableStyle = table.style || 'bordered';
385390
let html = '<div class="table-block">';
386391

@@ -411,11 +416,13 @@ export class PDFConverter implements Converter {
411416
return html;
412417
}
413418

414-
private extractText(run: any): string {
419+
private extractText(run: OSFTextRun): string {
415420
if (typeof run === 'string') return run;
416-
if (run.type === 'link') return run.text;
417-
if (run.type === 'image') return run.alt || '';
418-
if (run.text) return run.text;
421+
if ('type' in run) {
422+
if (run.type === 'link') return run.text;
423+
if (run.type === 'image') return run.alt || '';
424+
}
425+
if ('text' in run) return run.text;
419426
return '';
420427
}
421428

@@ -429,6 +436,7 @@ export class PDFConverter implements Converter {
429436
}
430437

431438
private renderChartBlock(chart: ChartBlock, options: ConverterOptions): string {
439+
void options;
432440
let html = '<div class="chart-block" style="margin: 40px 0; page-break-inside: avoid;">';
433441

434442
if (chart.title) {
@@ -441,10 +449,10 @@ export class PDFConverter implements Converter {
441449
html += '</div>';
442450

443451
const chartPayload = {
444-
labels: chart.data.map((d: any) => d.label),
445-
datasets: chart.data.map((d: any, i: number) => ({
446-
label: d.label,
447-
data: d.values,
452+
labels: chart.data.map(series => series.label),
453+
datasets: chart.data.map((series, i) => ({
454+
label: series.label,
455+
data: series.values,
448456
backgroundColor: chart.options?.colors?.[i] || undefined,
449457
})),
450458
};
@@ -469,6 +477,7 @@ export class PDFConverter implements Converter {
469477
}
470478

471479
private renderDiagramBlock(diagram: DiagramBlock, options: ConverterOptions): string {
480+
void options;
472481
let html = '<div class="diagram-block" style="margin: 40px 0; page-break-inside: avoid;">';
473482

474483
if (diagram.title) {
@@ -484,6 +493,7 @@ export class PDFConverter implements Converter {
484493
}
485494

486495
private renderCodeBlock(code: OSFCodeBlock, options: ConverterOptions): string {
496+
void options;
487497
let html = '<div class="code-block" style="margin: 40px 0; page-break-inside: avoid;">';
488498

489499
if (code.caption) {

0 commit comments

Comments
 (0)