function perspectiveEmit(nspComponents, obj) {
  /*
   * Note: I perf tested these individual assignments from the nspComponents
   * array vs. using destructuring assignment, and individual assigments was
   * 10x faster.
   */
  const aspectFilter = nspComponents[constants.aspectFilterIndex];
  const subjectTagFilter = nspComponents[constants.subjectTagFilterIndex];
  const aspectTagFilter = nspComponents[constants.aspectTagFilterIndex];
  const statusFilter = nspComponents[constants.statusFilterIndex];

  /*
   * When none of the filters are set, the nspComponent just has the
   * subjectAbsolutePath in it, so we do not have to check for the filter
   * conditions and we can just return true.
   */
  if (nspComponents.length < 2) return true;

  /*
   * If the obj is a subject, just apply the subjectTagFilter and return the
   * result.
   */
  if (isThisSubject(obj)) return applyFilter(subjectTagFilter, obj.tags);

  // Otherwise it's a sample, so apply all the filters and return the result.
  return applyFilter(aspectFilter, obj.aspect.name) &&
    applyFilter(subjectTagFilter, obj.subject.tags) &&
    applyFilter(aspectTagFilter, obj.aspect.tags) &&
    applyFilter(statusFilter, obj.status);
} // perspectiveEmit
/**
 * Returns true if this object should be emitted as a real-time event to a
 * namespace (representing a perspective) given the various filters passed in
 * here as nspComponents.
 *
 * @param  {String} nspComponents - array of namespace strings for filtering
 * @param  {Object} obj - Object that is to be emitted to the client
 * @returns {Boolean} - true if this obj is to be emitted based on the filters
 *  represented by the nspComponents
 */
Returns true if this object should be emitted as a real-time event to a
namespace (representing a perspective) given the various filters passed in
here as nspComponents.

@param  {String} nspComponents - array of namespace strings for filtering
@param  {Object} obj - Object that is to be emitted to the client
@returns {Boolean} - true if this obj is to be emitted based on the filters
represented by the nspComponents
Returns true if this object should be emitted as a real - time event to a namespace ( representing a perspective ) given the various filters passed in here as nspComponents . @param { String } nspComponents - array of namespace strings for filtering @param { Object } obj - Object that is to be emitted to the client @returns { Boolean } - true if this obj is to be emitted based on the filters represented by the nspComponents
function perspectiveEmit(nspComponents, obj) {
  const aspectFilter = nspComponents[constants.aspectFilterIndex];
  const subjectTagFilter = nspComponents[constants.subjectTagFilterIndex];
  const aspectTagFilter = nspComponents[constants.aspectTagFilterIndex];
  const statusFilter = nspComponents[constants.statusFilterIndex];
  if (nspComponents.length < 2) return true;
  if (isThisSubject(obj)) return applyFilter(subjectTagFilter, obj.tags);
  return applyFilter(aspectFilter, obj.aspect.name) &&
    applyFilter(subjectTagFilter, obj.subject.tags) &&
    applyFilter(aspectTagFilter, obj.aspect.tags) &&
    applyFilter(statusFilter, obj.status);
} 
function perspectiveEmit ( nspComponents , obj ) { const aspectFilter = nspComponents [ constants . aspectFilterIndex ] ; const subjectTagFilter = nspComponents [ constants . subjectTagFilterIndex ] ; const aspectTagFilter = nspComponents [ constants . aspectTagFilterIndex ] ; const statusFilter = nspComponents [ constants . statusFilterIndex ] ; if ( nspComponents . length < 2 ) return true ; if ( isThisSubject ( obj ) ) return applyFilter ( subjectTagFilter , obj . tags ) ; return applyFilter ( aspectFilter , obj . aspect . name ) && applyFilter ( subjectTagFilter , obj . subject . tags ) && applyFilter ( aspectTagFilter , obj . aspect . tags ) && applyFilter ( statusFilter , obj . status ) ; }
Returns true if this object should be emitted as a real-time event to a
 namespace (representing a perspective) given the various filters passed in
 here as nspComponents.
Returns true if this object should be emitted as a real - time event to a namespace ( representing a perspective ) given the various filters passed in here as nspComponents .
/*
   * Note: I perf tested these individual assignments from the nspComponents
   * array vs. using destructuring assignment, and individual assigments was
   * 10x faster.
   */ /*
   * When none of the filters are set, the nspComponent just has the
   * subjectAbsolutePath in it, so we do not have to check for the filter
   * conditions and we can just return true.
   */ /*
   * If the obj is a subject, just apply the subjectTagFilter and return the
   * result.
   */ // Otherwise it's a sample, so apply all the filters and return the result. // perspectiveEmit