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); }, }; } }