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);
}
};