• Deserializes JSON in a worker for heavy payloads.

    Parameters

    • message: JSONDeserializeMessage

      Worker message with JSON string to deserialize.

    • activeTasks: Set<string>

      Set tracking active task IDs.

    Returns void

    Void; posts JSON_DESERIALIZE_RESULT or ERROR.

    export function handleJsonDeserialize(
    message: JSONDeserializeMessage,
    activeTasks: Set<string>,
    ): void {
    const { taskId, json, reviverKeys } = message.payload;

    activeTasks.add(taskId);

    try {
    console.info(
    `[Worker] 📝 Starting JSON deserialization for task ${taskId}`,
    );
    const startTime = performance.now();

    const reviver = reviverKeys
    ? (key: string, value: unknown) => {
    if (key === "" || reviverKeys.includes(key)) {
    return value;
    }
    return undefined;
    }
    : undefined;

    const data = JSON.parse(json, reviver);
    const deserializationTimeMs = performance.now() - startTime;

    globalThis.postMessage({
    type: "JSON_DESERIALIZE_RESULT",
    payload: {
    taskId,
    data,
    timing: {
    deserializationTimeMs,
    },
    },
    });

    console.info(
    `[Worker] ✅ JSON deserialization task ${taskId} completed (${deserializationTimeMs.toFixed(2)}ms)`,
    );
    } catch (error) {
    console.error(
    `[Worker] ❌ Error in JSON deserialization task ${taskId}:`,
    error,
    );
    globalThis.postMessage({
    type: "ERROR",
    payload: {
    taskId,
    error: getErrorDetails(error),
    },
    });
    } finally {
    activeTasks.delete(taskId);
    }
    }