@riddance/env
Version:
Too much code slows you down, creates risks, increases maintainability burdens, confuses AI. So let's commit less of it.
36 lines • 5.69 kB
JavaScript
/* eslint-disable unicorn/no-null */
import { relative } from 'node:path';
import { fileURLToPath } from 'node:url';
import { install, wrapCallSite } from 'source-map-support';
install({
environment: 'node',
hookRequire: false,
});
if (!process.env.STACK_TRACE_FULL_PATH) {
const cwd = process.env.PROJECT_DIRECTORY ?? process.cwd();
Error.prepareStackTrace = (error, stack) => {
const errorString = `${error.name}: ${error.message}`;
const state = { nextPosition: null, curPosition: null };
const processedStack = [];
stack.toReversed().forEach(inner => {
const wrapped = wrapCallSite(inner, state);
const innerSourceUrl = wrapped.getScriptNameOrSourceURL?.bind(wrapped);
if (wrapped !== inner && innerSourceUrl) {
wrapped.getScriptNameOrSourceURL = function () {
const original = innerSourceUrl();
if (original.startsWith('file://')) {
return relative(cwd, fileURLToPath(original));
}
return original;
};
}
processedStack.push(wrapped.toString());
state.nextPosition = state.curPosition;
});
state.curPosition = state.nextPosition = null;
processedStack.reverse();
const newLine = '\n at ';
return `${errorString}${newLine}${processedStack.join(newLine)}`;
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlLW1hcC1zdXBwb3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic291cmNlLW1hcC1zdXBwb3J0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9DQUFvQztBQUNwQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQ3BDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDeEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQWlCLE1BQU0sb0JBQW9CLENBQUE7QUFFekUsT0FBTyxDQUFDO0lBQ0osV0FBVyxFQUFFLE1BQU07SUFDbkIsV0FBVyxFQUFFLEtBQUs7Q0FDckIsQ0FBQyxDQUFBO0FBRUYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUNyQyxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQTtJQUMxRCxLQUFLLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7UUFDdkMsTUFBTSxXQUFXLEdBQUcsR0FBRyxLQUFLLENBQUMsSUFBSSxLQUFLLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUVyRCxNQUFNLEtBQUssR0FBRyxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFBO1FBQ3ZELE1BQU0sY0FBYyxHQUFhLEVBQUUsQ0FBQTtRQUNuQyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQy9CLE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxLQUFpQixFQUFFLEtBQUssQ0FFcEQsQ0FBQTtZQUNELE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7WUFDdEUsSUFBSSxPQUFPLEtBQUssS0FBSyxJQUFJLGNBQWMsRUFBRSxDQUFDO2dCQUN0QyxPQUFPLENBQUMsd0JBQXdCLEdBQUc7b0JBQy9CLE1BQU0sUUFBUSxHQUFHLGNBQWMsRUFBRSxDQUFBO29CQUNqQyxJQUFJLFFBQVEsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQzt3QkFDakMsT0FBTyxRQUFRLENBQUMsR0FBRyxFQUFFLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFBO29CQUNqRCxDQUFDO29CQUNELE9BQU8sUUFBUSxDQUFBO2dCQUNuQixDQUFDLENBQUE7WUFDTCxDQUFDO1lBQ0QsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQTtZQUN2QyxLQUFLLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUE7UUFDMUMsQ0FBQyxDQUFDLENBQUE7UUFDRixLQUFLLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFBO1FBQzdDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUN4QixNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUE7UUFDM0IsT0FBTyxHQUFHLFdBQVcsR0FBRyxPQUFPLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFBO0lBQ3BFLENBQUMsQ0FBQTtBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSB1bmljb3JuL25vLW51bGwgKi9cbmltcG9ydCB7IHJlbGF0aXZlIH0gZnJvbSAnbm9kZTpwYXRoJ1xuaW1wb3J0IHsgZmlsZVVSTFRvUGF0aCB9IGZyb20gJ25vZGU6dXJsJ1xuaW1wb3J0IHsgaW5zdGFsbCwgd3JhcENhbGxTaXRlLCB0eXBlIENhbGxTaXRlIH0gZnJvbSAnc291cmNlLW1hcC1zdXBwb3J0J1xuXG5pbnN0YWxsKHtcbiAgICBlbnZpcm9ubWVudDogJ25vZGUnLFxuICAgIGhvb2tSZXF1aXJlOiBmYWxzZSxcbn0pXG5cbmlmICghcHJvY2Vzcy5lbnYuU1RBQ0tfVFJBQ0VfRlVMTF9QQVRIKSB7XG4gICAgY29uc3QgY3dkID0gcHJvY2Vzcy5lbnYuUFJPSkVDVF9ESVJFQ1RPUlkgPz8gcHJvY2Vzcy5jd2QoKVxuICAgIEVycm9yLnByZXBhcmVTdGFja1RyYWNlID0gKGVycm9yLCBzdGFjaykgPT4ge1xuICAgICAgICBjb25zdCBlcnJvclN0cmluZyA9IGAke2Vycm9yLm5hbWV9OiAke2Vycm9yLm1lc3NhZ2V9YFxuXG4gICAgICAgIGNvbnN0IHN0YXRlID0geyBuZXh0UG9zaXRpb246IG51bGwsIGN1clBvc2l0aW9uOiBudWxsIH1cbiAgICAgICAgY29uc3QgcHJvY2Vzc2VkU3RhY2s6IHN0cmluZ1tdID0gW11cbiAgICAgICAgc3RhY2sudG9SZXZlcnNlZCgpLmZvckVhY2goaW5uZXIgPT4ge1xuICAgICAgICAgICAgY29uc3Qgd3JhcHBlZCA9IHdyYXBDYWxsU2l0ZShpbm5lciBhcyBDYWxsU2l0ZSwgc3RhdGUpIGFzIENhbGxTaXRlICYge1xuICAgICAgICAgICAgICAgIHRvU3RyaW5nOiAoKSA9PiBzdHJpbmdcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGlubmVyU291cmNlVXJsID0gd3JhcHBlZC5nZXRTY3JpcHROYW1lT3JTb3VyY2VVUkw/LmJpbmQod3JhcHBlZClcbiAgICAgICAgICAgIGlmICh3cmFwcGVkICE9PSBpbm5lciAmJiBpbm5lclNvdXJjZVVybCkge1xuICAgICAgICAgICAgICAgIHdyYXBwZWQuZ2V0U2NyaXB0TmFtZU9yU291cmNlVVJMID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvcmlnaW5hbCA9IGlubmVyU291cmNlVXJsKClcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9yaWdpbmFsLnN0YXJ0c1dpdGgoJ2ZpbGU6Ly8nKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlbGF0aXZlKGN3ZCwgZmlsZVVSTFRvUGF0aChvcmlnaW5hbCkpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcHJvY2Vzc2VkU3RhY2sucHVzaCh3cmFwcGVkLnRvU3RyaW5nKCkpXG4gICAgICAgICAgICBzdGF0ZS5uZXh0UG9zaXRpb24gPSBzdGF0ZS5jdXJQb3NpdGlvblxuICAgICAgICB9KVxuICAgICAgICBzdGF0ZS5jdXJQb3NpdGlvbiA9IHN0YXRlLm5leHRQb3NpdGlvbiA9IG51bGxcbiAgICAgICAgcHJvY2Vzc2VkU3RhY2sucmV2ZXJzZSgpXG4gICAgICAgIGNvbnN0IG5ld0xpbmUgPSAnXFxuICAgIGF0ICdcbiAgICAgICAgcmV0dXJuIGAke2Vycm9yU3RyaW5nfSR7bmV3TGluZX0ke3Byb2Nlc3NlZFN0YWNrLmpvaW4obmV3TGluZSl9YFxuICAgIH1cbn1cbiJdfQ==