UNPKG

@nyteshade/lattice-legacy

Version:

OO Underpinnings for ease of GraphQL Implementation

54 lines (44 loc) 1.73 kB
/** * The FunctionExecutionError denotes that the error was invoked * during a runtime evaluation of a function */ export class FunctionExecutionError extends Error { /** The error, if any, that prompted the creation of this instance */ error: Error /** The function in question, if available, that caused the error */ fn: Function /** The arguments, if available, that invoked the error */ args: Array<Mixed> /** The result from the function, if any, at the time of Error */ result: mixed /** * Creates a new FunctionExecutionError instance. Any information that * can be passed about the error at the time of failure should be captured * here if possible. Some values that make sense are any other existing * error present at the time this issue cropped up, the function that failed, * any arguments passed to it and any resulting value it may have turned up. * * @param {Error|string} error any error present at the time of failure * @param {Function} fn the function that failed * @param {Array<mixed>} args any arguments passed to the failed fn * @param {mixed} result any result returned by the failed function */ constructor( error: ?(Error | string), fn: ?Function, args: ?Array<mixed>, result: mixed ) { let message = error instanceof Error ? error.message : error super(message) if (error instanceof Error) { let { columnNumber, fileName, lineNumber, message, name, stack } = error Object.assign(this, { columnNumber, fileName, lineNumber, message, name, stack }) this.error = error } Object.assign(this, { error, fn, args, result }) } } export default FunctionExecutionError