import { isWorkerErrorForOperation, isWorkerMessageEnvelope, isRecord, readWorkerErrorData } from './workerMessage' export function decideCreateNotificationWorkerMessage(params: { eventData: unknown expectedEventId: string }): | { status: 'ignore' } | { status: 'resolve' } | { status: 'reject'; message: string } { if (!isWorkerMessageEnvelope(params.eventData)) { return { status: 'ignore' } } const responseType = params.eventData.type const responseData = params.eventData.data if (responseType === 'CREATE_NOTIFICATION_SUCCESS') { if (!isRecord(responseData) || responseData.eventId !== params.expectedEventId) { return { status: 'ignore' } } return { status: 'resolve' } } if (responseType !== 'ERROR') { return { status: 'ignore' } } const errorData = readWorkerErrorData(responseData) if (!isWorkerErrorForOperation(errorData, 'CREATE_NOTIFICATION')) { return { status: 'ignore' } } return { status: 'reject', message: errorData.error ?? 'Write worker error' } }