static get VALIDATION_TREE() {
    if (this.tree === undefined) {
      this.tree = Object.freeze({
        impliers: {
          nonNull: {
            validationFunc: this.isNonNull,
            impliers: {
              isSubjects: {
                validationFunc: this.isSubjects,
                impliers: {
                  subjectsNonEmpty: { validationFunc: this.areSubjectsNonEmpty },
                  validSubjects: { validationFunc: this.areValidSubjects },
                  subjectRolesOnly: { validationFunc: this.areSubjectRolesOnly },
                  subjectIdsOnly: { validationFunc: this.areSubjectIdsOnly }
                }
              },
              isChannels: {
                validationFunc: this.isChannels,
                impliers: {
                  channelsNonEmpty: { validationFunc: this.areChannelsNonEmpty },
                  validChannels: { validationFunc: this.areValidChannels },
                  validTextChannels: { validationFunc: this.areValidTextChannels },
                  validVoiceChannels: { validationFunc: this.areValidVoiceChannels }
                }
              },
              isTime: {
                validationFunc: this.isTime,
                impliers: {
                  timeDistanceOnly: { validationFunc: this.isTimeDistanceOnly },
                  timeScheduleOnly: { validationFunc: this.isTimeScheduleOnly },
                  nonZeroShift: { validationFunc: this.isNonZeroShift }
                }
              },
              isArray: {
                validationFunc: this.isArray,
                impliers: {
                  isIdsArray: { validationFunc: this.isIdsArray }
                }
              },
              isOnOff: { validationFunc: this.isOnOff },
              isInteger: {
                validationFunc: this.isInteger,
                impliers: {
                  isNonNegativeInteger: { validationFunc: this.isNonNegativeInteger }
                }
              }
            }
          }
        }
      });
    }

    return this.tree;
  }
/**
   * The tree of argument validation definitions and dependencies.
   * The options at the root of the tree are implied by the options closer to leafs.
   * Nodes also have links to functions which needs to be executed in order to validate the option.
   * Not all validation options must be covered by the tree. For example, "anyValueAllowed" validation option
   * is a modifier which alternates some other validations but does not have an execution function for itself.
   * @type {Object}
   */
The tree of argument validation definitions and dependencies.
The options at the root of the tree are implied by the options closer to leafs.
Nodes also have links to functions which needs to be executed in order to validate the option.
Not all validation options must be covered by the tree. For example, "anyValueAllowed" validation option
is a modifier which alternates some other validations but does not have an execution function for itself.
@type {Object}
The tree of argument validation definitions and dependencies . The options at the root of the tree are implied by the options closer to leafs . Nodes also have links to functions which needs to be executed in order to validate the option . Not all validation options must be covered by the tree . For example " anyValueAllowed " validation option is a modifier which alternates some other validations but does not have an execution function for itself . @type { Object }
static get VALIDATION_TREE() {
    if (this.tree === undefined) {
      this.tree = Object.freeze({
        impliers: {
          nonNull: {
            validationFunc: this.isNonNull,
            impliers: {
              isSubjects: {
                validationFunc: this.isSubjects,
                impliers: {
                  subjectsNonEmpty: { validationFunc: this.areSubjectsNonEmpty },
                  validSubjects: { validationFunc: this.areValidSubjects },
                  subjectRolesOnly: { validationFunc: this.areSubjectRolesOnly },
                  subjectIdsOnly: { validationFunc: this.areSubjectIdsOnly }
                }
              },
              isChannels: {
                validationFunc: this.isChannels,
                impliers: {
                  channelsNonEmpty: { validationFunc: this.areChannelsNonEmpty },
                  validChannels: { validationFunc: this.areValidChannels },
                  validTextChannels: { validationFunc: this.areValidTextChannels },
                  validVoiceChannels: { validationFunc: this.areValidVoiceChannels }
                }
              },
              isTime: {
                validationFunc: this.isTime,
                impliers: {
                  timeDistanceOnly: { validationFunc: this.isTimeDistanceOnly },
                  timeScheduleOnly: { validationFunc: this.isTimeScheduleOnly },
                  nonZeroShift: { validationFunc: this.isNonZeroShift }
                }
              },
              isArray: {
                validationFunc: this.isArray,
                impliers: {
                  isIdsArray: { validationFunc: this.isIdsArray }
                }
              },
              isOnOff: { validationFunc: this.isOnOff },
              isInteger: {
                validationFunc: this.isInteger,
                impliers: {
                  isNonNegativeInteger: { validationFunc: this.isNonNegativeInteger }
                }
              }
            }
          }
        }
      });
    }
    return this.tree;
  }
static get VALIDATION_TREE ( ) { if ( this . tree === undefined ) { this . tree = Object . freeze ( { impliers : { nonNull : { validationFunc : this . isNonNull , impliers : { isSubjects : { validationFunc : this . isSubjects , impliers : { subjectsNonEmpty : { validationFunc : this . areSubjectsNonEmpty } , validSubjects : { validationFunc : this . areValidSubjects } , subjectRolesOnly : { validationFunc : this . areSubjectRolesOnly } , subjectIdsOnly : { validationFunc : this . areSubjectIdsOnly } } } , isChannels : { validationFunc : this . isChannels , impliers : { channelsNonEmpty : { validationFunc : this . areChannelsNonEmpty } , validChannels : { validationFunc : this . areValidChannels } , validTextChannels : { validationFunc : this . areValidTextChannels } , validVoiceChannels : { validationFunc : this . areValidVoiceChannels } } } , isTime : { validationFunc : this . isTime , impliers : { timeDistanceOnly : { validationFunc : this . isTimeDistanceOnly } , timeScheduleOnly : { validationFunc : this . isTimeScheduleOnly } , nonZeroShift : { validationFunc : this . isNonZeroShift } } } , isArray : { validationFunc : this . isArray , impliers : { isIdsArray : { validationFunc : this . isIdsArray } } } , isOnOff : { validationFunc : this . isOnOff } , isInteger : { validationFunc : this . isInteger , impliers : { isNonNegativeInteger : { validationFunc : this . isNonNegativeInteger } } } } } } } ) ; } return this . tree ; }
The tree of argument validation definitions and dependencies.
The tree of argument validation definitions and dependencies .