42 lines
1.0 KiB
TypeScript
42 lines
1.0 KiB
TypeScript
/// <reference lib="webworker" />
|
|
import { createWorkerJobMessageHandler } from "@add-ideas/toolbox-helpers";
|
|
import { parseDataDocument } from "../core/parse";
|
|
import {
|
|
DataToolsError,
|
|
type ParsedDocument,
|
|
type ParseRequest,
|
|
} from "../core/types";
|
|
|
|
self.onmessage = createWorkerJobMessageHandler<
|
|
ParseRequest,
|
|
ParsedDocument,
|
|
never,
|
|
{ message: string; diagnostics: DataToolsError["diagnostics"] }
|
|
>(
|
|
(request) => parseDataDocument(request),
|
|
(response) => self.postMessage(response),
|
|
{
|
|
serializeError: (error) => ({
|
|
message:
|
|
error instanceof Error
|
|
? error.message
|
|
: "The input could not be parsed.",
|
|
diagnostics:
|
|
error instanceof DataToolsError
|
|
? error.diagnostics
|
|
: [
|
|
{
|
|
code: "parse.unknown",
|
|
message:
|
|
error instanceof Error
|
|
? error.message
|
|
: "Unknown parser failure.",
|
|
severity: "error",
|
|
},
|
|
],
|
|
}),
|
|
},
|
|
);
|
|
|
|
export {};
|