@ricsam/isolate 0.1.10 → 0.1.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +257 -18
- package/dist/cjs/bridge/diagnostics.cjs +37 -2
- package/dist/cjs/bridge/diagnostics.cjs.map +3 -3
- package/dist/cjs/bridge/runtime-bindings.cjs +230 -51
- package/dist/cjs/bridge/runtime-bindings.cjs.map +3 -3
- package/dist/cjs/bridge/sandbox-isolate.cjs +464 -0
- package/dist/cjs/bridge/sandbox-isolate.cjs.map +10 -0
- package/dist/cjs/host/create-isolate-host.cjs +130 -25
- package/dist/cjs/host/create-isolate-host.cjs.map +3 -3
- package/dist/cjs/host/nested-host-controller.cjs +369 -0
- package/dist/cjs/host/nested-host-controller.cjs.map +10 -0
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/internal/browser-source.cjs +102 -0
- package/dist/cjs/internal/browser-source.cjs.map +10 -0
- package/dist/cjs/internal/client/connection.cjs +163 -172
- package/dist/cjs/internal/client/connection.cjs.map +3 -3
- package/dist/cjs/internal/daemon/callback-fs-handler.cjs +3 -3
- package/dist/cjs/internal/daemon/callback-fs-handler.cjs.map +3 -3
- package/dist/cjs/internal/daemon/connection.cjs +156 -13
- package/dist/cjs/internal/daemon/connection.cjs.map +3 -3
- package/dist/cjs/internal/playwright/client.cjs +4 -2
- package/dist/cjs/internal/playwright/client.cjs.map +3 -3
- package/dist/cjs/internal/playwright/handler.cjs +298 -25
- package/dist/cjs/internal/playwright/handler.cjs.map +3 -3
- package/dist/cjs/internal/playwright/index.cjs +54 -8
- package/dist/cjs/internal/playwright/index.cjs.map +3 -3
- package/dist/cjs/internal/playwright/types.cjs +3 -1
- package/dist/cjs/internal/playwright/types.cjs.map +3 -3
- package/dist/cjs/internal/protocol/codec.cjs +16 -5
- package/dist/cjs/internal/protocol/codec.cjs.map +3 -3
- package/dist/cjs/internal/protocol/marshalValue.cjs +37 -6
- package/dist/cjs/internal/protocol/marshalValue.cjs.map +3 -3
- package/dist/cjs/internal/protocol/types.cjs +2 -1
- package/dist/cjs/internal/protocol/types.cjs.map +3 -3
- package/dist/cjs/internal/runtime/index.cjs +377 -22
- package/dist/cjs/internal/runtime/index.cjs.map +3 -3
- package/dist/cjs/internal/typecheck/index.cjs +2 -1
- package/dist/cjs/internal/typecheck/index.cjs.map +3 -3
- package/dist/cjs/internal/typecheck/isolate-types.cjs +218 -13
- package/dist/cjs/internal/typecheck/isolate-types.cjs.map +3 -3
- package/dist/cjs/internal/typecheck/typecheck.cjs +2 -3
- package/dist/cjs/internal/typecheck/typecheck.cjs.map +3 -3
- package/dist/cjs/package.json +1 -1
- package/dist/cjs/playwright.cjs +76 -0
- package/dist/cjs/playwright.cjs.map +10 -0
- package/dist/cjs/runtime/namespaced-runtime.cjs +181 -0
- package/dist/cjs/runtime/namespaced-runtime.cjs.map +10 -0
- package/dist/cjs/runtime/script-runtime.cjs +14 -12
- package/dist/cjs/runtime/script-runtime.cjs.map +3 -3
- package/dist/cjs/runtime/test-runtime.cjs +113 -0
- package/dist/cjs/runtime/test-runtime.cjs.map +10 -0
- package/dist/cjs/server/app-server.cjs +16 -9
- package/dist/cjs/server/app-server.cjs.map +3 -3
- package/dist/cjs/typecheck/index.cjs +2 -1
- package/dist/cjs/typecheck/index.cjs.map +3 -3
- package/dist/mjs/bridge/diagnostics.mjs +37 -2
- package/dist/mjs/bridge/diagnostics.mjs.map +3 -3
- package/dist/mjs/bridge/runtime-bindings.mjs +233 -51
- package/dist/mjs/bridge/runtime-bindings.mjs.map +3 -3
- package/dist/mjs/bridge/sandbox-isolate.mjs +424 -0
- package/dist/mjs/bridge/sandbox-isolate.mjs.map +10 -0
- package/dist/mjs/host/create-isolate-host.mjs +132 -25
- package/dist/mjs/host/create-isolate-host.mjs.map +3 -3
- package/dist/mjs/host/nested-host-controller.mjs +333 -0
- package/dist/mjs/host/nested-host-controller.mjs.map +10 -0
- package/dist/mjs/index.mjs.map +1 -1
- package/dist/mjs/internal/browser-source.mjs +62 -0
- package/dist/mjs/internal/browser-source.mjs.map +10 -0
- package/dist/mjs/internal/client/connection.mjs +165 -173
- package/dist/mjs/internal/client/connection.mjs.map +3 -3
- package/dist/mjs/internal/daemon/callback-fs-handler.mjs +3 -3
- package/dist/mjs/internal/daemon/callback-fs-handler.mjs.map +3 -3
- package/dist/mjs/internal/daemon/connection.mjs +156 -13
- package/dist/mjs/internal/daemon/connection.mjs.map +3 -3
- package/dist/mjs/internal/playwright/client.mjs +7 -3
- package/dist/mjs/internal/playwright/client.mjs.map +3 -3
- package/dist/mjs/internal/playwright/handler.mjs +300 -26
- package/dist/mjs/internal/playwright/handler.mjs.map +3 -3
- package/dist/mjs/internal/playwright/index.mjs +59 -9
- package/dist/mjs/internal/playwright/index.mjs.map +3 -3
- package/dist/mjs/internal/playwright/types.mjs +3 -1
- package/dist/mjs/internal/playwright/types.mjs.map +3 -3
- package/dist/mjs/internal/protocol/codec.mjs +16 -5
- package/dist/mjs/internal/protocol/codec.mjs.map +3 -3
- package/dist/mjs/internal/protocol/marshalValue.mjs +38 -6
- package/dist/mjs/internal/protocol/marshalValue.mjs.map +3 -3
- package/dist/mjs/internal/protocol/types.mjs +2 -1
- package/dist/mjs/internal/protocol/types.mjs.map +3 -3
- package/dist/mjs/internal/runtime/index.mjs +377 -22
- package/dist/mjs/internal/runtime/index.mjs.map +3 -3
- package/dist/mjs/internal/typecheck/index.mjs +3 -1
- package/dist/mjs/internal/typecheck/index.mjs.map +3 -3
- package/dist/mjs/internal/typecheck/isolate-types.mjs +218 -13
- package/dist/mjs/internal/typecheck/isolate-types.mjs.map +3 -3
- package/dist/mjs/internal/typecheck/typecheck.mjs +2 -3
- package/dist/mjs/internal/typecheck/typecheck.mjs.map +3 -3
- package/dist/mjs/package.json +1 -1
- package/dist/mjs/playwright.mjs +47 -0
- package/dist/mjs/playwright.mjs.map +10 -0
- package/dist/mjs/runtime/namespaced-runtime.mjs +143 -0
- package/dist/mjs/runtime/namespaced-runtime.mjs.map +10 -0
- package/dist/mjs/runtime/script-runtime.mjs +16 -12
- package/dist/mjs/runtime/script-runtime.mjs.map +3 -3
- package/dist/mjs/runtime/test-runtime.mjs +78 -0
- package/dist/mjs/runtime/test-runtime.mjs.map +10 -0
- package/dist/mjs/server/app-server.mjs +23 -11
- package/dist/mjs/server/app-server.mjs.map +3 -3
- package/dist/mjs/typecheck/index.mjs +2 -1
- package/dist/mjs/typecheck/index.mjs.map +3 -3
- package/dist/types/bridge/diagnostics.d.ts +6 -1
- package/dist/types/bridge/runtime-bindings.d.ts +5 -1
- package/dist/types/bridge/sandbox-isolate.d.ts +21 -0
- package/dist/types/host/nested-host-controller.d.ts +15 -0
- package/dist/types/index.d.ts +1 -1
- package/dist/types/internal/browser-source.d.ts +10 -0
- package/dist/types/internal/client/types.d.ts +9 -0
- package/dist/types/internal/daemon/types.d.ts +0 -2
- package/dist/types/internal/playwright/client.d.ts +2 -2
- package/dist/types/internal/playwright/handler.d.ts +27 -4
- package/dist/types/internal/playwright/index.d.ts +2 -2
- package/dist/types/internal/playwright/types.d.ts +33 -1
- package/dist/types/internal/protocol/codec.d.ts +12 -2
- package/dist/types/internal/protocol/marshalValue.d.ts +3 -2
- package/dist/types/internal/protocol/types.d.ts +33 -2
- package/dist/types/internal/runtime/index.d.ts +5 -0
- package/dist/types/internal/typecheck/index.d.ts +1 -1
- package/dist/types/internal/typecheck/isolate-types.d.ts +6 -4
- package/dist/types/internal/typecheck/typecheck.d.ts +1 -1
- package/dist/types/playwright.d.ts +26 -0
- package/dist/types/runtime/namespaced-runtime.d.ts +11 -0
- package/dist/types/runtime/script-runtime.d.ts +2 -1
- package/dist/types/runtime/test-runtime.d.ts +4 -0
- package/dist/types/server/app-server.d.ts +2 -1
- package/dist/types/types.d.ts +75 -33
- package/package.json +8 -3
- package/dist/cjs/browser/browser-runtime.cjs +0 -157
- package/dist/cjs/browser/browser-runtime.cjs.map +0 -10
- package/dist/mjs/browser/browser-runtime.mjs +0 -93
- package/dist/mjs/browser/browser-runtime.mjs.map +0 -10
- package/dist/types/browser/browser-runtime.d.ts +0 -3
|
@@ -69,7 +69,9 @@ __export(exports_runtime_bindings, {
|
|
|
69
69
|
});
|
|
70
70
|
module.exports = __toCommonJS(exports_runtime_bindings);
|
|
71
71
|
var import_node_path = __toESM(require("node:path"));
|
|
72
|
+
var import_client = require("../internal/playwright/client.cjs");
|
|
72
73
|
var import_request_context = require("./request-context.cjs");
|
|
74
|
+
var import_sandbox_isolate = require("./sandbox-isolate.cjs");
|
|
73
75
|
function createAbortError(reason) {
|
|
74
76
|
if (reason instanceof Error) {
|
|
75
77
|
return reason;
|
|
@@ -171,11 +173,30 @@ async function normalizeModuleResolveResult(specifier, result, fallbackResolveDi
|
|
|
171
173
|
};
|
|
172
174
|
}
|
|
173
175
|
function isAsyncGeneratorFunction(handler) {
|
|
174
|
-
return handler.constructor.name === "AsyncGeneratorFunction";
|
|
176
|
+
return handler.constructor.name === "AsyncGeneratorFunction" || handler.__isolateCallbackKind === "asyncGenerator";
|
|
175
177
|
}
|
|
176
|
-
function
|
|
178
|
+
function isResponseDescriptor(value) {
|
|
179
|
+
return Boolean(value && typeof value === "object" && value.__type === "ResponseRef" && Array.isArray(value.headers));
|
|
180
|
+
}
|
|
181
|
+
function normalizeFetchResponse(value) {
|
|
182
|
+
if (value instanceof Response) {
|
|
183
|
+
return value;
|
|
184
|
+
}
|
|
185
|
+
if (isResponseDescriptor(value)) {
|
|
186
|
+
const body = value.body ? new Uint8Array(value.body) : null;
|
|
187
|
+
return new Response(body, {
|
|
188
|
+
status: value.status,
|
|
189
|
+
statusText: value.statusText,
|
|
190
|
+
headers: value.headers
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
throw new TypeError("Fetch bindings must return a Response.");
|
|
194
|
+
}
|
|
195
|
+
function createRuntimeBindingsAdapter(bindings, getRuntimeId, diagnostics, options) {
|
|
177
196
|
const contextFactory = createHostCallContextFactory(getRuntimeId);
|
|
178
|
-
const moduleLoader = createModuleLoader(bindings.modules, contextFactory.createHostCallContext, diagnostics);
|
|
197
|
+
const moduleLoader = createModuleLoader(bindings.modules, contextFactory.createHostCallContext, diagnostics, options?.nestedHost);
|
|
198
|
+
const customFunctions = createCustomFunctions(bindings.tools, options?.nestedHost, contextFactory.createHostCallContext, diagnostics);
|
|
199
|
+
const browserPlaywright = createBrowserPlaywrightOptions(bindings.browser, contextFactory.createHostCallContext);
|
|
179
200
|
return {
|
|
180
201
|
runtimeOptions: {
|
|
181
202
|
console: bindings.console?.onEntry ? {
|
|
@@ -195,7 +216,7 @@ function createRuntimeBindingsAdapter(bindings, getRuntimeId, diagnostics) {
|
|
|
195
216
|
body: init.rawBody ? init.rawBody.slice(0) : null,
|
|
196
217
|
signal: context.signal
|
|
197
218
|
});
|
|
198
|
-
return await bindings.fetch(request, context);
|
|
219
|
+
return normalizeFetchResponse(await bindings.fetch(request, context));
|
|
199
220
|
} finally {
|
|
200
221
|
diagnostics.pendingFetches -= 1;
|
|
201
222
|
diagnostics.activeResources -= 1;
|
|
@@ -246,12 +267,12 @@ function createRuntimeBindingsAdapter(bindings, getRuntimeId, diagnostics) {
|
|
|
246
267
|
diagnostics.activeResources -= 1;
|
|
247
268
|
}
|
|
248
269
|
} : undefined,
|
|
249
|
-
mkdir: bindings.files.mkdir ? async (dirPath,
|
|
270
|
+
mkdir: bindings.files.mkdir ? async (dirPath, options2) => {
|
|
250
271
|
diagnostics.pendingFiles += 1;
|
|
251
272
|
diagnostics.activeResources += 1;
|
|
252
273
|
try {
|
|
253
274
|
const context = contextFactory.createHostCallContext(`files:mkdir:${crypto.randomUUID()}`);
|
|
254
|
-
return await bindings.files.mkdir(dirPath,
|
|
275
|
+
return await bindings.files.mkdir(dirPath, options2, context);
|
|
255
276
|
} finally {
|
|
256
277
|
diagnostics.pendingFiles -= 1;
|
|
257
278
|
diagnostics.activeResources -= 1;
|
|
@@ -292,62 +313,38 @@ function createRuntimeBindingsAdapter(bindings, getRuntimeId, diagnostics) {
|
|
|
292
313
|
} : undefined
|
|
293
314
|
} : undefined,
|
|
294
315
|
moduleLoader,
|
|
295
|
-
customFunctions
|
|
296
|
-
|
|
297
|
-
return [
|
|
298
|
-
name,
|
|
299
|
-
{
|
|
300
|
-
type: "asyncIterator",
|
|
301
|
-
fn: (...args) => {
|
|
302
|
-
diagnostics.pendingTools += 1;
|
|
303
|
-
diagnostics.activeResources += 1;
|
|
304
|
-
const context = contextFactory.createHostCallContext(`tool:${name}:${crypto.randomUUID()}`);
|
|
305
|
-
const iterator = handler(...args, context);
|
|
306
|
-
return async function* () {
|
|
307
|
-
try {
|
|
308
|
-
yield* iterator;
|
|
309
|
-
} finally {
|
|
310
|
-
diagnostics.pendingTools -= 1;
|
|
311
|
-
diagnostics.activeResources -= 1;
|
|
312
|
-
}
|
|
313
|
-
}();
|
|
314
|
-
}
|
|
315
|
-
}
|
|
316
|
-
];
|
|
317
|
-
}
|
|
318
|
-
return [
|
|
319
|
-
name,
|
|
320
|
-
{
|
|
321
|
-
type: "async",
|
|
322
|
-
fn: async (...args) => {
|
|
323
|
-
diagnostics.pendingTools += 1;
|
|
324
|
-
diagnostics.activeResources += 1;
|
|
325
|
-
try {
|
|
326
|
-
const context = contextFactory.createHostCallContext(`tool:${name}:${crypto.randomUUID()}`);
|
|
327
|
-
return await handler(...args, context);
|
|
328
|
-
} finally {
|
|
329
|
-
diagnostics.pendingTools -= 1;
|
|
330
|
-
diagnostics.activeResources -= 1;
|
|
331
|
-
}
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
];
|
|
335
|
-
})) : undefined
|
|
316
|
+
customFunctions,
|
|
317
|
+
playwright: browserPlaywright
|
|
336
318
|
},
|
|
337
319
|
abort: contextFactory.abort,
|
|
338
320
|
reset: contextFactory.reset
|
|
339
321
|
};
|
|
340
322
|
}
|
|
341
|
-
function createModuleLoader(resolver, createHostCallContext, diagnostics) {
|
|
342
|
-
if (!resolver) {
|
|
323
|
+
function createModuleLoader(resolver, createHostCallContext, diagnostics, nestedHost) {
|
|
324
|
+
if (!resolver && !nestedHost) {
|
|
343
325
|
return;
|
|
344
326
|
}
|
|
345
327
|
return async (specifier, importer) => {
|
|
328
|
+
if (nestedHost && specifier === import_sandbox_isolate.SANDBOX_ISOLATE_MODULE_SPECIFIER) {
|
|
329
|
+
return {
|
|
330
|
+
code: import_sandbox_isolate.SANDBOX_ISOLATE_MODULE_SOURCE,
|
|
331
|
+
filename: "isolate-sandbox.js",
|
|
332
|
+
resolveDir: "/",
|
|
333
|
+
static: true
|
|
334
|
+
};
|
|
335
|
+
}
|
|
336
|
+
if (!resolver) {
|
|
337
|
+
throw new Error(`Unable to resolve module: ${specifier}`);
|
|
338
|
+
}
|
|
346
339
|
diagnostics.pendingModules += 1;
|
|
347
340
|
diagnostics.activeResources += 1;
|
|
348
341
|
try {
|
|
349
342
|
const context = createHostCallContext(`module:${crypto.randomUUID()}`);
|
|
350
|
-
|
|
343
|
+
const resolved = await normalizeExplicitModuleResult(specifier, resolver.resolve(specifier, importer, context), importer.resolveDir);
|
|
344
|
+
if (!resolved) {
|
|
345
|
+
throw new Error(`Unable to resolve module: ${specifier}`);
|
|
346
|
+
}
|
|
347
|
+
return resolved;
|
|
351
348
|
} finally {
|
|
352
349
|
diagnostics.pendingModules -= 1;
|
|
353
350
|
diagnostics.activeResources -= 1;
|
|
@@ -363,5 +360,187 @@ async function tryResolveModule(resolver, specifier, importer, context) {
|
|
|
363
360
|
async function normalizeExplicitModuleResult(specifier, result, fallbackResolveDir) {
|
|
364
361
|
return normalizeModuleResolveResult(specifier, result, fallbackResolveDir);
|
|
365
362
|
}
|
|
363
|
+
function createBrowserPlaywrightOptions(browser, createHostCallContext) {
|
|
364
|
+
if (!browser) {
|
|
365
|
+
return;
|
|
366
|
+
}
|
|
367
|
+
const hasHandler = typeof browser.handler === "function";
|
|
368
|
+
const hasFactoryBindings = typeof browser.createContext === "function" || typeof browser.createPage === "function" || typeof browser.readFile === "function" || typeof browser.writeFile === "function";
|
|
369
|
+
if (hasHandler && hasFactoryBindings) {
|
|
370
|
+
throw new Error("browser bindings must use either handler-first or factory-first mode, not both.");
|
|
371
|
+
}
|
|
372
|
+
if (hasHandler) {
|
|
373
|
+
return {
|
|
374
|
+
handler: browser.handler,
|
|
375
|
+
hasDefaultPage: false,
|
|
376
|
+
console: browser.captureConsole ?? false,
|
|
377
|
+
onEvent: browser.onEvent ? (event) => {
|
|
378
|
+
const context = createHostCallContext(`browser:event:${event.type}:${crypto.randomUUID()}`);
|
|
379
|
+
browser.onEvent?.(event, context);
|
|
380
|
+
} : undefined
|
|
381
|
+
};
|
|
382
|
+
}
|
|
383
|
+
return {
|
|
384
|
+
handler: import_client.createPlaywrightFactoryHandler({
|
|
385
|
+
createContext: browser.createContext ? async (options) => {
|
|
386
|
+
const context = createHostCallContext(`browser:createContext:${crypto.randomUUID()}`);
|
|
387
|
+
return await browser.createContext(options, context);
|
|
388
|
+
} : undefined,
|
|
389
|
+
createPage: browser.createPage ? async (contextHandle) => {
|
|
390
|
+
const context = createHostCallContext(`browser:createPage:${crypto.randomUUID()}`);
|
|
391
|
+
return await browser.createPage(contextHandle, context);
|
|
392
|
+
} : undefined,
|
|
393
|
+
readFile: browser.readFile ? async (filePath) => {
|
|
394
|
+
const context = createHostCallContext(`browser:readFile:${crypto.randomUUID()}`);
|
|
395
|
+
const buffer = await browser.readFile(filePath, context);
|
|
396
|
+
return {
|
|
397
|
+
name: import_node_path.default.basename(filePath),
|
|
398
|
+
mimeType: "application/octet-stream",
|
|
399
|
+
buffer
|
|
400
|
+
};
|
|
401
|
+
} : undefined,
|
|
402
|
+
writeFile: browser.writeFile ? async (filePath, data) => {
|
|
403
|
+
const context = createHostCallContext(`browser:writeFile:${crypto.randomUUID()}`);
|
|
404
|
+
await browser.writeFile(filePath, data, context);
|
|
405
|
+
} : undefined
|
|
406
|
+
}),
|
|
407
|
+
hasDefaultPage: false,
|
|
408
|
+
console: browser.captureConsole ?? false,
|
|
409
|
+
onEvent: browser.onEvent ? (event) => {
|
|
410
|
+
const context = createHostCallContext(`browser:event:${event.type}:${crypto.randomUUID()}`);
|
|
411
|
+
browser.onEvent?.(event, context);
|
|
412
|
+
} : undefined
|
|
413
|
+
};
|
|
414
|
+
}
|
|
415
|
+
function createCustomFunctions(tools, nestedHost, createHostCallContext, diagnostics) {
|
|
416
|
+
const definitions = {};
|
|
417
|
+
if (tools) {
|
|
418
|
+
for (const [name, handler] of Object.entries(tools)) {
|
|
419
|
+
if (isAsyncGeneratorFunction(handler)) {
|
|
420
|
+
definitions[name] = {
|
|
421
|
+
type: "asyncIterator",
|
|
422
|
+
fn: (...args) => {
|
|
423
|
+
diagnostics.pendingTools += 1;
|
|
424
|
+
diagnostics.activeResources += 1;
|
|
425
|
+
const context = createHostCallContext(`tool:${name}:${crypto.randomUUID()}`);
|
|
426
|
+
const iteratorResult = handler(...args, context);
|
|
427
|
+
return async function* () {
|
|
428
|
+
const iterator = await iteratorResult;
|
|
429
|
+
const iterable = iterator && typeof iterator[Symbol.asyncIterator] === "function" ? iterator : iterator && typeof iterator.next === "function" ? {
|
|
430
|
+
[Symbol.asyncIterator]() {
|
|
431
|
+
return iterator;
|
|
432
|
+
}
|
|
433
|
+
} : null;
|
|
434
|
+
try {
|
|
435
|
+
if (!iterable) {
|
|
436
|
+
throw new TypeError(`Tool ${name} did not return an async iterator.`);
|
|
437
|
+
}
|
|
438
|
+
yield* iterable;
|
|
439
|
+
} finally {
|
|
440
|
+
diagnostics.pendingTools -= 1;
|
|
441
|
+
diagnostics.activeResources -= 1;
|
|
442
|
+
}
|
|
443
|
+
}();
|
|
444
|
+
}
|
|
445
|
+
};
|
|
446
|
+
continue;
|
|
447
|
+
}
|
|
448
|
+
definitions[name] = {
|
|
449
|
+
type: "async",
|
|
450
|
+
fn: async (...args) => {
|
|
451
|
+
diagnostics.pendingTools += 1;
|
|
452
|
+
diagnostics.activeResources += 1;
|
|
453
|
+
try {
|
|
454
|
+
const context = createHostCallContext(`tool:${name}:${crypto.randomUUID()}`);
|
|
455
|
+
return await handler(...args, context);
|
|
456
|
+
} finally {
|
|
457
|
+
diagnostics.pendingTools -= 1;
|
|
458
|
+
diagnostics.activeResources -= 1;
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
};
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
if (nestedHost) {
|
|
465
|
+
const reservedNames = [
|
|
466
|
+
"__isolateHost_createHost",
|
|
467
|
+
"__isolateHost_closeHost",
|
|
468
|
+
"__isolateHost_hostDiagnostics",
|
|
469
|
+
"__isolateHost_createResource",
|
|
470
|
+
"__isolateHost_disposeNamespace",
|
|
471
|
+
"__isolateHost_callResource",
|
|
472
|
+
"__isolateHost_drainCallbacks"
|
|
473
|
+
];
|
|
474
|
+
for (const name of reservedNames) {
|
|
475
|
+
if (definitions[name]) {
|
|
476
|
+
throw new Error(`Tool name ${name} is reserved for internal sandbox host bindings.`);
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
definitions.__isolateHost_createHost = {
|
|
480
|
+
type: "async",
|
|
481
|
+
fn: async () => {
|
|
482
|
+
const context = createHostCallContext(`nestedHost:createHost:${crypto.randomUUID()}`);
|
|
483
|
+
return await nestedHost.createHost(context);
|
|
484
|
+
}
|
|
485
|
+
};
|
|
486
|
+
definitions.__isolateHost_closeHost = {
|
|
487
|
+
type: "async",
|
|
488
|
+
fn: async (...args) => {
|
|
489
|
+
const hostId = args[0];
|
|
490
|
+
const context = createHostCallContext(`nestedHost:closeHost:${crypto.randomUUID()}`);
|
|
491
|
+
await nestedHost.closeHost(hostId, context);
|
|
492
|
+
}
|
|
493
|
+
};
|
|
494
|
+
definitions.__isolateHost_hostDiagnostics = {
|
|
495
|
+
type: "async",
|
|
496
|
+
fn: async (...args) => {
|
|
497
|
+
const hostId = args[0];
|
|
498
|
+
const context = createHostCallContext(`nestedHost:diagnostics:${crypto.randomUUID()}`);
|
|
499
|
+
return await nestedHost.diagnostics(hostId, context);
|
|
500
|
+
}
|
|
501
|
+
};
|
|
502
|
+
definitions.__isolateHost_createResource = {
|
|
503
|
+
type: "async",
|
|
504
|
+
fn: async (...args) => {
|
|
505
|
+
const hostId = args[0];
|
|
506
|
+
const kind = args[1];
|
|
507
|
+
const resourceOptions = args[2];
|
|
508
|
+
const context = createHostCallContext(`nestedHost:createResource:${kind}:${crypto.randomUUID()}`);
|
|
509
|
+
return await nestedHost.createResource(hostId, kind, resourceOptions, context);
|
|
510
|
+
}
|
|
511
|
+
};
|
|
512
|
+
definitions.__isolateHost_disposeNamespace = {
|
|
513
|
+
type: "async",
|
|
514
|
+
fn: async (...args) => {
|
|
515
|
+
const hostId = args[0];
|
|
516
|
+
const key = args[1];
|
|
517
|
+
const options = args[2] ?? undefined;
|
|
518
|
+
const context = createHostCallContext(`nestedHost:disposeNamespace:${crypto.randomUUID()}`);
|
|
519
|
+
await nestedHost.disposeNamespace(hostId, key, options, context);
|
|
520
|
+
}
|
|
521
|
+
};
|
|
522
|
+
definitions.__isolateHost_callResource = {
|
|
523
|
+
type: "async",
|
|
524
|
+
fn: async (...args) => {
|
|
525
|
+
const kind = args[0];
|
|
526
|
+
const resourceId = args[1];
|
|
527
|
+
const method = args[2];
|
|
528
|
+
const methodArgs = args[3];
|
|
529
|
+
const context = createHostCallContext(`nestedHost:callResource:${kind}:${method}:${crypto.randomUUID()}`);
|
|
530
|
+
return await nestedHost.callResource(kind, resourceId, method, Array.isArray(methodArgs) ? methodArgs : [], context);
|
|
531
|
+
}
|
|
532
|
+
};
|
|
533
|
+
definitions.__isolateHost_drainCallbacks = {
|
|
534
|
+
type: "async",
|
|
535
|
+
fn: async (...args) => {
|
|
536
|
+
const callback = args[0];
|
|
537
|
+
if (typeof callback === "function") {
|
|
538
|
+
await callback();
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
};
|
|
542
|
+
}
|
|
543
|
+
return Object.keys(definitions).length > 0 ? definitions : undefined;
|
|
544
|
+
}
|
|
366
545
|
|
|
367
|
-
//# debugId=
|
|
546
|
+
//# debugId=993DC7FF17BB016D64756E2164756E21
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/bridge/runtime-bindings.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"import path from \"node:path\";\nimport type { RuntimeOptions } from \"../internal/client/index.cjs\";\nimport type { ModuleLoaderCallback } from \"../internal/protocol/index.cjs\";\nimport { getRequestContext } from \"./request-context.cjs\";\nimport type {\n HostBindings,\n HostCallContext,\n ModuleResolveResult,\n ModuleResolver,\n ModuleSource,\n ToolHandler,\n} from \"../types.cjs\";\nimport type { MutableRuntimeDiagnostics } from \"./diagnostics.cjs\";\n\nexport interface RuntimeBindingsAdapter {\n runtimeOptions: RuntimeOptions;\n abort(reason?: unknown): void;\n reset(reason?: unknown): void;\n}\n\nfunction createAbortError(reason?: unknown): Error {\n if (reason instanceof Error) {\n return reason;\n }\n\n const error = new Error(\n typeof reason === \"string\" ? reason : \"The operation was aborted\",\n );\n error.name = \"AbortError\";\n return error;\n}\n\nfunction createAbortSignalComposer() {\n const controllers = new Set<AbortController>();\n\n const compose = (...signals: Array<AbortSignal | undefined>): AbortSignal => {\n const activeSignals = signals.filter(\n (signal): signal is AbortSignal => signal !== undefined,\n );\n\n if (activeSignals.length === 0) {\n return AbortSignal.abort(createAbortError());\n }\n\n const aborted = activeSignals.find((signal) => signal.aborted);\n if (aborted) {\n return AbortSignal.abort(aborted.reason ?? createAbortError());\n }\n\n if (activeSignals.length === 1) {\n return activeSignals[0]!;\n }\n\n const controller = new AbortController();\n controllers.add(controller);\n\n const cleanup = () => {\n for (const signal of activeSignals) {\n signal.removeEventListener(\"abort\", onAbort);\n }\n controllers.delete(controller);\n };\n\n const onAbort = (event: Event) => {\n cleanup();\n const signal = event.target as AbortSignal | null;\n controller.abort(signal?.reason ?? createAbortError());\n };\n\n for (const signal of activeSignals) {\n signal.addEventListener(\"abort\", onAbort, { once: true });\n }\n\n controller.signal.addEventListener(\"abort\", cleanup, { once: true });\n\n return controller.signal;\n };\n\n const abortAll = (reason?: unknown) => {\n const error = createAbortError(reason);\n for (const controller of controllers) {\n if (!controller.signal.aborted) {\n controller.abort(error);\n }\n }\n controllers.clear();\n };\n\n return { compose, abortAll };\n}\n\nfunction createHostCallContextFactory(getRuntimeId: () => string) {\n let runtimeController = new AbortController();\n const composedSignals = createAbortSignalComposer();\n\n const createHostCallContext = (\n resourceId: string,\n baseSignal?: AbortSignal,\n ): HostCallContext => {\n const requestContext = getRequestContext();\n const ownerSignal = requestContext.signal ?? runtimeController.signal;\n const signal = baseSignal\n ? composedSignals.compose(ownerSignal, baseSignal)\n : ownerSignal;\n\n return {\n signal,\n runtimeId: getRuntimeId(),\n requestId: requestContext.requestId,\n resourceId,\n metadata: requestContext.metadata,\n };\n };\n\n const abort = (reason?: unknown) => {\n if (!runtimeController.signal.aborted) {\n runtimeController.abort(createAbortError(reason));\n }\n composedSignals.abortAll(reason);\n };\n\n const reset = (reason?: unknown) => {\n abort(reason);\n runtimeController = new AbortController();\n };\n\n return { createHostCallContext, abort, reset };\n}\n\nasync function normalizeModuleResolveResult(\n specifier: string,\n result: ModuleResolveResult,\n fallbackResolveDir?: string,\n): Promise<ModuleSource | null> {\n const resolved = await result;\n if (resolved == null) {\n return null;\n }\n\n if (typeof resolved === \"string\") {\n const filename = path.posix.basename(specifier) || \"__virtual_module__.js\";\n const resolveDir = specifier.startsWith(\"/\")\n ? path.posix.dirname(specifier)\n : fallbackResolveDir ?? \"/\";\n return {\n code: resolved,\n filename,\n resolveDir,\n };\n }\n\n return {\n static: resolved.static,\n filename: resolved.filename,\n resolveDir: resolved.resolveDir,\n code: resolved.code,\n };\n}\n\nfunction isAsyncGeneratorFunction(handler: ToolHandler): boolean {\n return handler.constructor.name === \"AsyncGeneratorFunction\";\n}\n\nexport function createRuntimeBindingsAdapter(\n bindings: HostBindings,\n getRuntimeId: () => string,\n diagnostics: MutableRuntimeDiagnostics,\n): RuntimeBindingsAdapter {\n const contextFactory = createHostCallContextFactory(getRuntimeId);\n const moduleLoader = createModuleLoader(\n bindings.modules,\n contextFactory.createHostCallContext,\n diagnostics,\n );\n\n return {\n runtimeOptions: {\n console: bindings.console?.onEntry\n ? {\n onEntry: (entry) => {\n const context = contextFactory.createHostCallContext(\n `console:${crypto.randomUUID()}`,\n );\n bindings.console?.onEntry?.(entry, context);\n },\n }\n : undefined,\n fetch: bindings.fetch\n ? async (url, init) => {\n diagnostics.pendingFetches += 1;\n diagnostics.activeResources += 1;\n try {\n const context = contextFactory.createHostCallContext(\n `fetch:${crypto.randomUUID()}`,\n init.signal,\n );\n const request = new Request(url, {\n method: init.method,\n headers: init.headers,\n body: init.rawBody ? init.rawBody.slice(0) : null,\n signal: context.signal,\n });\n return await bindings.fetch!(request, context);\n } finally {\n diagnostics.pendingFetches -= 1;\n diagnostics.activeResources -= 1;\n }\n }\n : undefined,\n fs: bindings.files\n ? {\n readFile: bindings.files.readFile\n ? async (filePath: string) => {\n diagnostics.pendingFiles += 1;\n diagnostics.activeResources += 1;\n try {\n const context = contextFactory.createHostCallContext(\n `files:read:${crypto.randomUUID()}`,\n );\n return await bindings.files!.readFile!(filePath, context);\n } finally {\n diagnostics.pendingFiles -= 1;\n diagnostics.activeResources -= 1;\n }\n }\n : undefined,\n writeFile: bindings.files.writeFile\n ? async (filePath: string, data: ArrayBuffer) => {\n diagnostics.pendingFiles += 1;\n diagnostics.activeResources += 1;\n try {\n const context = contextFactory.createHostCallContext(\n `files:write:${crypto.randomUUID()}`,\n );\n return await bindings.files!.writeFile!(filePath, data, context);\n } finally {\n diagnostics.pendingFiles -= 1;\n diagnostics.activeResources -= 1;\n }\n }\n : undefined,\n unlink: bindings.files.unlink\n ? async (filePath: string) => {\n diagnostics.pendingFiles += 1;\n diagnostics.activeResources += 1;\n try {\n const context = contextFactory.createHostCallContext(\n `files:unlink:${crypto.randomUUID()}`,\n );\n return await bindings.files!.unlink!(filePath, context);\n } finally {\n diagnostics.pendingFiles -= 1;\n diagnostics.activeResources -= 1;\n }\n }\n : undefined,\n readdir: bindings.files.readdir\n ? async (dirPath: string) => {\n diagnostics.pendingFiles += 1;\n diagnostics.activeResources += 1;\n try {\n const context = contextFactory.createHostCallContext(\n `files:readdir:${crypto.randomUUID()}`,\n );\n return await bindings.files!.readdir!(dirPath, context);\n } finally {\n diagnostics.pendingFiles -= 1;\n diagnostics.activeResources -= 1;\n }\n }\n : undefined,\n mkdir: bindings.files.mkdir\n ? async (dirPath: string, options?: { recursive?: boolean }) => {\n diagnostics.pendingFiles += 1;\n diagnostics.activeResources += 1;\n try {\n const context = contextFactory.createHostCallContext(\n `files:mkdir:${crypto.randomUUID()}`,\n );\n return await bindings.files!.mkdir!(dirPath, options, context);\n } finally {\n diagnostics.pendingFiles -= 1;\n diagnostics.activeResources -= 1;\n }\n }\n : undefined,\n rmdir: bindings.files.rmdir\n ? async (dirPath: string) => {\n diagnostics.pendingFiles += 1;\n diagnostics.activeResources += 1;\n try {\n const context = contextFactory.createHostCallContext(\n `files:rmdir:${crypto.randomUUID()}`,\n );\n return await bindings.files!.rmdir!(dirPath, context);\n } finally {\n diagnostics.pendingFiles -= 1;\n diagnostics.activeResources -= 1;\n }\n }\n : undefined,\n stat: bindings.files.stat\n ? async (filePath: string) => {\n diagnostics.pendingFiles += 1;\n diagnostics.activeResources += 1;\n try {\n const context = contextFactory.createHostCallContext(\n `files:stat:${crypto.randomUUID()}`,\n );\n return await bindings.files!.stat!(filePath, context);\n } finally {\n diagnostics.pendingFiles -= 1;\n diagnostics.activeResources -= 1;\n }\n }\n : undefined,\n rename: bindings.files.rename\n ? async (from: string, to: string) => {\n diagnostics.pendingFiles += 1;\n diagnostics.activeResources += 1;\n try {\n const context = contextFactory.createHostCallContext(\n `files:rename:${crypto.randomUUID()}`,\n );\n return await bindings.files!.rename!(from, to, context);\n } finally {\n diagnostics.pendingFiles -= 1;\n diagnostics.activeResources -= 1;\n }\n }\n : undefined,\n }\n : undefined,\n moduleLoader,\n customFunctions: bindings.tools\n ? Object.fromEntries(\n Object.entries(bindings.tools).map(([name, handler]) => {\n if (isAsyncGeneratorFunction(handler)) {\n return [\n name,\n {\n type: \"asyncIterator\" as const,\n fn: (...args: unknown[]) => {\n diagnostics.pendingTools += 1;\n diagnostics.activeResources += 1;\n const context = contextFactory.createHostCallContext(\n `tool:${name}:${crypto.randomUUID()}`,\n );\n const iterator = handler(\n ...args,\n context,\n ) as AsyncGenerator<unknown, unknown, unknown>;\n return (async function* () {\n try {\n yield* iterator;\n } finally {\n diagnostics.pendingTools -= 1;\n diagnostics.activeResources -= 1;\n }\n })();\n },\n },\n ];\n }\n\n return [\n name,\n {\n type: \"async\" as const,\n fn: async (...args: unknown[]) => {\n diagnostics.pendingTools += 1;\n diagnostics.activeResources += 1;\n try {\n const context = contextFactory.createHostCallContext(\n `tool:${name}:${crypto.randomUUID()}`,\n );\n return await handler(...args, context);\n } finally {\n diagnostics.pendingTools -= 1;\n diagnostics.activeResources -= 1;\n }\n },\n },\n ];\n }),\n )\n : undefined,\n },\n abort: contextFactory.abort,\n reset: contextFactory.reset,\n };\n}\n\nfunction createModuleLoader(\n resolver: ModuleResolver | undefined,\n createHostCallContext: (\n resourceId: string,\n baseSignal?: AbortSignal,\n ) => HostCallContext,\n diagnostics: MutableRuntimeDiagnostics,\n): ModuleLoaderCallback | undefined {\n if (!resolver) {\n return undefined;\n }\n\n return async (specifier, importer) => {\n diagnostics.pendingModules += 1;\n diagnostics.activeResources += 1;\n try {\n const context = createHostCallContext(`module:${crypto.randomUUID()}`);\n return await resolver.resolve(specifier, importer, context);\n } finally {\n diagnostics.pendingModules -= 1;\n diagnostics.activeResources -= 1;\n }\n };\n}\n\nexport async function tryResolveModule(\n resolver: ModuleResolver | undefined,\n specifier: string,\n importer: { path: string; resolveDir: string },\n context: HostCallContext,\n): Promise<ModuleSource | null> {\n if (!resolver) {\n return null;\n }\n return normalizeModuleResolveResult(\n specifier,\n resolver.resolve(specifier, importer, context),\n importer.resolveDir,\n );\n}\n\nexport async function normalizeExplicitModuleResult(\n specifier: string,\n result: ModuleResolveResult,\n fallbackResolveDir?: string,\n): Promise<ModuleSource | null> {\n return normalizeModuleResolveResult(specifier, result, fallbackResolveDir);\n}\n"
|
|
5
|
+
"import path from \"node:path\";\nimport type { RuntimeOptions } from \"../internal/client/index.cjs\";\nimport type { ModuleLoaderCallback } from \"../internal/protocol/index.cjs\";\nimport { createPlaywrightFactoryHandler } from \"../internal/playwright/client.cjs\";\nimport { getRequestContext } from \"./request-context.cjs\";\nimport {\n SANDBOX_ISOLATE_MODULE_SOURCE,\n SANDBOX_ISOLATE_MODULE_SPECIFIER,\n type NestedHostBindings,\n type NestedResourceKind,\n} from \"./sandbox-isolate.cjs\";\nimport type {\n CreateAppServerOptions,\n CreateNamespacedRuntimeOptions,\n CreateRuntimeOptions,\n CreateTestRuntimeOptions,\n HostBindings,\n HostCallContext,\n ModuleResolveResult,\n ModuleResolver,\n ModuleSource,\n ToolHandler,\n} from \"../types.cjs\";\nimport type { MutableRuntimeDiagnostics } from \"./diagnostics.cjs\";\n\nexport interface RuntimeBindingsAdapter {\n runtimeOptions: RuntimeOptions;\n abort(reason?: unknown): void;\n reset(reason?: unknown): void;\n}\n\nexport interface RuntimeBindingsAdapterOptions {\n nestedHost?: NestedHostBindings;\n}\n\ninterface ResponseDescriptor {\n __type: \"ResponseRef\";\n status: number;\n statusText: string;\n headers: Array<[string, string]>;\n body?: number[] | null;\n}\n\ninterface AsyncIteratorMarkedHandler {\n __isolateCallbackKind?: \"asyncGenerator\";\n}\n\nfunction createAbortError(reason?: unknown): Error {\n if (reason instanceof Error) {\n return reason;\n }\n\n const error = new Error(\n typeof reason === \"string\" ? reason : \"The operation was aborted\",\n );\n error.name = \"AbortError\";\n return error;\n}\n\nfunction createAbortSignalComposer() {\n const controllers = new Set<AbortController>();\n\n const compose = (...signals: Array<AbortSignal | undefined>): AbortSignal => {\n const activeSignals = signals.filter(\n (signal): signal is AbortSignal => signal !== undefined,\n );\n\n if (activeSignals.length === 0) {\n return AbortSignal.abort(createAbortError());\n }\n\n const aborted = activeSignals.find((signal) => signal.aborted);\n if (aborted) {\n return AbortSignal.abort(aborted.reason ?? createAbortError());\n }\n\n if (activeSignals.length === 1) {\n return activeSignals[0]!;\n }\n\n const controller = new AbortController();\n controllers.add(controller);\n\n const cleanup = () => {\n for (const signal of activeSignals) {\n signal.removeEventListener(\"abort\", onAbort);\n }\n controllers.delete(controller);\n };\n\n const onAbort = (event: Event) => {\n cleanup();\n const signal = event.target as AbortSignal | null;\n controller.abort(signal?.reason ?? createAbortError());\n };\n\n for (const signal of activeSignals) {\n signal.addEventListener(\"abort\", onAbort, { once: true });\n }\n\n controller.signal.addEventListener(\"abort\", cleanup, { once: true });\n\n return controller.signal;\n };\n\n const abortAll = (reason?: unknown) => {\n const error = createAbortError(reason);\n for (const controller of controllers) {\n if (!controller.signal.aborted) {\n controller.abort(error);\n }\n }\n controllers.clear();\n };\n\n return { compose, abortAll };\n}\n\nfunction createHostCallContextFactory(getRuntimeId: () => string) {\n let runtimeController = new AbortController();\n const composedSignals = createAbortSignalComposer();\n\n const createHostCallContext = (\n resourceId: string,\n baseSignal?: AbortSignal,\n ): HostCallContext => {\n const requestContext = getRequestContext();\n const ownerSignal = requestContext.signal ?? runtimeController.signal;\n const signal = baseSignal\n ? composedSignals.compose(ownerSignal, baseSignal)\n : ownerSignal;\n\n return {\n signal,\n runtimeId: getRuntimeId(),\n requestId: requestContext.requestId,\n resourceId,\n metadata: requestContext.metadata,\n };\n };\n\n const abort = (reason?: unknown) => {\n if (!runtimeController.signal.aborted) {\n runtimeController.abort(createAbortError(reason));\n }\n composedSignals.abortAll(reason);\n };\n\n const reset = (reason?: unknown) => {\n abort(reason);\n runtimeController = new AbortController();\n };\n\n return { createHostCallContext, abort, reset };\n}\n\nasync function normalizeModuleResolveResult(\n specifier: string,\n result: ModuleResolveResult,\n fallbackResolveDir?: string,\n): Promise<ModuleSource | null> {\n const resolved = await result;\n if (resolved == null) {\n return null;\n }\n\n if (typeof resolved === \"string\") {\n const filename = path.posix.basename(specifier) || \"__virtual_module__.js\";\n const resolveDir = specifier.startsWith(\"/\")\n ? path.posix.dirname(specifier)\n : fallbackResolveDir ?? \"/\";\n return {\n code: resolved,\n filename,\n resolveDir,\n };\n }\n\n return {\n static: resolved.static,\n filename: resolved.filename,\n resolveDir: resolved.resolveDir,\n code: resolved.code,\n };\n}\n\nfunction isAsyncGeneratorFunction(handler: ToolHandler): boolean {\n return (\n handler.constructor.name === \"AsyncGeneratorFunction\" ||\n (handler as AsyncIteratorMarkedHandler).__isolateCallbackKind ===\n \"asyncGenerator\"\n );\n}\n\nfunction isResponseDescriptor(value: unknown): value is ResponseDescriptor {\n return Boolean(\n value &&\n typeof value === \"object\" &&\n (value as { __type?: unknown }).__type === \"ResponseRef\" &&\n Array.isArray((value as { headers?: unknown }).headers),\n );\n}\n\nfunction normalizeFetchResponse(value: unknown): Response {\n if (value instanceof Response) {\n return value;\n }\n\n if (isResponseDescriptor(value)) {\n const body = value.body ? new Uint8Array(value.body) : null;\n return new Response(body, {\n status: value.status,\n statusText: value.statusText,\n headers: value.headers,\n });\n }\n\n throw new TypeError(\"Fetch bindings must return a Response.\");\n}\n\nexport function createRuntimeBindingsAdapter(\n bindings: HostBindings,\n getRuntimeId: () => string,\n diagnostics: MutableRuntimeDiagnostics,\n options?: RuntimeBindingsAdapterOptions,\n): RuntimeBindingsAdapter {\n const contextFactory = createHostCallContextFactory(getRuntimeId);\n const moduleLoader = createModuleLoader(\n bindings.modules,\n contextFactory.createHostCallContext,\n diagnostics,\n options?.nestedHost,\n );\n const customFunctions = createCustomFunctions(\n bindings.tools,\n options?.nestedHost,\n contextFactory.createHostCallContext,\n diagnostics,\n );\n const browserPlaywright = createBrowserPlaywrightOptions(\n bindings.browser,\n contextFactory.createHostCallContext,\n );\n\n return {\n runtimeOptions: {\n console: bindings.console?.onEntry\n ? {\n onEntry: (entry) => {\n const context = contextFactory.createHostCallContext(\n `console:${crypto.randomUUID()}`,\n );\n bindings.console?.onEntry?.(entry, context);\n },\n }\n : undefined,\n fetch: bindings.fetch\n ? async (url, init) => {\n diagnostics.pendingFetches += 1;\n diagnostics.activeResources += 1;\n try {\n const context = contextFactory.createHostCallContext(\n `fetch:${crypto.randomUUID()}`,\n init.signal,\n );\n const request = new Request(url, {\n method: init.method,\n headers: init.headers,\n body: init.rawBody ? init.rawBody.slice(0) : null,\n signal: context.signal,\n });\n return normalizeFetchResponse(\n await bindings.fetch!(request, context),\n );\n } finally {\n diagnostics.pendingFetches -= 1;\n diagnostics.activeResources -= 1;\n }\n }\n : undefined,\n fs: bindings.files\n ? {\n readFile: bindings.files.readFile\n ? async (filePath: string) => {\n diagnostics.pendingFiles += 1;\n diagnostics.activeResources += 1;\n try {\n const context = contextFactory.createHostCallContext(\n `files:read:${crypto.randomUUID()}`,\n );\n return await bindings.files!.readFile!(filePath, context);\n } finally {\n diagnostics.pendingFiles -= 1;\n diagnostics.activeResources -= 1;\n }\n }\n : undefined,\n writeFile: bindings.files.writeFile\n ? async (filePath: string, data: ArrayBuffer) => {\n diagnostics.pendingFiles += 1;\n diagnostics.activeResources += 1;\n try {\n const context = contextFactory.createHostCallContext(\n `files:write:${crypto.randomUUID()}`,\n );\n return await bindings.files!.writeFile!(filePath, data, context);\n } finally {\n diagnostics.pendingFiles -= 1;\n diagnostics.activeResources -= 1;\n }\n }\n : undefined,\n unlink: bindings.files.unlink\n ? async (filePath: string) => {\n diagnostics.pendingFiles += 1;\n diagnostics.activeResources += 1;\n try {\n const context = contextFactory.createHostCallContext(\n `files:unlink:${crypto.randomUUID()}`,\n );\n return await bindings.files!.unlink!(filePath, context);\n } finally {\n diagnostics.pendingFiles -= 1;\n diagnostics.activeResources -= 1;\n }\n }\n : undefined,\n readdir: bindings.files.readdir\n ? async (dirPath: string) => {\n diagnostics.pendingFiles += 1;\n diagnostics.activeResources += 1;\n try {\n const context = contextFactory.createHostCallContext(\n `files:readdir:${crypto.randomUUID()}`,\n );\n return await bindings.files!.readdir!(dirPath, context);\n } finally {\n diagnostics.pendingFiles -= 1;\n diagnostics.activeResources -= 1;\n }\n }\n : undefined,\n mkdir: bindings.files.mkdir\n ? async (dirPath: string, options?: { recursive?: boolean }) => {\n diagnostics.pendingFiles += 1;\n diagnostics.activeResources += 1;\n try {\n const context = contextFactory.createHostCallContext(\n `files:mkdir:${crypto.randomUUID()}`,\n );\n return await bindings.files!.mkdir!(dirPath, options, context);\n } finally {\n diagnostics.pendingFiles -= 1;\n diagnostics.activeResources -= 1;\n }\n }\n : undefined,\n rmdir: bindings.files.rmdir\n ? async (dirPath: string) => {\n diagnostics.pendingFiles += 1;\n diagnostics.activeResources += 1;\n try {\n const context = contextFactory.createHostCallContext(\n `files:rmdir:${crypto.randomUUID()}`,\n );\n return await bindings.files!.rmdir!(dirPath, context);\n } finally {\n diagnostics.pendingFiles -= 1;\n diagnostics.activeResources -= 1;\n }\n }\n : undefined,\n stat: bindings.files.stat\n ? async (filePath: string) => {\n diagnostics.pendingFiles += 1;\n diagnostics.activeResources += 1;\n try {\n const context = contextFactory.createHostCallContext(\n `files:stat:${crypto.randomUUID()}`,\n );\n return await bindings.files!.stat!(filePath, context);\n } finally {\n diagnostics.pendingFiles -= 1;\n diagnostics.activeResources -= 1;\n }\n }\n : undefined,\n rename: bindings.files.rename\n ? async (from: string, to: string) => {\n diagnostics.pendingFiles += 1;\n diagnostics.activeResources += 1;\n try {\n const context = contextFactory.createHostCallContext(\n `files:rename:${crypto.randomUUID()}`,\n );\n return await bindings.files!.rename!(from, to, context);\n } finally {\n diagnostics.pendingFiles -= 1;\n diagnostics.activeResources -= 1;\n }\n }\n : undefined,\n }\n : undefined,\n moduleLoader,\n customFunctions,\n playwright: browserPlaywright,\n },\n abort: contextFactory.abort,\n reset: contextFactory.reset,\n };\n}\n\nfunction createModuleLoader(\n resolver: ModuleResolver | undefined,\n createHostCallContext: (\n resourceId: string,\n baseSignal?: AbortSignal,\n ) => HostCallContext,\n diagnostics: MutableRuntimeDiagnostics,\n nestedHost: NestedHostBindings | undefined,\n): ModuleLoaderCallback | undefined {\n if (!resolver && !nestedHost) {\n return undefined;\n }\n\n return async (specifier, importer) => {\n if (nestedHost && specifier === SANDBOX_ISOLATE_MODULE_SPECIFIER) {\n return {\n code: SANDBOX_ISOLATE_MODULE_SOURCE,\n filename: \"isolate-sandbox.js\",\n resolveDir: \"/\",\n static: true,\n };\n }\n\n if (!resolver) {\n throw new Error(`Unable to resolve module: ${specifier}`);\n }\n\n diagnostics.pendingModules += 1;\n diagnostics.activeResources += 1;\n try {\n const context = createHostCallContext(`module:${crypto.randomUUID()}`);\n const resolved = await normalizeExplicitModuleResult(\n specifier,\n resolver.resolve(specifier, importer, context),\n importer.resolveDir,\n );\n if (!resolved) {\n throw new Error(`Unable to resolve module: ${specifier}`);\n }\n return resolved;\n } finally {\n diagnostics.pendingModules -= 1;\n diagnostics.activeResources -= 1;\n }\n };\n}\n\nexport async function tryResolveModule(\n resolver: ModuleResolver | undefined,\n specifier: string,\n importer: { path: string; resolveDir: string },\n context: HostCallContext,\n): Promise<ModuleSource | null> {\n if (!resolver) {\n return null;\n }\n return normalizeModuleResolveResult(\n specifier,\n resolver.resolve(specifier, importer, context),\n importer.resolveDir,\n );\n}\n\nexport async function normalizeExplicitModuleResult(\n specifier: string,\n result: ModuleResolveResult,\n fallbackResolveDir?: string,\n): Promise<ModuleSource | null> {\n return normalizeModuleResolveResult(specifier, result, fallbackResolveDir);\n}\n\nfunction createBrowserPlaywrightOptions(\n browser: HostBindings[\"browser\"] | undefined,\n createHostCallContext: (\n resourceId: string,\n baseSignal?: AbortSignal,\n ) => HostCallContext,\n): RuntimeOptions[\"playwright\"] | undefined {\n if (!browser) {\n return undefined;\n }\n\n const hasHandler = typeof browser.handler === \"function\";\n const hasFactoryBindings =\n typeof browser.createContext === \"function\" ||\n typeof browser.createPage === \"function\" ||\n typeof browser.readFile === \"function\" ||\n typeof browser.writeFile === \"function\";\n\n if (hasHandler && hasFactoryBindings) {\n throw new Error(\n \"browser bindings must use either handler-first or factory-first mode, not both.\",\n );\n }\n\n if (hasHandler) {\n return {\n handler: browser.handler,\n hasDefaultPage: false,\n console: browser.captureConsole ?? false,\n onEvent: browser.onEvent\n ? (event) => {\n const context = createHostCallContext(\n `browser:event:${event.type}:${crypto.randomUUID()}`,\n );\n browser.onEvent?.(event, context);\n }\n : undefined,\n };\n }\n\n return {\n handler: createPlaywrightFactoryHandler({\n createContext: browser.createContext\n ? async (options) => {\n const context = createHostCallContext(\n `browser:createContext:${crypto.randomUUID()}`,\n );\n return await browser.createContext!(options, context);\n }\n : undefined,\n createPage: browser.createPage\n ? async (contextHandle) => {\n const context = createHostCallContext(\n `browser:createPage:${crypto.randomUUID()}`,\n );\n return await browser.createPage!(contextHandle, context);\n }\n : undefined,\n readFile: browser.readFile\n ? async (filePath) => {\n const context = createHostCallContext(\n `browser:readFile:${crypto.randomUUID()}`,\n );\n const buffer = await browser.readFile!(filePath, context);\n return {\n name: path.basename(filePath),\n mimeType: \"application/octet-stream\",\n buffer,\n };\n }\n : undefined,\n writeFile: browser.writeFile\n ? async (filePath, data) => {\n const context = createHostCallContext(\n `browser:writeFile:${crypto.randomUUID()}`,\n );\n await browser.writeFile!(filePath, data, context);\n }\n : undefined,\n }),\n hasDefaultPage: false,\n console: browser.captureConsole ?? false,\n onEvent: browser.onEvent\n ? (event) => {\n const context = createHostCallContext(\n `browser:event:${event.type}:${crypto.randomUUID()}`,\n );\n browser.onEvent?.(event, context);\n }\n : undefined,\n };\n}\n\nfunction createCustomFunctions(\n tools: HostBindings[\"tools\"] | undefined,\n nestedHost: NestedHostBindings | undefined,\n createHostCallContext: (\n resourceId: string,\n baseSignal?: AbortSignal,\n ) => HostCallContext,\n diagnostics: MutableRuntimeDiagnostics,\n): RuntimeOptions[\"customFunctions\"] {\n const definitions: NonNullable<RuntimeOptions[\"customFunctions\"]> = {};\n\n if (tools) {\n for (const [name, handler] of Object.entries(tools)) {\n if (isAsyncGeneratorFunction(handler)) {\n definitions[name] = {\n type: \"asyncIterator\",\n fn: (...args: unknown[]) => {\n diagnostics.pendingTools += 1;\n diagnostics.activeResources += 1;\n const context = createHostCallContext(\n `tool:${name}:${crypto.randomUUID()}`,\n );\n const iteratorResult = handler(\n ...args,\n context,\n ) as\n | AsyncIterable<unknown>\n | Promise<AsyncIterable<unknown>>;\n return (async function* () {\n const iterator = await iteratorResult;\n const iterable =\n iterator &&\n typeof (iterator as { [Symbol.asyncIterator]?: unknown })[\n Symbol.asyncIterator\n ] === \"function\"\n ? (iterator as AsyncIterable<unknown>)\n : iterator &&\n typeof (iterator as { next?: unknown }).next === \"function\"\n ? {\n [Symbol.asyncIterator]() {\n return iterator as unknown as AsyncIterator<unknown>;\n },\n }\n : null;\n try {\n if (!iterable) {\n throw new TypeError(\n `Tool ${name} did not return an async iterator.`,\n );\n }\n yield* iterable;\n } finally {\n diagnostics.pendingTools -= 1;\n diagnostics.activeResources -= 1;\n }\n })();\n },\n };\n continue;\n }\n\n definitions[name] = {\n type: \"async\",\n fn: async (...args: unknown[]) => {\n diagnostics.pendingTools += 1;\n diagnostics.activeResources += 1;\n try {\n const context = createHostCallContext(\n `tool:${name}:${crypto.randomUUID()}`,\n );\n return await handler(...args, context);\n } finally {\n diagnostics.pendingTools -= 1;\n diagnostics.activeResources -= 1;\n }\n },\n };\n }\n }\n\n if (nestedHost) {\n const reservedNames = [\n \"__isolateHost_createHost\",\n \"__isolateHost_closeHost\",\n \"__isolateHost_hostDiagnostics\",\n \"__isolateHost_createResource\",\n \"__isolateHost_disposeNamespace\",\n \"__isolateHost_callResource\",\n \"__isolateHost_drainCallbacks\",\n ];\n for (const name of reservedNames) {\n if (definitions[name]) {\n throw new Error(\n `Tool name ${name} is reserved for internal sandbox host bindings.`,\n );\n }\n }\n\n definitions.__isolateHost_createHost = {\n type: \"async\",\n fn: async () => {\n const context = createHostCallContext(\n `nestedHost:createHost:${crypto.randomUUID()}`,\n );\n return await nestedHost.createHost(context);\n },\n };\n definitions.__isolateHost_closeHost = {\n type: \"async\",\n fn: async (...args: unknown[]) => {\n const hostId = args[0] as string;\n const context = createHostCallContext(\n `nestedHost:closeHost:${crypto.randomUUID()}`,\n );\n await nestedHost.closeHost(hostId, context);\n },\n };\n definitions.__isolateHost_hostDiagnostics = {\n type: \"async\",\n fn: async (...args: unknown[]) => {\n const hostId = args[0] as string;\n const context = createHostCallContext(\n `nestedHost:diagnostics:${crypto.randomUUID()}`,\n );\n return await nestedHost.diagnostics(hostId, context);\n },\n };\n definitions.__isolateHost_createResource = {\n type: \"async\",\n fn: async (...args: unknown[]) => {\n const hostId = args[0] as string;\n const kind = args[1] as NestedResourceKind;\n const resourceOptions = args[2] as\n | CreateRuntimeOptions\n | CreateAppServerOptions\n | CreateTestRuntimeOptions\n | {\n key: string;\n options: CreateNamespacedRuntimeOptions;\n };\n const context = createHostCallContext(\n `nestedHost:createResource:${kind}:${crypto.randomUUID()}`,\n );\n return await nestedHost.createResource(\n hostId,\n kind,\n resourceOptions,\n context,\n );\n },\n };\n definitions.__isolateHost_disposeNamespace = {\n type: \"async\",\n fn: async (...args: unknown[]) => {\n const hostId = args[0] as string;\n const key = args[1] as string;\n const options =\n ((args[2] as { reason?: string } | null) ?? undefined);\n const context = createHostCallContext(\n `nestedHost:disposeNamespace:${crypto.randomUUID()}`,\n );\n await nestedHost.disposeNamespace(hostId, key, options, context);\n },\n };\n definitions.__isolateHost_callResource = {\n type: \"async\",\n fn: async (...args: unknown[]) => {\n const kind = args[0] as NestedResourceKind;\n const resourceId = args[1] as string;\n const method = args[2] as string;\n const methodArgs = args[3] as unknown[];\n const context = createHostCallContext(\n `nestedHost:callResource:${kind}:${method}:${crypto.randomUUID()}`,\n );\n return await nestedHost.callResource(\n kind,\n resourceId,\n method,\n Array.isArray(methodArgs) ? methodArgs : [],\n context,\n );\n },\n };\n definitions.__isolateHost_drainCallbacks = {\n type: \"async\",\n fn: async (...args: unknown[]) => {\n const callback = args[0];\n if (typeof callback === \"function\") {\n await callback();\n }\n },\n };\n }\n\n return Object.keys(definitions).length > 0 ? definitions : undefined;\n}\n"
|
|
6
6
|
],
|
|
7
|
-
"mappings": "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",
|
|
8
|
-
"debugId": "
|
|
7
|
+
"mappings": "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",
|
|
8
|
+
"debugId": "993DC7FF17BB016D64756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|