feat: open multi-part packages in browser

This commit is contained in:
2026-07-22 19:46:17 +02:00
parent 2c998952e5
commit 3b1777a5b3
11 changed files with 428 additions and 64 deletions

View File

@@ -3,6 +3,7 @@ import type { OneNoteResource } from '../onenote/one/content-model.js';
import {
failureFromUnknown,
openPackageForWorker,
openPackageSetForWorker,
openSectionForWorker,
resourcePayload,
workerPageKey,
@@ -59,10 +60,25 @@ async function handleRequest(data: WorkerRequest): Promise<void> {
}
case 'parse-onepkg':
try {
const parsed = await openPackageForWorker(
new Uint8Array(data.bytes),
data.fileName
);
const parsed =
data.cabinetParts && data.cabinetParts.length > 0
? await openPackageSetForWorker(
[
{
fileName: data.fileName,
bytes: new Uint8Array(data.bytes),
},
...data.cabinetParts.map((part) => ({
fileName: part.fileName,
bytes: new Uint8Array(part.bytes),
})),
],
data.fileName
)
: await openPackageForWorker(
new Uint8Array(data.bytes),
data.fileName
);
const sessionId = createSession(parsed.pages, parsed.resources);
workerScope.postMessage({
type: 'package',