import { AsyncLocalStorage } from "node:async_hooks" export namespace Context { export class NotFound extends Error {} export function create() { const storage = new AsyncLocalStorage() return { use() { const result = storage.getStore() if (!result) { throw new NotFound() } return result }, provide(value: T, fn: () => R) { return storage.run(value, fn) }, } } }