mirror of
https://github.com/alam00000/bentopdf.git
synced 2026-11-08 00:50:59 +01:00
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:
@@ -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,
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user