rittenhop-dev/versions/5.94.2/node_modules/@sentry/node/esm/integrations/modules.js

108 lines
2.3 KiB
JavaScript
Raw Normal View History

2024-09-23 19:40:12 -04:00
import { existsSync, readFileSync } from 'fs';
import { dirname, join } from 'path';
import { defineIntegration, convertIntegrationFnToClass } from '@sentry/core';
let moduleCache;
const INTEGRATION_NAME = 'Modules';
/** Extract information about paths */
function getPaths() {
try {
return require.cache ? Object.keys(require.cache ) : [];
} catch (e) {
return [];
}
}
/** Extract information about package.json modules */
function collectModules()
{
const mainPaths = (require.main && require.main.paths) || [];
const paths = getPaths();
const infos
= {};
const seen
= {};
paths.forEach(path => {
let dir = path;
/** Traverse directories upward in the search of package.json file */
const updir = () => {
const orig = dir;
dir = dirname(orig);
if (!dir || orig === dir || seen[orig]) {
return undefined;
}
if (mainPaths.indexOf(dir) < 0) {
return updir();
}
const pkgfile = join(orig, 'package.json');
seen[orig] = true;
if (!existsSync(pkgfile)) {
return updir();
}
try {
const info = JSON.parse(readFileSync(pkgfile, 'utf8'))
;
infos[info.name] = info.version;
} catch (_oO) {
// no-empty
}
};
updir();
});
return infos;
}
/** Fetches the list of modules and the versions loaded by the entry file for your node.js app. */
function _getModules() {
if (!moduleCache) {
moduleCache = collectModules();
}
return moduleCache;
}
const _modulesIntegration = (() => {
return {
name: INTEGRATION_NAME,
// TODO v8: Remove this
setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function
processEvent(event) {
event.modules = {
...event.modules,
..._getModules(),
};
return event;
},
};
}) ;
const modulesIntegration = defineIntegration(_modulesIntegration);
/**
* Add node modules / packages to the event.
* @deprecated Use `modulesIntegration()` instead.
*/
// eslint-disable-next-line deprecation/deprecation
const Modules = convertIntegrationFnToClass(INTEGRATION_NAME, modulesIntegration)
;
// eslint-disable-next-line deprecation/deprecation
export { Modules, modulesIntegration };
//# sourceMappingURL=modules.js.map