feat: render rich OneNote pages and resources

This commit is contained in:
2026-07-22 19:18:42 +02:00
parent 141be03f5e
commit 1750a6b5c3
12 changed files with 1252 additions and 64 deletions

View File

@@ -2,6 +2,7 @@ import type {
PageWorkerResponse,
ParseWorkerRequest,
ParseWorkerResponse,
ResourceWorkerResponse,
WorkerRequest,
WorkerFailure,
WorkerResponse,
@@ -17,7 +18,9 @@ export interface WorkerPort {
}
type PendingRequest = {
resolve: (response: ParseWorkerResponse | PageWorkerResponse) => void;
resolve: (
response: ParseWorkerResponse | PageWorkerResponse | ResourceWorkerResponse
) => void;
reject: (error: WorkerClientError) => void;
};
@@ -123,6 +126,36 @@ export class OneNoteWorkerClient {
});
}
getResource(
sessionId: string,
resourceId: string,
sectionId?: string
): Promise<ResourceWorkerResponse> {
if (this.terminated) {
return Promise.reject(
new WorkerClientError(
'worker-failure',
'The local parser worker has already been terminated.'
)
);
}
const requestId = `resource-${++this.requestSequence}`;
return new Promise((resolve, reject) => {
this.pending.set(requestId, {
resolve: (response) => resolve(response as ResourceWorkerResponse),
reject,
});
this.worker.postMessage({
type: 'get-resource',
requestId,
sessionId,
resourceId,
...(sectionId === undefined ? {} : { sectionId }),
});
});
}
terminate(): void {
if (this.terminated) return;
this.terminated = true;