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

64 lines
1.7 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 domain = require('domain');
const core = require('@sentry/core');
function getActiveDomain() {
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any
return (domain ).active ;
}
// eslint-disable-next-line deprecation/deprecation
function getCurrentHub() {
const activeDomain = getActiveDomain();
// If there's no active domain, just return undefined and the global hub will be used
if (!activeDomain) {
return undefined;
}
core.ensureHubOnCarrier(activeDomain);
return core.getHubFromCarrier(activeDomain);
}
// eslint-disable-next-line deprecation/deprecation
function createNewHub(parent) {
const carrier = {};
core.ensureHubOnCarrier(carrier, parent);
return core.getHubFromCarrier(carrier);
}
function runWithAsyncContext(callback, options) {
const activeDomain = getActiveDomain();
if (activeDomain && _optionalChain([options, 'optionalAccess', _ => _.reuseExisting])) {
// We're already in a domain, so we don't need to create a new one, just call the callback with the current hub
return callback();
}
const local = domain.create() ;
const parentHub = activeDomain ? core.getHubFromCarrier(activeDomain) : undefined;
const newHub = createNewHub(parentHub);
core.setHubOnCarrier(local, newHub);
return local.bind(() => {
return callback();
})();
}
/**
* Sets the async context strategy to use Node.js domains.
*/
function setDomainAsyncContextStrategy() {
core.setAsyncContextStrategy({ getCurrentHub, runWithAsyncContext });
}
exports.setDomainAsyncContextStrategy = setDomainAsyncContextStrategy;
//# sourceMappingURL=domain.js.map