This commit is contained in:
Dax Raad
2025-05-30 20:47:56 -04:00
parent 1d5db25ed4
commit fcdff9f578
178 changed files with 765 additions and 3382 deletions
+25
View File
@@ -0,0 +1,25 @@
import { AsyncLocalStorage } from "async_hooks";
export namespace Context {
export class NotFound extends Error {
constructor(public readonly name: string) {
super(`No context found for ${name}`);
}
}
export function create<T>(name: string) {
const storage = new AsyncLocalStorage<T>();
return {
use() {
const result = storage.getStore();
if (!result) {
throw new NotFound(name);
}
return result;
},
provide<R>(value: T, fn: () => R) {
return storage.run<R>(value, fn);
},
};
}
}