Introduce per-page progress events for PDF parsing by adding onPageStarted hooks throughout the compute worker and core PDF pipeline. Add compute/worker/src/pdf-progress.ts to encapsulate progress event builders. Update server logic to emit page start and page parsed events, improving client feedback during long-running PDF jobs. Add src/lib/server/compute/abort-like-error.ts and integrate isAbortLikeError to robustly detect and suppress expected aborts in API event streaming. Update API route to ignore abort-like errors on worker proxy crash. Add unit tests for abort-like error detection and PDF progress event generation. Refactor PDF parse logic to allow empty merged regions without throwing, ensuring downstream flows remain resilient to edge cases. These changes improve observability, error handling, and reliability for document parsing and event streaming.
18 lines
865 B
TypeScript
18 lines
865 B
TypeScript
import { expect, test } from '@playwright/test';
|
|
import { isAbortLikeError } from '../../src/lib/server/compute/abort-like-error';
|
|
|
|
test.describe('isAbortLikeError', () => {
|
|
test('matches abort-shaped errors', () => {
|
|
expect(isAbortLikeError(new DOMException('This operation was aborted', 'AbortError'))).toBe(true);
|
|
expect(isAbortLikeError(Object.assign(new Error('random'), { name: 'AbortError' }))).toBe(true);
|
|
expect(isAbortLikeError(new Error('This operation was aborted'))).toBe(true);
|
|
expect(isAbortLikeError({ name: 'AbortError' })).toBe(true);
|
|
});
|
|
|
|
test('does not match non-abort errors', () => {
|
|
expect(isAbortLikeError(new Error('boom'))).toBe(false);
|
|
expect(isAbortLikeError({ name: 'TypeError' })).toBe(false);
|
|
expect(isAbortLikeError(null)).toBe(false);
|
|
expect(isAbortLikeError(undefined)).toBe(false);
|
|
});
|
|
});
|