cdk-rds-scheduler
Version:
Automatic Start and Stop Scheduler for AWS RDS
40 lines • 6.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Cron = void 0;
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
class Cron {
static [JSII_RTTI_SYMBOL_1] = { fqn: "cdk-rds-scheduler.Cron", version: "1.1.7" };
minute;
hour;
day;
month;
weekDay;
year;
/**
* Create a cron expression
*/
constructor(options) {
this.validate(options);
this.minute = options.minute ?? '*';
this.hour = options.hour ?? '*';
// When weekDay is specified, day must be '?' to form a valid cron expression.
// AWS EventBridge Scheduler requires exactly one of day-of-month or day-of-week to be '?'.
this.day = options.day ?? (options.weekDay !== undefined ? '?' : '*');
this.month = options.month ?? '*';
this.year = options.year ?? '*';
this.weekDay = options.weekDay ?? '?';
}
/**
* Return the cron expression
*/
toString() {
return `cron(${this.minute} ${this.hour} ${this.day} ${this.month} ${this.weekDay} ${this.year})`;
}
validate(options) {
if (options.minute?.includes('/') && parseInt(options.minute.split('/')[1]) < 1) {
throw new Error('Cron expressions that lead to rates faster than 1 minute are not supported.');
}
}
}
exports.Cron = Cron;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jcm9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFvREEsTUFBYSxJQUFJOztJQUNFLE1BQU0sQ0FBUztJQUNmLElBQUksQ0FBUztJQUNiLEdBQUcsQ0FBUztJQUNaLEtBQUssQ0FBUztJQUNkLE9BQU8sQ0FBUztJQUNoQixJQUFJLENBQVM7SUFFOUI7O1NBRUs7SUFDTCxZQUFZLE9BQW9CO1FBQzlCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFdkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQztRQUNwQyxJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDO1FBQ2hDLDhFQUE4RTtRQUM5RSwyRkFBMkY7UUFDM0YsSUFBSSxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQztRQUNsQyxJQUFJLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sSUFBSSxHQUFHLENBQUM7SUFDeEMsQ0FBQztJQUVEOztTQUVLO0lBQ0UsUUFBUTtRQUNiLE9BQU8sUUFBUSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDO0lBQ3BHLENBQUM7SUFFTyxRQUFRLENBQUMsT0FBb0I7UUFDbkMsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNoRixNQUFNLElBQUksS0FBSyxDQUFDLDZFQUE2RSxDQUFDLENBQUM7UUFDakcsQ0FBQztJQUNILENBQUM7O0FBbkNILG9CQW9DQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogT3B0aW9ucyB0byBjb25maWd1cmUgYSBjcm9uIGV4cHJlc3Npb25cbiAqXG4gKiBBbGwgZmllbGRzIGFyZSBzdHJpbmdzIHNvIHlvdSBjYW4gdXNlIGNvbXBsZXggZXhwcmVzc2lvbnMuIEFic2VuY2Ugb2ZcbiAqIGEgZmllbGQgaW1wbGllcyAnKicgb3IgJz8nLCB3aGljaGV2ZXIgb25lIGlzIGFwcHJvcHJpYXRlLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2V2ZW50YnJpZGdlL2xhdGVzdC91c2VyZ3VpZGUvZWItY3Jvbi1leHByZXNzaW9ucy5odG1sXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3Jvbk9wdGlvbnMge1xuICAvKipcbiAgICAgKiBUaGUgbWludXRlIHRvIHJ1biB0aGlzIHJ1bGUgYXRcbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IC0gRXZlcnkgbWludXRlXG4gICAgICovXG4gIHJlYWRvbmx5IG1pbnV0ZT86IHN0cmluZztcblxuICAvKipcbiAgICAgKiBUaGUgaG91ciB0byBydW4gdGhpcyBydWxlIGF0XG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAtIEV2ZXJ5IGhvdXJcbiAgICAgKi9cbiAgcmVhZG9ubHkgaG91cj86IHN0cmluZztcblxuICAvKipcbiAgICAgKiBUaGUgZGF5IG9mIHRoZSBtb250aCB0byBydW4gdGhpcyBydWxlIGF0XG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAtIEV2ZXJ5IGRheSBvZiB0aGUgbW9udGhcbiAgICAgKi9cbiAgcmVhZG9ubHkgZGF5Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgICAqIFRoZSBtb250aCB0byBydW4gdGhpcyBydWxlIGF0XG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCAtIEV2ZXJ5IG1vbnRoXG4gICAgICovXG4gIHJlYWRvbmx5IG1vbnRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgICAqIFRoZSB5ZWFyIHRvIHJ1biB0aGlzIHJ1bGUgYXRcbiAgICAgKlxuICAgICAqIEBkZWZhdWx0IC0gRXZlcnkgeWVhclxuICAgICAqL1xuICByZWFkb25seSB5ZWFyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgICAqIFRoZSBkYXkgb2YgdGhlIHdlZWsgdG8gcnVuIHRoaXMgcnVsZSBhdFxuICAgICAqXG4gICAgICogQGRlZmF1bHQgLSBBbnkgZGF5IG9mIHRoZSB3ZWVrXG4gICAgICovXG4gIHJlYWRvbmx5IHdlZWtEYXk/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBDcm9uIHtcbiAgcHJpdmF0ZSByZWFkb25seSBtaW51dGU6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBob3VyOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGF5OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgbW9udGg6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSB3ZWVrRGF5OiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgeWVhcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgICAqIENyZWF0ZSBhIGNyb24gZXhwcmVzc2lvblxuICAgICAqL1xuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBDcm9uT3B0aW9ucykge1xuICAgIHRoaXMudmFsaWRhdGUob3B0aW9ucyk7XG5cbiAgICB0aGlzLm1pbnV0ZSA9IG9wdGlvbnMubWludXRlID8/ICcqJztcbiAgICB0aGlzLmhvdXIgPSBvcHRpb25zLmhvdXIgPz8gJyonO1xuICAgIC8vIFdoZW4gd2Vla0RheSBpcyBzcGVjaWZpZWQsIGRheSBtdXN0IGJlICc/JyB0byBmb3JtIGEgdmFsaWQgY3JvbiBleHByZXNzaW9uLlxuICAgIC8vIEFXUyBFdmVudEJyaWRnZSBTY2hlZHVsZXIgcmVxdWlyZXMgZXhhY3RseSBvbmUgb2YgZGF5LW9mLW1vbnRoIG9yIGRheS1vZi13ZWVrIHRvIGJlICc/Jy5cbiAgICB0aGlzLmRheSA9IG9wdGlvbnMuZGF5ID8/IChvcHRpb25zLndlZWtEYXkgIT09IHVuZGVmaW5lZCA/ICc/JyA6ICcqJyk7XG4gICAgdGhpcy5tb250aCA9IG9wdGlvbnMubW9udGggPz8gJyonO1xuICAgIHRoaXMueWVhciA9IG9wdGlvbnMueWVhciA/PyAnKic7XG4gICAgdGhpcy53ZWVrRGF5ID0gb3B0aW9ucy53ZWVrRGF5ID8/ICc/JztcbiAgfVxuXG4gIC8qKlxuICAgICAqIFJldHVybiB0aGUgY3JvbiBleHByZXNzaW9uXG4gICAgICovXG4gIHB1YmxpYyB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gYGNyb24oJHt0aGlzLm1pbnV0ZX0gJHt0aGlzLmhvdXJ9ICR7dGhpcy5kYXl9ICR7dGhpcy5tb250aH0gJHt0aGlzLndlZWtEYXl9ICR7dGhpcy55ZWFyfSlgO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZShvcHRpb25zOiBDcm9uT3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zLm1pbnV0ZT8uaW5jbHVkZXMoJy8nKSAmJiBwYXJzZUludChvcHRpb25zLm1pbnV0ZS5zcGxpdCgnLycpWzFdKSA8IDEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ3JvbiBleHByZXNzaW9ucyB0aGF0IGxlYWQgdG8gcmF0ZXMgZmFzdGVyIHRoYW4gMSBtaW51dGUgYXJlIG5vdCBzdXBwb3J0ZWQuJyk7XG4gICAgfVxuICB9XG59Il19