maykinmedia/consumerjs

View on GitHub
src/abstract-list.js

Summary

Maintainability
A
0 mins
Test Coverage
/** @module */

/**
 * Abstract base class for list of consumer objects.
 * @abstract
 */
export class AbstractList extends Array {
    /**
     * Creates a new object.
     * @param {AbstractConsumerObject[]} objects Items to populate list with.
     * @param {Consumer} consumer Consumer instance for this object.
     * @param {Object} responseData The response data as Object.
     */
    constructor(objects, consumer, responseData={}) {
        super(...objects);

        /** {Object} The response data as Object. */
        this.responseData = responseData;

        let keys = Object.keys(responseData);

        for (let i in keys) {
            if (keys.hasOwnProperty(i)) {
                let key = keys[i];
                this.responseData[key] = responseData[key];
            }
        }

        /** {AbstractConsumer} Reference to consumer instantiating this object. */
        this.__consumer__ = consumer;
    }
}