@modern-js/server-core
Version:
A Progressive React Framework for modern web development.
41 lines (40 loc) • 953 B
JavaScript
import * as ah from "async_hooks";
const createStorage = () => {
let storage;
if (typeof ah.AsyncLocalStorage !== "undefined") {
storage = new ah.AsyncLocalStorage();
}
const run = (context, cb) => {
if (!storage) {
throw new Error(`Unable to use async_hook, please confirm the node version >= 12.17
`);
}
return new Promise((resolve, reject) => {
storage.run(context, () => {
try {
return resolve(cb());
} catch (error) {
return reject(error);
}
});
});
};
const useHonoContext = () => {
if (!storage) {
throw new Error(`Unable to use async_hook, please confirm the node version >= 12.17
`);
}
const context = storage.getStore();
if (!context) {
throw new Error(`Can't call useContext out of server scope`);
}
return context;
};
return {
run,
useHonoContext
};
};
export {
createStorage
};