import type { WorkerErrorData, WorkerMessageEnvelope } from './types' function isRecordInternal(value: unknown): value is Record { return typeof value === 'object' && value !== null } export function isWorkerMessageEnvelope(value: unknown): value is WorkerMessageEnvelope { return isRecordInternal(value) && typeof value.type === 'string' } function readString(value: unknown): string | undefined { return typeof value === 'string' ? value : undefined } export function readWorkerErrorData(value: unknown): WorkerErrorData { if (!isRecordInternal(value)) { return { originalType: undefined, taskId: undefined, error: undefined } } return { originalType: readString(value.originalType), taskId: readString(value.taskId), error: readString(value.error) } } export function isWorkerErrorForOperation(errorData: WorkerErrorData, operation: string): boolean { if (errorData.originalType === operation) { return true } return errorData.taskId?.startsWith(operation) === true } export function isRecord(value: unknown): value is Record { return isRecordInternal(value) }