From 1612e6694be815c7dcf8898b9e26665bcd303b18 Mon Sep 17 00:00:00 2001 From: Richard R Date: Thu, 21 May 2026 21:11:28 -0600 Subject: [PATCH] refactor(compute-core): capability-boundary exports for runtime and pdf-layout --- compute/core/package.json | 4 ++-- compute/core/src/pdf-layout/index.ts | 3 +++ compute/worker/src/server.ts | 2 +- src/lib/server/compute/local.ts | 2 +- src/lib/server/compute/worker.ts | 2 +- src/lib/server/documents/previews-render.ts | 2 +- tests/unit/pdf-merge-text-with-regions.spec.ts | 2 +- tests/unit/pdf-parse-normalize-text-items.spec.ts | 2 +- tests/unit/pdf-stitch-cross-page-blocks.spec.ts | 2 +- tsconfig.json | 4 ++-- 10 files changed, 14 insertions(+), 11 deletions(-) create mode 100644 compute/core/src/pdf-layout/index.ts diff --git a/compute/core/package.json b/compute/core/package.json index 2198343..21a8f2e 100644 --- a/compute/core/package.json +++ b/compute/core/package.json @@ -16,7 +16,7 @@ "./contracts": "./src/contracts.ts", "./local-runtime": "./src/local-runtime.ts", "./runtime": "./src/runtime/index.ts", - "./runtime/timeout-config": "./src/runtime/timeout-config.ts", - "./pdf-layout/*": "./src/pdf-layout/*.ts" + "./pdf-layout": "./src/pdf-layout/index.ts", + "./pdf-layout/parse": "./src/pdf-layout/parsePdf.ts" } } diff --git a/compute/core/src/pdf-layout/index.ts b/compute/core/src/pdf-layout/index.ts new file mode 100644 index 0000000..17aa00c --- /dev/null +++ b/compute/core/src/pdf-layout/index.ts @@ -0,0 +1,3 @@ +export { renderPage } from './renderPage'; +export { mergeTextWithRegions } from './mergeTextWithRegions'; +export { stitchCrossPageBlocks } from './stitchCrossPageBlocks'; diff --git a/compute/worker/src/server.ts b/compute/worker/src/server.ts index ad9b92d..4d89675 100644 --- a/compute/worker/src/server.ts +++ b/compute/worker/src/server.ts @@ -31,7 +31,7 @@ import { getComputeTimeoutConfig, withIdleTimeoutAndHardCap, withTimeout, -} from '@openreader/compute-core/runtime/timeout-config'; +} from '@openreader/compute-core/runtime'; import { type PdfLayoutJobRequest, type PdfLayoutJobResult, diff --git a/src/lib/server/compute/local.ts b/src/lib/server/compute/local.ts index 5f0d0d7..2cf0d6b 100644 --- a/src/lib/server/compute/local.ts +++ b/src/lib/server/compute/local.ts @@ -6,7 +6,7 @@ import { getComputeTimeoutConfig, withIdleTimeoutAndHardCap, withTimeout, -} from '@openreader/compute-core/runtime/timeout-config'; +} from '@openreader/compute-core/runtime'; import { runPdfLayoutFromPdfBuffer, runWhisperAlignmentFromAudioBuffer, diff --git a/src/lib/server/compute/worker.ts b/src/lib/server/compute/worker.ts index 19356d3..b4c8abf 100644 --- a/src/lib/server/compute/worker.ts +++ b/src/lib/server/compute/worker.ts @@ -1,6 +1,6 @@ import { createHash, randomUUID } from 'node:crypto'; import type { ComputeBackend, PdfLayoutInput, WhisperAlignInput, WhisperAlignResult } from '@/lib/server/compute/types'; -import { getWorkerClientWaitTimeoutMs } from '@openreader/compute-core/runtime/timeout-config'; +import { getWorkerClientWaitTimeoutMs } from '@openreader/compute-core/runtime'; import type { PdfLayoutJobRequest, PdfLayoutJobResult, diff --git a/src/lib/server/documents/previews-render.ts b/src/lib/server/documents/previews-render.ts index 8120d35..a4efdb0 100644 --- a/src/lib/server/documents/previews-render.ts +++ b/src/lib/server/documents/previews-render.ts @@ -2,7 +2,7 @@ import path from 'path'; import { createCanvas, loadImage } from '@napi-rs/canvas'; import JSZip from 'jszip'; import { XMLParser } from 'fast-xml-parser'; -import { renderPage } from '@openreader/compute-core/pdf-layout/renderPage'; +import { renderPage } from '@openreader/compute-core/pdf-layout'; export type RenderedDocumentPreview = { bytes: Buffer; diff --git a/tests/unit/pdf-merge-text-with-regions.spec.ts b/tests/unit/pdf-merge-text-with-regions.spec.ts index 7ddf373..c3ca22a 100644 --- a/tests/unit/pdf-merge-text-with-regions.spec.ts +++ b/tests/unit/pdf-merge-text-with-regions.spec.ts @@ -1,5 +1,5 @@ import { expect, test } from '@playwright/test'; -import { mergeTextWithRegions } from '@openreader/compute-core/pdf-layout/mergeTextWithRegions'; +import { mergeTextWithRegions } from '@openreader/compute-core/pdf-layout'; test.describe('mergeTextWithRegions', () => { test('assigns text items to containing regions by centroid and joins in reading order', () => { diff --git a/tests/unit/pdf-parse-normalize-text-items.spec.ts b/tests/unit/pdf-parse-normalize-text-items.spec.ts index 1f70f01..5e5f693 100644 --- a/tests/unit/pdf-parse-normalize-text-items.spec.ts +++ b/tests/unit/pdf-parse-normalize-text-items.spec.ts @@ -1,6 +1,6 @@ import { expect, test } from '@playwright/test'; -import { normalizeTextItemsForLayout } from '@openreader/compute-core/pdf-layout/parsePdf'; +import { normalizeTextItemsForLayout } from '@openreader/compute-core/pdf-layout/parse'; import type { TextItem } from 'pdfjs-dist/types/src/display/api'; function makeTextItem( diff --git a/tests/unit/pdf-stitch-cross-page-blocks.spec.ts b/tests/unit/pdf-stitch-cross-page-blocks.spec.ts index ea60c5c..ed11f0f 100644 --- a/tests/unit/pdf-stitch-cross-page-blocks.spec.ts +++ b/tests/unit/pdf-stitch-cross-page-blocks.spec.ts @@ -1,5 +1,5 @@ import { expect, test } from '@playwright/test'; -import { stitchCrossPageBlocks } from '@openreader/compute-core/pdf-layout/stitchCrossPageBlocks'; +import { stitchCrossPageBlocks } from '@openreader/compute-core/pdf-layout'; import type { ParsedPdfBlock, ParsedPdfDocument, ParsedPdfBlockKind } from '../../src/types/parsed-pdf'; function makeBlock( diff --git a/tsconfig.json b/tsconfig.json index 82246b7..5a7d536 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -24,8 +24,8 @@ "@openreader/compute-core/contracts": ["./compute/core/src/contracts.ts"], "@openreader/compute-core/local-runtime": ["./compute/core/src/local-runtime.ts"], "@openreader/compute-core/runtime": ["./compute/core/src/runtime/index.ts"], - "@openreader/compute-core/runtime/timeout-config": ["./compute/core/src/runtime/timeout-config.ts"], - "@openreader/compute-core/pdf-layout/*": ["./compute/core/src/pdf-layout/*"] + "@openreader/compute-core/pdf-layout": ["./compute/core/src/pdf-layout/index.ts"], + "@openreader/compute-core/pdf-layout/parse": ["./compute/core/src/pdf-layout/parsePdf.ts"] } }, "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],