Home Identifier Source Repository

src/util/$ExceptionsProvider.js

/**
 * @module $ExceptionsProvider.js
 * @author Joe Groseclose <@benderTheCrime>
 * @date 8/23/2015
 */

// System Modules
import {magenta, cyan} from         'chalk';
import $LogProvider from            'angie-log';

const p = process;

class $$InvalidConfigError extends ReferenceError {
    constructor(name = '') {
        $LogProvider.error(
            `Invalid${name ? ` ${name}` : ''} configuration settings. ` +
            'Please check your AngieFile.'
        );
        super();
    }
}

class $$InvalidDatabaseConfigError extends $$InvalidConfigError {
    constructor() {
        super('database');
    }
}

class $$InvalidModelConfigError extends TypeError {
    constructor(name, error = '') {
        $LogProvider.error(
            'Invalid Model configuration for model ' +
            `${magenta(name)} <-- ${magenta(name)}${magenta('Provider')}` +
            `${error ? ` ${error}` : ''}`
        );
        super();
        p.exit(1);
    }
}

class $$InvalidModelReferenceError extends Error {
    constructor() {
        $LogProvider.error('Invalid Model argument');
        super();
        p.exit(1);
    }
}

class $$InvalidModelFieldReferenceError extends Error {
    constructor(name = '', field) {
        $LogProvider.error(
            `Invalid param for Model ${cyan(name)}.${cyan(field)}`
        );
        super();
        p.exit(1);
    }
}

export {
    $$InvalidConfigError,
    $$InvalidDatabaseConfigError,
    $$InvalidModelConfigError,
    $$InvalidModelReferenceError,
    $$InvalidModelFieldReferenceError
};