serverless/lib/utils/telemetry/anonymize-stacktrace-paths.js

31 lines
960 B
JavaScript

'use strict';
const path = require('path');
const commonPath = require('path2/common');
const anonymizeStacktracePaths = (stacktracePaths) => {
const absoluteStacktracePaths = stacktracePaths.filter((p) => path.isAbsolute(p));
let commonPathPrefix = '';
if (absoluteStacktracePaths.length) {
commonPathPrefix = commonPath(...absoluteStacktracePaths);
const lastServerlessIndex = commonPathPrefix.lastIndexOf(`${path.sep}serverless${path.sep}`);
if (lastServerlessIndex !== -1) {
commonPathPrefix = commonPathPrefix.slice(0, lastServerlessIndex);
} else {
const lastNodeModulesIndex = commonPathPrefix.lastIndexOf(
`${path.sep}node_modules${path.sep}`
);
if (lastNodeModulesIndex !== -1) {
commonPathPrefix = commonPathPrefix.slice(0, lastNodeModulesIndex);
}
}
}
return stacktracePaths.map((s) => s.replace(commonPathPrefix, ''));
};
module.exports = anonymizeStacktracePaths;