Skip to main content
Glama
compute-worker.ts2.43 kB
import { truncateForDisplay, truncateLines } from '@/src/lib/general-utils'; import { inferJsonSchema } from '@superglue/shared'; const MAX_DISPLAY_LINES = 3000; export enum TaskType { STRINGIFY = 'STRINGIFY', COMPUTE_SCHEMA = 'COMPUTE_SCHEMA', COMPUTE_PREVIEW = 'COMPUTE_PREVIEW', } export type ComputeTask = | { type: TaskType.STRINGIFY; data: any } | { type: TaskType.COMPUTE_SCHEMA; data: any } | { type: TaskType.COMPUTE_PREVIEW; data: any }; export interface ComputeRequest { id: string; task: ComputeTask; } export interface ComputeResponse { id: string; result?: any; error?: string; } const taskHandlers: Record<TaskType, (data: any) => any> = { STRINGIFY: (data: any) => { return JSON.stringify(data, null, 2); }, COMPUTE_SCHEMA: (data: any) => { const schemaObj = inferJsonSchema(data); const schemaString = truncateLines( JSON.stringify(schemaObj, null, 2), MAX_DISPLAY_LINES ); return { schema: schemaObj, displayString: schemaString, truncated: false, }; }, COMPUTE_PREVIEW: (data: any) => { const displayData = truncateForDisplay(data); const jsonString = JSON.stringify(data, null, 2); const bytes = new Blob([jsonString]).size; return { displayString: displayData.value, truncated: displayData.truncated, bytes, }; }, }; // Only set up message handler if we're actually in a worker context // @ts-ignore - checking for WorkerGlobalScope if (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope) { // Worker message handler self.onmessage = (event: MessageEvent<ComputeRequest>) => { // Validate message has required structure if (!event.data || !event.data.id || !event.data.task) { console.warn('[Worker] Received invalid message, ignoring:', event.data); return; } const { id, task } = event.data; try { const handler = taskHandlers[task.type]; if (!handler) { throw new Error(`Unknown task type: ${task.type}`); } const result = handler(task.data); const response: ComputeResponse = { id, result, }; self.postMessage(response); } catch (error) { const response: ComputeResponse = { id, error: error instanceof Error ? error.message : 'Unknown error', }; self.postMessage(response); } }; }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/superglue-ai/superglue'

If you have feedback or need assistance with the MCP directory API, please join our Discord server