Compare commits

...

2 Commits

Author SHA1 Message Date
d5474a1bd9 Set pdfjs GlobalWorkerOptions.workerSrc at app bootstrap
The PDF.js library refuses to open documents without a worker URL.
Production builds were throwing "No GlobalWorkerOptions.workerSrc
specified" on any upload because neither the source-layer ingest
(extract.ts) nor the viewer adapter ever set one — they relied on the
host application to do it, and the browser bootstrap didn't.

main.tsx now imports the worker via Vite's `?url` suffix so the file
is bundled into the build, and sets GlobalWorkerOptions.workerSrc
once before any PDF code runs. Added src/vite-env.d.ts so TypeScript
knows about the `?url` import suffix.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-26 15:28:51 +02:00
a5f5c7d8a8 Add Makefile with preview target
`make preview` runs `pnpm build && pnpm preview` so the demo can be
served from the production bundle at http://localhost:4173/. Plus
convenience targets for dev, build, test, typecheck, lint.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-26 15:17:33 +02:00
3 changed files with 33 additions and 0 deletions

23
Makefile Normal file
View File

@@ -0,0 +1,23 @@
.PHONY: preview dev build test typecheck lint
# Build the production bundle then serve it locally with vite preview.
# Prints the URL (default http://localhost:4173/) once the server is ready.
preview:
pnpm build
pnpm preview
# Dev server with HMR (http://localhost:5173/).
dev:
pnpm dev
build:
pnpm build
test:
pnpm test
typecheck:
pnpm typecheck
lint:
pnpm lint

View File

@@ -1,7 +1,16 @@
import { StrictMode } from "react";
import { createRoot } from "react-dom/client";
import * as pdfjs from "pdfjs-dist";
// Vite resolves `?url` to a bundled asset URL the browser can fetch.
import pdfWorkerUrl from "pdfjs-dist/build/pdf.worker.min.mjs?url";
import { App } from "./App";
// PDF.js needs a worker URL before any PDF is parsed. Set it once at app
// bootstrap so both the source-layer ingest (extract.ts) and the viewer
// adapter (PdfSpikeViewer) can open documents.
pdfjs.GlobalWorkerOptions.workerSrc = pdfWorkerUrl;
const container = document.getElementById("root");
if (!container) throw new Error("#root not found");

1
src/vite-env.d.ts vendored Normal file
View File

@@ -0,0 +1 @@
/// <reference types="vite/client" />