rittenhop-dev/versions/5.94.2/node_modules/@sentry/node/cjs/async/hooks.js

55 lines
1.5 KiB
JavaScript
Raw Normal View History

2024-09-23 19:40:12 -04:00
var {
_optionalChain
} = require('@sentry/utils');
Object.defineProperty(exports, '__esModule', { value: true });
const core = require('@sentry/core');
const async_hooks = require('async_hooks');
// eslint-disable-next-line deprecation/deprecation
let asyncStorage;
/**
* Sets the async context strategy to use AsyncLocalStorage which requires Node v12.17.0 or v13.10.0.
*/
function setHooksAsyncContextStrategy() {
if (!asyncStorage) {
// eslint-disable-next-line deprecation/deprecation
asyncStorage = new (async_hooks ).AsyncLocalStorage();
}
// eslint-disable-next-line deprecation/deprecation
function getCurrentHub() {
return asyncStorage.getStore();
}
// eslint-disable-next-line deprecation/deprecation
function createNewHub(parent) {
const carrier = {};
core.ensureHubOnCarrier(carrier, parent);
return core.getHubFromCarrier(carrier);
}
function runWithAsyncContext(callback, options) {
const existingHub = getCurrentHub();
if (existingHub && _optionalChain([options, 'optionalAccess', _ => _.reuseExisting])) {
// We're already in an async context, so we don't need to create a new one
// just call the callback with the current hub
return callback();
}
const newHub = createNewHub(existingHub);
return asyncStorage.run(newHub, () => {
return callback();
});
}
core.setAsyncContextStrategy({ getCurrentHub, runWithAsyncContext });
}
exports.setHooksAsyncContextStrategy = setHooksAsyncContextStrategy;
//# sourceMappingURL=hooks.js.map