Source: Context.js

/**
 * Context represents the context a Concern is created in.
 * With a Context you can:
 * * Create Concerns
 * * Listen to events via subscribe()
 * * more
 * @interface
 */
class Context {

    /**
     * subscribe adds a listener for an event
     * @param {object} event 
     * @param {function} handler 
     */
    subscribe(event, handler) {


    }

    /**
     * publish an event.
     * Events are distinguished by the 'name' of their constructor properties.
     * @param {object} event 
     */
    publish(event) {

    }

    /**
     * select a Concern based on it's path
     * @param {string} path 
     */
    select(path) {

    }

    /**
     * concernOf considers a Concern part of this system when it activates.
     * @param {ConcernFactory} factory 
     * @param {string} name
     * @returns {Reference}
     */
    concernOf(factory, name) {

    }

}

export default Context;