70 lines
1.6 KiB
JavaScript
70 lines
1.6 KiB
JavaScript
import { addTracingExtensions, getMainCarrier } from '@sentry/core';
|
|
import { isNodeEnv, loadModule, dynamicRequire } from '@sentry/utils';
|
|
|
|
/**
|
|
* @private
|
|
*/
|
|
function _autoloadDatabaseIntegrations() {
|
|
const carrier = getMainCarrier();
|
|
if (!carrier.__SENTRY__) {
|
|
return;
|
|
}
|
|
|
|
const packageToIntegrationMapping = {
|
|
mongodb() {
|
|
const integration = dynamicRequire(module, './node/integrations/mongo')
|
|
|
|
;
|
|
return new integration.Mongo();
|
|
},
|
|
mongoose() {
|
|
const integration = dynamicRequire(module, './node/integrations/mongo')
|
|
|
|
;
|
|
return new integration.Mongo();
|
|
},
|
|
mysql() {
|
|
const integration = dynamicRequire(module, './node/integrations/mysql')
|
|
|
|
;
|
|
return new integration.Mysql();
|
|
},
|
|
pg() {
|
|
const integration = dynamicRequire(module, './node/integrations/postgres')
|
|
|
|
;
|
|
return new integration.Postgres();
|
|
},
|
|
};
|
|
|
|
const mappedPackages = Object.keys(packageToIntegrationMapping)
|
|
.filter(moduleName => !!loadModule(moduleName))
|
|
.map(pkg => {
|
|
try {
|
|
return packageToIntegrationMapping[pkg]();
|
|
} catch (e) {
|
|
return undefined;
|
|
}
|
|
})
|
|
.filter(p => p) ;
|
|
|
|
if (mappedPackages.length > 0) {
|
|
carrier.__SENTRY__.integrations = [...(carrier.__SENTRY__.integrations || []), ...mappedPackages];
|
|
}
|
|
}
|
|
|
|
/**
|
|
* This patches the global object and injects the Tracing extensions methods
|
|
*/
|
|
function addExtensionMethods() {
|
|
addTracingExtensions();
|
|
|
|
// Detect and automatically load specified integrations.
|
|
if (isNodeEnv()) {
|
|
_autoloadDatabaseIntegrations();
|
|
}
|
|
}
|
|
|
|
export { addExtensionMethods };
|
|
//# sourceMappingURL=extensions.js.map
|