@beignet/core
Version:
Core framework primitives for Beignet
36 lines • 1.42 kB
JavaScript
/**
* Plain-script fixture for `server.runServiceContext(...)`.
*
* Reproduces the crash pattern exactly: a plain script under top-level await
* that awaits an async helper which builds service work through the server.
* `createServiceContext(...)` enters the ambient frame with
* `AsyncLocalStorage.enterWith`, and resuming that frame across top-level
* await segfaults Bun 1.3.x; `runServiceContext(...)` scopes the frame with
* `AsyncLocalStorage.run` so this script must exit 0 and print the marker.
*/
import { getActiveRequestContext } from "../request-context.js";
import { createServer } from "../server.js";
import { defineServerContext } from "../server-context.js";
const appContext = defineServerContext()({
request: async ({ ports }) => ({
actor: { type: "service", id: "request" },
ports,
}),
service: ({ ports }) => ({
actor: { type: "service", id: "script-service" },
ports,
}),
});
async function runScriptWork() {
const server = await createServer({
ports: {},
context: appContext,
});
return server.runServiceContext(async (ctx) => {
const ambient = getActiveRequestContext();
return `${ctx.actor.id}:${ambient?.actor?.id ?? "no-ambient"}`;
});
}
const marker = await runScriptWork();
console.log(`run-service-context-script:${marker}`);
//# sourceMappingURL=run-service-context-script.fixture.js.map