2026-01-13 14:49:19 +01:00

32 lines
1.1 KiB
TypeScript

import type { WorkerErrorData, WorkerMessageEnvelope } from './types'
function isRecordInternal(value: unknown): value is Record<string, unknown> {
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<string, unknown> {
return isRecordInternal(value)
}