@sprucelabs/spruce-event-utils
Version:
Some helpful utilities to speed up working with Mercury! 🚅
42 lines (41 loc) • 2.12 kB
JavaScript
import BaseSpruceError from '@sprucelabs/error';
export default class SpruceError extends BaseSpruceError {
/** An easy to understand version of the errors */
friendlyMessage() {
var _a, _b, _c;
const { options } = this;
let message;
switch (options === null || options === void 0 ? void 0 : 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((_c = (_a = err.stack) !== null && _a !== void 0 ? _a : (_b = err.options) === null || _b === void 0 ? void 0 : _b.friendlyMessage) !== null && _c !== void 0 ? _c : 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;
}
}