Source: filter/filter.js

/**
 * @author Sloan Seaman 
 * @copyright 2016 and on
 * @version .1
 * @license https://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0
 */

/**
 * Interface for classes that can handle can act as a filter
 *
 * @interface Filter
 */

/**
 * Returns the name of the filter.  If not set, SkillVC will attempt to determine one for you and add the function
 * to your object
 *
 * @function
 * @name  Filter.getName
 * @return {String} The name of the filter
 */

/**
 * Returns the order location in which the filter should be called.
 *
 * If not defined, the order will be assumed to be the order in which it was loaded
 *
 * @function
 * @name  Filter#getOrder
 * @return {Number} The place in execution order (index) of the filter.
 */

/**
 * Called to execute any functionality that needs to occur before an intent executes.  If the filter
 * has any async operations a `Promise` should be returned to SkillVC so that it will wait until 
 * execution of the async operation has completed
 *
 * A filter should implement either executePre or executePost, it does not need to implement both
 * 
 * @function
 * @name  Filter#executePre
 * @param {Object} event The event for the skill (from lambda)
 * @param {OBject} context The context for the skill (from lambda)
 * @param {SVContext} svContext The context of the execution
 * @returns {Promise} The optional `Promise` that can be used to wait until this completes
 */

/**
 * Called to execute any functionality that needs to occur after an intent executes.  If the filter
 * has any async operations a `Promise` should be returned to SkillVC so that it will wait until 
 * execution of the async operation has completed
 *
 * A filter should implement either executePre or executePost, it does not need to implement both
 * 
 * @function
 * @name  Filter#executePost
 * @param {Object} event The event for the skill (from lambda)
 * @param {OBject} context The context for the skill (from lambda)
 * @param {SVContext} svContext The context of the execution
 * @returns {Promise} The optional `Promise` that can be used to wait until this completes
 */