MCPcopy Create free account
hub / github.com/InsForge/InsForge / executeInWorker

Function executeInWorker

functions/server.ts:152–248  ·  view source on GitHub ↗
(code: string, request: Request)

Source from the content-addressed store, hash-verified

150
151// Execute function in isolated worker
152async function executeInWorker(code: string, request: Request): Promise<Response> {
153 // Get worker template
154 const template = await getWorkerTemplateCode();
155
156 // Fetch all function secrets
157 const secrets = await getFunctionSecrets();
158
159 // Create blob for worker
160 const workerBlob = new Blob([template], { type: 'application/javascript' });
161 const workerUrl = URL.createObjectURL(workerBlob);
162
163 return new Promise(async (resolve) => {
164 const worker = new Worker(workerUrl, {
165 type: 'module',
166 deno: {
167 permissions: {
168 // RESTRICTED: Native environment access is disabled to shield host secrets.
169 // Secrets are passed explicitly via message payload.
170 env: false,
171 // SDK/External REQUIREMENT: Allow network access for API connectivity and external integrations.
172 net: true,
173 read: false,
174 write: false,
175 run: false,
176 ffi: false,
177 sys: false,
178 import: false,
179 hrtime: false,
180 },
181 },
182 });
183
184 // Set timeout for worker execution
185 const timeout = setTimeout(() => {
186 worker.terminate();
187 URL.revokeObjectURL(workerUrl);
188 resolve(
189 new Response(JSON.stringify({ error: 'Function timeout' }), {
190 status: 504,
191 headers: { 'Content-Type': 'application/json' },
192 })
193 );
194 }, WORKER_TIMEOUT_MS);
195
196 // Handle worker response
197 worker.onmessage = (e) => {
198 clearTimeout(timeout);
199 worker.terminate();
200 URL.revokeObjectURL(workerUrl);
201
202 if (e.data.success) {
203 const { response } = e.data;
204 // The worker now properly sends null for bodyless responses
205 resolve(
206 new Response(response.body, {
207 status: response.status,
208 statusText: response.statusText,
209 headers: response.headers,

Callers 1

server.tsFile · 0.85

Calls 3

getWorkerTemplateCodeFunction · 0.85
getFunctionSecretsFunction · 0.85
textMethod · 0.80

Tested by

no test coverage detected