firebase-tools
Version:
Command-Line Interface for Firebase
55 lines (54 loc) • 2.22 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.enhanceProvisioningError = void 0;
const error_1 = require("../../error");
function isErrorInfo(detail) {
return detail["@type"] === "type.googleapis.com/google.rpc.ErrorInfo";
}
function isHelpLinks(detail) {
return detail["@type"] === "type.googleapis.com/google.rpc.Help";
}
function extractErrorDetails(err) {
var _a;
if (!(err instanceof Error)) {
return "";
}
if (err instanceof error_1.FirebaseError && err.context) {
const context = err.context;
const errorBody = (_a = context.body) === null || _a === void 0 ? void 0 : _a.error;
if ((errorBody === null || errorBody === void 0 ? void 0 : errorBody.details) && Array.isArray(errorBody.details)) {
const parts = [];
for (const detail of errorBody.details) {
if (isErrorInfo(detail)) {
parts.push(`Error details:`);
parts.push(` Reason: ${detail.reason}`);
parts.push(` Domain: ${detail.domain}`);
if (detail.metadata) {
parts.push(` Additional Info: ${JSON.stringify(detail.metadata)}`);
}
}
else if (isHelpLinks(detail)) {
parts.push(`\nFor help resolving this issue:`);
for (const link of detail.links) {
parts.push(` - ${link.description}`);
parts.push(` ${link.url}`);
}
}
}
return parts.length > 0 ? `\n\n${parts.join("\n")}` : "";
}
}
return "";
}
function enhanceProvisioningError(err, contextMessage) {
const originalError = (0, error_1.getError)(err);
const errorDetails = extractErrorDetails(err);
const fullMessage = errorDetails
? `${contextMessage}: ${originalError.message}${errorDetails}`
: `${contextMessage}: ${originalError.message}`;
return new error_1.FirebaseError(fullMessage, {
exit: 2,
original: originalError,
});
}
exports.enhanceProvisioningError = enhanceProvisioningError;