addToSet = function()

in packages/amplify-category-function/src/provider-utils/awscloudformation/utils/cronExpression.ts [360:449]


  addToSet = function(val: number, end: number, incr: number, type: number) {
    let set = this.getSet(type);

    if (type === SECOND || type === MINUTE) {
      if ((val < 0 || val > 59 || end > 59) && val != ALL_SPEC_INT) {
        throw new Error('Minute and Second values must be between 0 and 59' + String(-1));
      }
    } else if (type === HOUR) {
      if ((val < 0 || val > 23 || end > 23) && val != ALL_SPEC_INT) {
        throw new Error('Hour values must be between 0 and 23' + String(-1));
      }
    } else if (type === DAY_OF_MONTH) {
      if ((val < 1 || val > 31 || end > 31) && val != ALL_SPEC_INT && val != NO_SPEC_INT) {
        throw new Error('Day of month values must be between 1 and 31' + String(-1));
      }
    } else if (type === MONTH) {
      if ((val < 1 || val > 12 || end > 12) && val != ALL_SPEC_INT) {
        throw new Error('Month values must be between 1 and 12' + String(-1));
      }
    } else if (type === DAY_OF_WEEK) {
      if ((val === 0 || val > 7 || end > 7) && val != ALL_SPEC_INT && val != NO_SPEC_INT) {
        throw new Error('Day-of-Week values must be between 1 and 7' + String(-1));
      }
    }

    if ((incr === 0 || incr === -1) && val != ALL_SPEC_INT) {
      if (val != -1) {
        set.add(val);
      } else {
        set.add(NO_SPEC_INT);
      }

      return;
    }
    let startAt: number = val;
    let stopAt: number = end;

    if (val === ALL_SPEC_INT && incr <= 0) {
      incr = 1;
      set.add(ALL_SPEC_INT); // put in a marker, but also fill values
    }

    if (type === SECOND || type === MINUTE) {
      if (stopAt === -1) {
        stopAt = 59;
      }
      if (startAt === -1 || startAt === ALL_SPEC_INT) {
        startAt = 0;
      }
    } else if (type === HOUR) {
      if (stopAt === -1) {
        stopAt = 23;
      }
      if (startAt === -1 || startAt === ALL_SPEC_INT) {
        startAt = 0;
      }
    } else if (type === DAY_OF_MONTH) {
      if (stopAt === -1) {
        stopAt = 31;
      }
      if (startAt === -1 || startAt === ALL_SPEC_INT) {
        startAt = 1;
      }
    } else if (type === MONTH) {
      if (stopAt === -1) {
        stopAt = 12;
      }
      if (startAt === -1 || startAt === ALL_SPEC_INT) {
        startAt = 1;
      }
    } else if (type === DAY_OF_WEEK) {
      if (stopAt === -1) {
        stopAt = 7;
      }
      if (startAt === -1 || startAt === ALL_SPEC_INT) {
        startAt = 1;
      }
    } else if (type === YEAR) {
      if (stopAt === -1) {
        stopAt = 2099;
      }
      if (startAt === -1 || startAt === ALL_SPEC_INT) {
        startAt = 1970;
      }
    }

    for (let i = startAt; i <= stopAt; i += incr) {
      set.add(i);
    }
  };