@sprucelabs/spruce-event-utils
Version:
Some helpful utilities to speed up working with Mercury! 🚅
47 lines (46 loc) • 2.17 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const error_1 = __importDefault(require("@sprucelabs/error"));
class SpruceError extends error_1.default {
/** An easy to understand version of the errors */
friendlyMessage() {
const { options } = this;
let message;
switch (options?.code) {
case 'INVALID_EVENT_NAME':
message = `I couldn't find an event called ${options.fullyQualifiedEventName}. Next step is 'spruce create.event'!`;
break;
case 'MERCURY_RESPONSE_ERROR': {
const errors = options.responseErrors;
message = `Got ${errors.length === 1 ? 'an error' : `${errors.length} errors`} from the server:\n\n`;
const errorMessages = [];
for (const err of errors) {
errorMessages.push(err.stack ?? err.options?.friendlyMessage ?? err.message);
}
message += errorMessages.join('\n');
break;
}
case 'EMPTY_MERCURY_RESPONSE':
return "Got no results back from the server! That was unexpected. It may be because the event you're listening to does not have a response payload.";
case 'DUPLICATE_EVENT':
message = `'${options.fullyQualifiedEventName}' event already exists.`;
break;
case 'EVENT_PLUGIN_ERROR':
message = 'A event plugin error just happened!';
break;
case 'EVENT_CONTRACTS_NOT_SYNCED':
message = `Events have not been synced locally. Try running \`spruce sync.events\`!`;
break;
default:
message = super.friendlyMessage();
}
const fullMessage = `${message}${options.friendlyMessage && options.friendlyMessage !== message
? `\n\n${options.friendlyMessage}`
: ''}`;
return fullMessage;
}
}
exports.default = SpruceError;