import Vue from "vue";

export default class {
    constructor() {
        this.errors = {};
    }

    record(errors) {
        this.errors = errors;
    }

    any() {
        return Object.keys(this.errors).length > 0;
    }

    has(key) {
        return this.errors.hasOwnProperty(key);
    }

    get(key) {
        if (this.errors[key]) {
            return this.errors[key][0];
        }
    }

    clear(key) {
        if (key === undefined) {
            return;
        }

        Vue.delete(this.errors, this.normalizeKey(key));
    }

    reset() {
        this.errors = {};
    }

    normalizeKey(key) {
        let keyParts = key.replace("[]", "").split("[");

        // No need to normalize the key.
        if (keyParts.length === 1) {
            return key;
        }

        return keyParts.join(".").slice(0, -1);
    }
}
