| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 | /* * Copyright (c) 2015-present, Vitaly Tomilov * * See the LICENSE file at the top-level directory of this distribution * for licensing information. * * Removal or modification of this copyright notice is prohibited. */const {QueryFileError} = require('./query-file-error');const npm = {    os: require('os'),    utils: require('../utils')};/** * @class errors.ParameterizedQueryError * @augments external:Error * @description * {@link errors.ParameterizedQueryError ParameterizedQueryError} class, available from the {@link errors} namespace. * * This type represents all errors that can be reported by class {@link ParameterizedQuery}, whether it is used * explicitly or implicitly (via a simple `{text, values}` object). * * @property {string} name * Standard {@link external:Error Error} property - error type name = `ParameterizedQueryError`. * * @property {string} message * Standard {@link external:Error Error} property - the error message. * * @property {string} stack * Standard {@link external:Error Error} property - the stack trace. * * @property {errors.QueryFileError} error * Internal {@link errors.QueryFileError} object. * * It is set only when the source {@link ParameterizedQuery} used a {@link QueryFile} which threw the error. * * @property {object} result * Resulting Parameterized Query object. * * @see ParameterizedQuery */class ParameterizedQueryError extends Error {    constructor(error, pq) {        const isQueryFileError = error instanceof QueryFileError;        const message = isQueryFileError ? 'Failed to initialize \'text\' from a QueryFile.' : error;        super(message);        this.name = this.constructor.name;        if (isQueryFileError) {            this.error = error;        }        this.result = pq;        Error.captureStackTrace(this, this.constructor);    }}/** * @method errors.ParameterizedQueryError#toString * @description * Creates a well-formatted multi-line string that represents the error. * * It is called automatically when writing the object into the console. * * @param {number} [level=0] * Nested output level, to provide visual offset. * * @returns {string} */ParameterizedQueryError.prototype.toString = function (level) {    level = level > 0 ? parseInt(level) : 0;    const gap0 = npm.utils.messageGap(level),        gap1 = npm.utils.messageGap(level + 1),        gap2 = npm.utils.messageGap(level + 2),        lines = [            'ParameterizedQueryError {',            gap1 + 'message: "' + this.message + '"',            gap1 + 'result: {',            gap2 + 'text: ' + npm.utils.toJson(this.result.text),            gap2 + 'values: ' + npm.utils.toJson(this.result.values),            gap1 + '}'        ];    if (this.error) {        lines.push(gap1 + 'error: ' + this.error.toString(level + 1));    }    lines.push(gap0 + '}');    return lines.join(npm.os.EOL);};npm.utils.addInspection(ParameterizedQueryError, function () {    return this.toString();});module.exports = {ParameterizedQueryError};
 |