astro-ghostcms/.pnpm-store/v3/files/9a/59655d07a440159a4ab555950af...

60 lines
1.6 KiB
Plaintext
Raw Normal View History

2024-02-14 14:10:47 +00:00
import { AstroError, AstroErrorData } from "../core/errors/index.js";
const EVENT_ERROR = "ASTRO_CLI_ERROR";
const ANONYMIZE_MESSAGE_REGEX = /^(\w| )+/;
function anonymizeErrorMessage(msg) {
const matchedMessage = msg.match(ANONYMIZE_MESSAGE_REGEX);
if (!matchedMessage?.[0]) {
return void 0;
}
return matchedMessage[0].trim().substring(0, 20);
}
function eventConfigError({
err,
cmd,
isFatal
}) {
const payload = {
name: "ZodError",
isFatal,
isConfig: true,
cliCommand: cmd,
configErrorPaths: err.issues.map((issue) => issue.path.join("."))
};
return [{ eventName: EVENT_ERROR, payload }];
}
function eventError({
cmd,
err,
isFatal
}) {
const errorData = AstroError.is(err) && AstroErrorData[err.name];
const payload = {
name: err.name,
plugin: err.plugin,
cliCommand: cmd,
isFatal,
anonymousMessageHint: errorData && errorData.message ? getSafeErrorMessage(errorData.message) : anonymizeErrorMessage(err.message)
};
return [{ eventName: EVENT_ERROR, payload }];
}
function getSafeErrorMessage(message) {
if (typeof message === "string") {
return message;
} else {
return String.raw({
raw: extractStringFromFunction(message.toString())
});
}
function extractStringFromFunction(func) {
const arrowIndex = func.indexOf("=>") + "=>".length;
return func.slice(arrowIndex).trim().slice(1, -1).replace(
/\${([^}]+)}/gm,
(str, match1) => `${match1.split(/\.?(?=[A-Z])/).join("_").toUpperCase()}`
).replace(/\\`/g, "`");
}
}
export {
eventConfigError,
eventError
};