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 committed 2026-03-31 17:59:49 +05:30
1 parent a1fc2fc3c6
commit 9d0b68e18c
114 files changed
+2576 -1867

No files matched your search

+10 -7
View File
@@ -6,7 +6,7 @@ import {
readFileAsArrayBuffer,
} from '../utils/helpers.js';
import { icons, createIcons } from 'lucide';
import { EncryptPdfState } from '@/types';
import { EncryptPdfState, QpdfInstanceExtended } from '@/types';
const pageState: EncryptPdfState = {
file: null,
@@ -114,7 +114,7 @@ async function encryptPdf() {
const inputPath = '/input.pdf';
const outputPath = '/output.pdf';
let qpdf: any;
let qpdf: QpdfInstanceExtended;
const loaderModal = document.getElementById('loader-modal');
const loaderText = document.getElementById('loader-text');
@@ -154,10 +154,11 @@ async function encryptPdf() {
try {
qpdf.callMain(args);
} catch (qpdfError: any) {
} catch (qpdfError: unknown) {
console.error('qpdf execution error:', qpdfError);
throw new Error(
'Encryption failed: ' + (qpdfError.message || 'Unknown error'),
'Encryption failed: ' +
(qpdfError instanceof Error ? qpdfError.message : 'Unknown error'),
{ cause: qpdfError }
);
}
@@ -169,7 +170,9 @@ async function encryptPdf() {
throw new Error('Encryption resulted in an empty file.');
}
const blob = new Blob([outputFile], { type: 'application/pdf' });
const blob = new Blob([new Uint8Array(outputFile)], {
type: 'application/pdf',
});
downloadFile(blob, `encrypted-${pageState.file.name}`);
if (loaderModal) loaderModal.classList.add('hidden');
@@ -183,12 +186,12 @@ async function encryptPdf() {
showAlert('Success', successMessage, 'success', () => {
resetState();
});
} catch (error: any) {
} catch (error: unknown) {
console.error('Error during PDF encryption:', error);
if (loaderModal) loaderModal.classList.add('hidden');
showAlert(
'Encryption Failed',
`An error occurred: ${error.message || 'The PDF might be corrupted.'}`
`An error occurred: ${error instanceof Error ? error.message : 'The PDF might be corrupted.'}`
);
} finally {
try {