Refactor and enhance type safety across various modules

- Updated function parameters and return types in `page-preview.ts`, `pdf-decrypt.ts`, and `pymupdf-loader.ts` for improved type safety.
- Introduced type definitions for `CpdfInstance`, `PyMuPDFInstance`, and other related types to ensure better type checking.
- Enhanced error handling in `sanitize.ts` by creating a utility function for error messages.
- Removed unnecessary type assertions and improved type inference in `editor.ts`, `serialization.ts`, and `tools.test.ts`.
- Added type definitions for markdown-it plugins to improve compatibility and type safety.
- Enforced stricter TypeScript settings by enabling `noImplicitAny` in `tsconfig.json`.
- Cleaned up test files by refining type assertions and ensuring consistency in type usage.
This commit is contained in:
alam00000
2026-03-31 17:59:49 +05:30
parent a1fc2fc3c6
commit 9d0b68e18c
114 changed files with 2576 additions and 1867 deletions
+19 -9
View File
@@ -1,25 +1,34 @@
import { WasmProvider } from './wasm-provider.js';
import type {
PyMuPDFInstance,
PyMuPDFCompressOptions,
PyMuPDFExtractTextOptions,
PyMuPDFRasterizeOptions,
} from '@/types';
let cachedPyMuPDF: any = null;
let loadPromise: Promise<any> | null = null;
let cachedPyMuPDF: PyMuPDFInstance | null = null;
let loadPromise: Promise<PyMuPDFInstance> | null = null;
export interface PyMuPDFInterface {
load(): Promise<void>;
compressPdf(
file: Blob,
options: any
options: PyMuPDFCompressOptions
): Promise<{ blob: Blob; compressedSize: number }>;
convertToPdf(file: Blob, ext: string): Promise<Blob>;
extractText(file: Blob, options?: any): Promise<string>;
extractText(file: Blob, options?: PyMuPDFExtractTextOptions): Promise<string>;
extractImages(file: Blob): Promise<Array<{ data: Uint8Array; ext: string }>>;
extractTables(file: Blob): Promise<any[]>;
extractTables(file: Blob): Promise<unknown[]>;
toSvg(file: Blob, pageNum: number): Promise<string>;
renderPageToImage(file: Blob, pageNum: number, scale: number): Promise<Blob>;
getPageCount(file: Blob): Promise<number>;
rasterizePdf(file: Blob | File, options: any): Promise<Blob>;
rasterizePdf(
file: Blob | File,
options: PyMuPDFRasterizeOptions
): Promise<Blob>;
}
export async function loadPyMuPDF(): Promise<any> {
export async function loadPyMuPDF(): Promise<PyMuPDFInstance> {
if (cachedPyMuPDF) {
return cachedPyMuPDF;
}
@@ -65,9 +74,10 @@ export async function loadPyMuPDF(): Promise<any> {
console.log('[PyMuPDF Loader] Successfully loaded from CDN');
return cachedPyMuPDF;
} catch (error: any) {
} catch (error: unknown) {
loadPromise = null;
throw new Error(`Failed to load PyMuPDF from CDN: ${error.message}`, {
const msg = error instanceof Error ? error.message : String(error);
throw new Error(`Failed to load PyMuPDF from CDN: ${msg}`, {
cause: error,
});
}