diff --git a/dist/es5/rrule.js b/dist/es5/rrule.js index 1b08235d..b43813fa 100644 --- a/dist/es5/rrule.js +++ b/dist/es5/rrule.js @@ -99,61 +99,48 @@ return /******/ (function(modules) { // webpackBootstrap /***/ (function(module, exports, __webpack_require__) { "use strict"; - // ============================================================================= + +// ============================================================================= // Helper functions // ============================================================================= -Object.defineProperty(exports, "__esModule", { - value: true -}); +Object.defineProperty(exports, "__esModule", { value: true }); /** * Simplified version of python's range() */ - var range = function range(start, end) { - if (arguments.length === 1) { - end = start; - start = 0; - } - - var rang = []; - - for (var i = start; i < end; i++) { - rang.push(i); - } - - return rang; + if (arguments.length === 1) { + end = start; + start = 0; + } + var rang = []; + for (var i = start; i < end; i++) { + rang.push(i); + }return rang; }; - exports.range = range; - var repeat = function repeat(value, times) { - var i = 0; - var array = []; - - if (value instanceof Array) { - for (; i < times; i++) { - array[i] = [].concat(value); - } - } else { - for (; i < times; i++) { - array[i] = value; + var i = 0; + var array = []; + if (value instanceof Array) { + for (; i < times; i++) { + array[i] = [].concat(value); + } + } else { + for (; i < times; i++) { + array[i] = value; + } } - } - - return array; + return array; }; - exports.repeat = repeat; /** * Python like split */ - var split = function split(str, sep, num) { - var splits = str.split(sep); - return num ? splits.slice(0, num).concat([splits.slice(num).join(sep)]) : splits; + var splits = str.split(sep); + return num ? splits.slice(0, num).concat([splits.slice(num).join(sep)]) : splits; }; - exports.split = split; /** * closure/goog/math/math.js:modulo @@ -170,25 +157,18 @@ exports.split = split; * @return {number} a % b where the result is between 0 and b (either 0 <= x < b * or b < x <= 0, depending on the sign of b). */ - var pymod = function pymod(a, b) { - var r = a % b; // If r and b differ in sign, add b to wrap the result to the correct sign. - - return r * b < 0 ? r + b : r; + var r = a % b; + // If r and b differ in sign, add b to wrap the result to the correct sign. + return r * b < 0 ? r + b : r; }; - exports.pymod = pymod; /** * @see: */ - var divmod = function divmod(a, b) { - return { - div: Math.floor(a / b), - mod: pymod(a, b) - }; + return { div: Math.floor(a / b), mod: pymod(a, b) }; }; - exports.divmod = divmod; /** * Python-like boolean @@ -196,21 +176,18 @@ exports.divmod = divmod; * the fact that in Python an empty list's/tuple's * boolean value is False, whereas in JS it's true */ - var plb = function plb(obj) { - return obj instanceof Array && obj.length === 0 ? false : Boolean(obj); + return obj instanceof Array && obj.length === 0 ? false : Boolean(obj); }; - exports.plb = plb; /** * Return true if a value is in an array */ - var contains = function contains(arr, val) { - return arr.indexOf(val) !== -1; + return arr.indexOf(val) !== -1; }; - exports.contains = contains; +//# sourceMappingURL=helpers.js.map /***/ }), /* 1 */ @@ -234,39 +211,27 @@ exports.contains = contains; * */ -Object.defineProperty(exports, "__esModule", { - value: true -}); - +Object.defineProperty(exports, "__esModule", { value: true }); var rrule_1 = __webpack_require__(2); - exports.RRule = rrule_1.default; - var rruleset_1 = __webpack_require__(7); - exports.RRuleSet = rruleset_1.default; - var rrulestr_1 = __webpack_require__(13); - var rrule_2 = __webpack_require__(2); - exports.Frequency = rrule_2.Frequency; - var weekday_1 = __webpack_require__(3); - -exports.Weekday = weekday_1.default; // ============================================================================= +exports.Weekday = weekday_1.default; +// ============================================================================= // Export // ============================================================================= // Only one RRuleStr instance for all rrule string parsing work. - var rruleStr = new rrulestr_1.default(); - var rrulestr = function rrulestr() { return rruleStr.parse.apply(rruleStr, arguments); }; - exports.rrulestr = rrulestr; exports.default = rrule_1.default; +//# sourceMappingURL=index.js.map /***/ }), /* 2 */ @@ -275,59 +240,44 @@ exports.default = rrule_1.default; "use strict"; +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -Object.defineProperty(exports, "__esModule", { - value: true -}); - +Object.defineProperty(exports, "__esModule", { value: true }); var weekday_1 = __webpack_require__(3); - var dateutil_1 = __webpack_require__(4); - var helpers_1 = __webpack_require__(0); - var masks_1 = __webpack_require__(8); - var iterresult_1 = __webpack_require__(5); - var callbackiterresult_1 = __webpack_require__(9); - var getnlp = function getnlp() { - // Lazy, runtime import to avoid circular refs. - if (!getnlp._nlp) { - getnlp._nlp = __webpack_require__(10); - } - - return getnlp._nlp; + // Lazy, runtime import to avoid circular refs. + if (!getnlp._nlp) { + getnlp._nlp = __webpack_require__(10); + } + return getnlp._nlp; }; - var Frequency; - (function (Frequency) { - Frequency[Frequency["YEARLY"] = 0] = "YEARLY"; - Frequency[Frequency["MONTHLY"] = 1] = "MONTHLY"; - Frequency[Frequency["WEEKLY"] = 2] = "WEEKLY"; - Frequency[Frequency["DAILY"] = 3] = "DAILY"; - Frequency[Frequency["HOURLY"] = 4] = "HOURLY"; - Frequency[Frequency["MINUTELY"] = 5] = "MINUTELY"; - Frequency[Frequency["SECONDLY"] = 6] = "SECONDLY"; + Frequency[Frequency["YEARLY"] = 0] = "YEARLY"; + Frequency[Frequency["MONTHLY"] = 1] = "MONTHLY"; + Frequency[Frequency["WEEKLY"] = 2] = "WEEKLY"; + Frequency[Frequency["DAILY"] = 3] = "DAILY"; + Frequency[Frequency["HOURLY"] = 4] = "HOURLY"; + Frequency[Frequency["MINUTELY"] = 5] = "MINUTELY"; + Frequency[Frequency["SECONDLY"] = 6] = "SECONDLY"; })(Frequency = exports.Frequency || (exports.Frequency = {})); - var Days = { - MO: new weekday_1.default(0), - TU: new weekday_1.default(1), - WE: new weekday_1.default(2), - TH: new weekday_1.default(3), - FR: new weekday_1.default(4), - SA: new weekday_1.default(5), - SU: new weekday_1.default(6) + MO: new weekday_1.default(0), + TU: new weekday_1.default(1), + WE: new weekday_1.default(2), + TH: new weekday_1.default(3), + FR: new weekday_1.default(4), + SA: new weekday_1.default(5), + SU: new weekday_1.default(6) }; /** * @@ -336,2235 +286,1936 @@ var Days = { * @constructor */ -var RRule = -/*#__PURE__*/ -function () { - function RRule() { - var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; - var noCache = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - - _classCallCheck(this, RRule); - - // RFC string - this._string = null; - this._cache = noCache ? null : { - all: false, - before: [], - after: [], - between: [] - }; // used by toString() - - this.origOptions = {}; - this.options = {}; - var invalid = []; - var keys = Object.keys(options); - var defaultKeys = Object.keys(RRule.DEFAULT_OPTIONS); // Shallow copy for options and origOptions and check for invalid - - keys.forEach(function (key) { - this.origOptions[key] = options[key]; - this.options[key] = options[key]; - if (!helpers_1.contains(defaultKeys, key)) invalid.push(key); - }, this); - - if (invalid.length) { - throw new Error('Invalid options: ' + invalid.join(', ')); - } - - if (!RRule.FREQUENCIES[options.freq] && options.byeaster === null) { - throw new Error('Invalid frequency: ' + String(options.freq)); - } // Merge in default options - +var RRule = function () { + function RRule() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var noCache = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - defaultKeys.forEach(function (key) { - if (!helpers_1.contains(keys, key)) this.options[key] = RRule.DEFAULT_OPTIONS[key]; - }, this); - var opts = this.options; - if (opts.byeaster !== null) opts.freq = RRule.YEARLY; - if (!opts.dtstart) opts.dtstart = new Date(new Date().setMilliseconds(0)); - var millisecondModulo = opts.dtstart.getTime() % 1000; + _classCallCheck(this, RRule); - if (opts.wkst === null) { - opts.wkst = RRule.MO.weekday; - } else if (typeof opts.wkst === 'number') {// cool, just keep it like that - } else { - opts.wkst = opts.wkst.weekday; + // RFC string + this._string = null; + this._cache = noCache ? null : { + all: false, + before: [], + after: [], + between: [] + }; + // used by toString() + this.origOptions = {}; + this.options = {}; + var invalid = []; + var keys = Object.keys(options); + var defaultKeys = Object.keys(RRule.DEFAULT_OPTIONS); + // Shallow copy for options and origOptions and check for invalid + keys.forEach(function (key) { + this.origOptions[key] = options[key]; + this.options[key] = options[key]; + if (!helpers_1.contains(defaultKeys, key)) invalid.push(key); + }, this); + if (invalid.length) { + throw new Error('Invalid options: ' + invalid.join(', ')); + } + if (!RRule.FREQUENCIES[options.freq] && options.byeaster === null) { + throw new Error('Invalid frequency: ' + String(options.freq)); + } + // Merge in default options + defaultKeys.forEach(function (key) { + if (!helpers_1.contains(keys, key)) this.options[key] = RRule.DEFAULT_OPTIONS[key]; + }, this); + var opts = this.options; + if (opts.byeaster !== null) opts.freq = RRule.YEARLY; + if (!opts.dtstart) opts.dtstart = new Date(new Date().setMilliseconds(0)); + var millisecondModulo = opts.dtstart.getTime() % 1000; + if (opts.wkst === null) { + opts.wkst = RRule.MO.weekday; + } else if (typeof opts.wkst === 'number') { + // cool, just keep it like that + } else { + opts.wkst = opts.wkst.weekday; + } + var v = void 0; + if (opts.bysetpos !== null) { + if (typeof opts.bysetpos === 'number') opts.bysetpos = [opts.bysetpos]; + for (var i = 0; i < opts.bysetpos.length; i++) { + v = opts.bysetpos[i]; + if (v === 0 || !(v >= -366 && v <= 366)) { + throw new Error('bysetpos must be between 1 and 366,' + ' or between -366 and -1'); + } + } + } + if (!(helpers_1.plb(opts.byweekno) || helpers_1.plb(opts.byyearday) || helpers_1.plb(opts.bymonthday) || opts.byweekday !== null || opts.byeaster !== null)) { + switch (opts.freq) { + case RRule.YEARLY: + if (!opts.bymonth) opts.bymonth = opts.dtstart.getMonth() + 1; + opts.bymonthday = opts.dtstart.getDate(); + break; + case RRule.MONTHLY: + opts.bymonthday = opts.dtstart.getDate(); + break; + case RRule.WEEKLY: + opts.byweekday = [dateutil_1.default.getWeekday(opts.dtstart)]; + break; + } + } + // bymonth + if (opts.bymonth !== null && !(opts.bymonth instanceof Array)) { + opts.bymonth = [opts.bymonth]; + } + // byyearday + if (opts.byyearday !== null && !(opts.byyearday instanceof Array)) { + opts.byyearday = [opts.byyearday]; + } + // bymonthday + if (opts.bymonthday === null) { + opts.bymonthday = []; + opts.bynmonthday = []; + } else if (opts.bymonthday instanceof Array) { + var bymonthday = []; + var bynmonthday = []; + for (var _i = 0; _i < opts.bymonthday.length; _i++) { + v = opts.bymonthday[_i]; + if (v > 0) { + bymonthday.push(v); + } else if (v < 0) { + bynmonthday.push(v); + } + } + opts.bymonthday = bymonthday; + opts.bynmonthday = bynmonthday; + } else { + if (opts.bymonthday < 0) { + opts.bynmonthday = [opts.bymonthday]; + opts.bymonthday = []; + } else { + opts.bynmonthday = []; + opts.bymonthday = [opts.bymonthday]; + } + } + // byweekno + if (opts.byweekno !== null && !(opts.byweekno instanceof Array)) { + opts.byweekno = [opts.byweekno]; + } + // byweekday / bynweekday + if (opts.byweekday === null) { + opts.bynweekday = null; + } else if (typeof opts.byweekday === 'number') { + opts.byweekday = [opts.byweekday]; + opts.bynweekday = null; + } else if (opts.byweekday instanceof weekday_1.default) { + if (!opts.byweekday.n || opts.freq > RRule.MONTHLY) { + opts.byweekday = [opts.byweekday.weekday]; + opts.bynweekday = null; + } else { + opts.bynweekday = [[opts.byweekday.weekday, opts.byweekday.n]]; + opts.byweekday = null; + } + } else { + var byweekday = []; + var bynweekday = []; + for (var _i2 = 0; _i2 < opts.byweekday.length; _i2++) { + var wday = opts.byweekday[_i2]; + if (typeof wday === 'number') { + byweekday.push(wday); + } else if (!wday.n || opts.freq > RRule.MONTHLY) { + byweekday.push(wday.weekday); + } else { + bynweekday.push([wday.weekday, wday.n]); + } + } + opts.byweekday = helpers_1.plb(byweekday) ? byweekday : null; + opts.bynweekday = helpers_1.plb(bynweekday) ? bynweekday : null; + } + // byhour + if (opts.byhour === null) { + opts.byhour = opts.freq < RRule.HOURLY ? [opts.dtstart.getHours()] : null; + } else if (typeof opts.byhour === 'number') { + opts.byhour = [opts.byhour]; + } + // byminute + if (opts.byminute === null) { + opts.byminute = opts.freq < RRule.MINUTELY ? [opts.dtstart.getMinutes()] : null; + } else if (typeof opts.byminute === 'number') { + opts.byminute = [opts.byminute]; + } + // bysecond + if (opts.bysecond === null) { + opts.bysecond = opts.freq < RRule.SECONDLY ? [opts.dtstart.getSeconds()] : null; + } else if (typeof opts.bysecond === 'number') { + opts.bysecond = [opts.bysecond]; + } + if (opts.freq >= RRule.HOURLY) { + this.timeset = null; + } else { + this.timeset = []; + for (var _i3 = 0; _i3 < opts.byhour.length; _i3++) { + var hour = opts.byhour[_i3]; + for (var j = 0; j < opts.byminute.length; j++) { + var minute = opts.byminute[j]; + for (var k = 0; k < opts.bysecond.length; k++) { + var second = opts.bysecond[k]; + // python: + // datetime.time(hour, minute, second, + // tzinfo=self._tzinfo)) + this.timeset.push(new dateutil_1.default.Time(hour, minute, second, millisecondModulo)); + } + } + } + dateutil_1.default.sort(this.timeset); + } } - var v; + _createClass(RRule, [{ + key: "all", - if (opts.bysetpos !== null) { - if (typeof opts.bysetpos === 'number') opts.bysetpos = [opts.bysetpos]; - - for (var i = 0; i < opts.bysetpos.length; i++) { - v = opts.bysetpos[i]; + /** + * @param {Function} iterator - optional function that will be called + * on each date that is added. It can return false + * to stop the iteration. + * @return Array containing all recurrences. + */ + value: function all(iterator) { + if (iterator) { + return this._iter(new callbackiterresult_1.default('all', {}, iterator)); + } else { + var result = this._cacheGet('all'); + if (result === false) { + result = this._iter(new iterresult_1.default('all', {})); + this._cacheAdd('all', result); + } + return result; + } + } + /** + * Returns all the occurrences of the rrule between after and before. + * The inc keyword defines what happens if after and/or before are + * themselves occurrences. With inc == True, they will be included in the + * list, if they are found in the recurrence set. + * @return Array + */ + + }, { + key: "between", + value: function between(after, before) { + var inc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + var iterator = arguments[3]; + + var args = { + before: before, + after: after, + inc: inc + }; + if (iterator) { + return this._iter(new callbackiterresult_1.default('between', args, iterator)); + } + var result = this._cacheGet('between', args); + if (result === false) { + result = this._iter(new iterresult_1.default('between', args)); + this._cacheAdd('between', result, args); + } + return result; + } + /** + * Returns the last recurrence before the given datetime instance. + * The inc keyword defines what happens if dt is an occurrence. + * With inc == True, if dt itself is an occurrence, it will be returned. + * @return Date or null + */ + + }, { + key: "before", + value: function before(dt) { + var inc = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + + var args = { dt: dt, inc: inc }; + var result = this._cacheGet('before', args); + if (result === false) { + result = this._iter(new iterresult_1.default('before', args)); + this._cacheAdd('before', result, args); + } + return result; + } + /** + * Returns the first recurrence after the given datetime instance. + * The inc keyword defines what happens if dt is an occurrence. + * With inc == True, if dt itself is an occurrence, it will be returned. + * @return Date or null + */ + + }, { + key: "after", + value: function after(dt) { + var inc = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + + var args = { dt: dt, inc: inc }; + var result = this._cacheGet('after', args); + if (result === false) { + result = this._iter(new iterresult_1.default('after', args)); + this._cacheAdd('after', result, args); + } + return result; + } + /** + * Returns the number of recurrences in this set. It will have go trough + * the whole recurrence, if this hasn't been done before. + */ + + }, { + key: "count", + value: function count() { + return this.all().length; + } + /** + * Converts the rrule into its string representation + * @see + * @return String + */ + + }, { + key: "toString", + value: function toString() { + return RRule.optionsToString(this.origOptions); + } + /** + * Will convert all rules described in nlp:ToText + * to text. + */ + + }, { + key: "toText", + value: function toText(gettext, language) { + return getnlp().toText(this, gettext, language); + } + }, { + key: "isFullyConvertibleToText", + value: function isFullyConvertibleToText() { + return getnlp().isFullyConvertible(this); + } + /** + * @param {String} what - all/before/after/between + * @param {Array,Date} value - an array of dates, one date, or null + * @param {Object?} args - _iter arguments + */ + + }, { + key: "_cacheAdd", + value: function _cacheAdd(what, value, args) { + if (!this._cache) return; + if (value) { + value = value instanceof Date ? dateutil_1.default.clone(value) : dateutil_1.default.cloneDates(value); + } + if (what === 'all') { + this._cache.all = value; + } else { + args._value = value; + this._cache[what].push(args); + } + } + /** + * @return false - not in the cache + * null - cached, but zero occurrences (before/after) + * Date - cached (before/after) + * [] - cached, but zero occurrences (all/between) + * [Date1, DateN] - cached (all/between) + */ + + }, { + key: "_cacheGet", + value: function _cacheGet(what, args) { + if (!this._cache) return false; + var cached = false; + var argsKeys = args ? Object.keys(args) : []; + var findCacheDiff = function findCacheDiff(item) { + for (var i = 0; i < argsKeys.length; i++) { + var key = argsKeys[i]; + if (String(args[key]) !== String(item[key])) { + return true; + } + } + return false; + }; + var cachedObject = this._cache[what]; + if (what === 'all') { + cached = this._cache.all; + } else if (cachedObject instanceof Array) { + // Let's see whether we've already called the + // 'what' method with the same 'args' + for (var i = 0; i < cachedObject.length; i++) { + var item = cachedObject[i]; + if (argsKeys.length && findCacheDiff(item)) continue; + cached = item._value; + break; + } + } + if (!cached && this._cache.all) { + // Not in the cache, but we already know all the occurrences, + // so we can find the correct dates from the cached ones. + var iterResult = new iterresult_1.default(what, args); + for (var _i4 = 0; _i4 < this._cache.all.length; _i4++) { + if (!iterResult.accept(this._cache.all[_i4])) break; + } + cached = iterResult.getValue(); + this._cacheAdd(what, cached, args); + } + return cached instanceof Array ? dateutil_1.default.cloneDates(cached) : cached instanceof Date ? dateutil_1.default.clone(cached) : cached; + } + /** + * @return a RRule instance with the same freq and options + * as this one (cache is not cloned) + */ + + }, { + key: "clone", + value: function clone() { + return new RRule(this.origOptions); + } + }, { + key: "_iter", + value: function _iter(iterResult) { + var _RRule$YEARLY$RRule$M; + + /* Since JavaScript doesn't have the python's yield operator (<1.7), + we use the IterResult object that tells us when to stop iterating. + */ + var dtstart = this.options.dtstart; + var dtstartMillisecondModulo = this.options.dtstart.valueOf() % 1000; + var year = dtstart.getFullYear(); + var month = dtstart.getMonth() + 1; + var day = dtstart.getDate(); + var hour = dtstart.getHours(); + var minute = dtstart.getMinutes(); + var second = dtstart.getSeconds(); + var weekday = dateutil_1.default.getWeekday(dtstart); + // Some local variables to speed things up a bit + var freq = this.options.freq; + var interval = this.options.interval; + var wkst = this.options.wkst; + var until = this.options.until; + var bymonth = this.options.bymonth; + var byweekno = this.options.byweekno; + var byyearday = this.options.byyearday; + var byweekday = this.options.byweekday; + var byeaster = this.options.byeaster; + var bymonthday = this.options.bymonthday; + var bynmonthday = this.options.bynmonthday; + var bysetpos = this.options.bysetpos; + var byhour = this.options.byhour; + var byminute = this.options.byminute; + var bysecond = this.options.bysecond; + // tslint:disable-next-line:no-use-before-declare + var ii = new Iterinfo(this); + ii.rebuild(year, month); + var getdayset = (_RRule$YEARLY$RRule$M = {}, _defineProperty(_RRule$YEARLY$RRule$M, RRule.YEARLY, ii.ydayset), _defineProperty(_RRule$YEARLY$RRule$M, RRule.MONTHLY, ii.mdayset), _defineProperty(_RRule$YEARLY$RRule$M, RRule.WEEKLY, ii.wdayset), _defineProperty(_RRule$YEARLY$RRule$M, RRule.DAILY, ii.ddayset), _defineProperty(_RRule$YEARLY$RRule$M, RRule.HOURLY, ii.ddayset), _defineProperty(_RRule$YEARLY$RRule$M, RRule.MINUTELY, ii.ddayset), _defineProperty(_RRule$YEARLY$RRule$M, RRule.SECONDLY, ii.ddayset), _RRule$YEARLY$RRule$M)[freq]; + var timeset = void 0; + var gettimeset = void 0; + if (freq < RRule.HOURLY) { + timeset = this.timeset; + } else { + var _RRule$YEARLY$RRule$M2; - if (v === 0 || !(v >= -366 && v <= 366)) { - throw new Error('bysetpos must be between 1 and 366,' + ' or between -366 and -1'); + gettimeset = (_RRule$YEARLY$RRule$M2 = {}, _defineProperty(_RRule$YEARLY$RRule$M2, RRule.YEARLY, ii.ydayset), _defineProperty(_RRule$YEARLY$RRule$M2, RRule.MONTHLY, ii.mdayset), _defineProperty(_RRule$YEARLY$RRule$M2, RRule.WEEKLY, ii.wdayset), _defineProperty(_RRule$YEARLY$RRule$M2, RRule.DAILY, ii.ddayset), _defineProperty(_RRule$YEARLY$RRule$M2, RRule.HOURLY, ii.htimeset), _defineProperty(_RRule$YEARLY$RRule$M2, RRule.MINUTELY, ii.mtimeset), _defineProperty(_RRule$YEARLY$RRule$M2, RRule.SECONDLY, ii.stimeset), _RRule$YEARLY$RRule$M2)[freq]; + if (freq >= RRule.HOURLY && helpers_1.plb(byhour) && !helpers_1.contains(byhour, hour) || freq >= RRule.MINUTELY && helpers_1.plb(byminute) && !helpers_1.contains(byminute, minute) || freq >= RRule.SECONDLY && helpers_1.plb(bysecond) && !helpers_1.contains(bysecond, second)) { + timeset = []; + } else { + timeset = gettimeset.call(ii, hour, minute, second, dtstartMillisecondModulo); + } + } + var total = 0; + var count = this.options.count; + var i = void 0; + var k = void 0; + var dm = void 0; + var div = void 0; + var mod = void 0; + var tmp = void 0; + var pos = void 0; + var dayset = void 0; + var start = void 0; + var end = void 0; + var fixday = void 0; + var filtered = void 0; + while (true) { + // Get dayset with the right frequency + tmp = getdayset.call(ii, year, month, day); + dayset = tmp[0]; + start = tmp[1]; + end = tmp[2]; + // Do the "hard" work ;-) + filtered = false; + for (var j = start; j < end; j++) { + i = dayset[j]; + filtered = helpers_1.plb(bymonth) && !helpers_1.contains(bymonth, ii.mmask[i]) || helpers_1.plb(byweekno) && !ii.wnomask[i] || helpers_1.plb(byweekday) && !helpers_1.contains(byweekday, ii.wdaymask[i]) || helpers_1.plb(ii.nwdaymask) && !ii.nwdaymask[i] || byeaster !== null && !helpers_1.contains(ii.eastermask, i) || (helpers_1.plb(bymonthday) || helpers_1.plb(bynmonthday)) && !helpers_1.contains(bymonthday, ii.mdaymask[i]) && !helpers_1.contains(bynmonthday, ii.nmdaymask[i]) || helpers_1.plb(byyearday) && (i < ii.yearlen && !helpers_1.contains(byyearday, i + 1) && !helpers_1.contains(byyearday, -ii.yearlen + i) || i >= ii.yearlen && !helpers_1.contains(byyearday, i + 1 - ii.yearlen) && !helpers_1.contains(byyearday, -ii.nextyearlen + i - ii.yearlen)); + if (filtered) dayset[i] = null; + } + // Output results + if (helpers_1.plb(bysetpos) && helpers_1.plb(timeset)) { + var daypos = void 0; + var timepos = void 0; + var poslist = []; + for (var _j = 0; _j < bysetpos.length; _j++) { + pos = bysetpos[_j]; + if (pos < 0) { + daypos = Math.floor(pos / timeset.length); + timepos = helpers_1.pymod(pos, timeset.length); + } else { + daypos = Math.floor((pos - 1) / timeset.length); + timepos = helpers_1.pymod(pos - 1, timeset.length); + } + try { + tmp = []; + for (k = start; k < end; k++) { + var val = dayset[k]; + if (val === null) continue; + tmp.push(val); + } + var _i5 = void 0; + if (daypos < 0) { + // we're trying to emulate python's aList[-n] + _i5 = tmp.slice(daypos)[0]; + } else { + _i5 = tmp[daypos]; + } + var time = timeset[timepos]; + var date = dateutil_1.default.fromOrdinal(ii.yearordinal + _i5); + var res = dateutil_1.default.combine(date, time); + // XXX: can this ever be in the array? + // - compare the actual date instead? + if (!helpers_1.contains(poslist, res)) poslist.push(res); + // tslint:disable-next-line:no-empty + } catch (e) {} + } + dateutil_1.default.sort(poslist); + for (var _j2 = 0; _j2 < poslist.length; _j2++) { + var _res = poslist[_j2]; + if (until && _res > until) { + this._len = total; + return iterResult.getValue(); + } else if (_res >= dtstart) { + ++total; + if (!iterResult.accept(_res)) return iterResult.getValue(); + if (count) { + --count; + if (!count) { + this._len = total; + return iterResult.getValue(); + } + } + } + } + } else { + for (var _j3 = start; _j3 < end; _j3++) { + i = dayset[_j3]; + if (i !== null) { + var _date = dateutil_1.default.fromOrdinal(ii.yearordinal + i); + for (k = 0; k < timeset.length; k++) { + var _time = timeset[k]; + var _res2 = dateutil_1.default.combine(_date, _time); + if (until && _res2 > until) { + this._len = total; + return iterResult.getValue(); + } else if (_res2 >= dtstart) { + ++total; + if (!iterResult.accept(_res2)) { + return iterResult.getValue(); + } + if (count) { + --count; + if (!count) { + this._len = total; + return iterResult.getValue(); + } + } + } + } + } + } + } + // Handle frequency and interval + fixday = false; + if (freq === RRule.YEARLY) { + year += interval; + if (year > dateutil_1.default.MAXYEAR) { + this._len = total; + return iterResult.getValue(); + } + ii.rebuild(year, month); + } else if (freq === RRule.MONTHLY) { + month += interval; + if (month > 12) { + div = Math.floor(month / 12); + mod = helpers_1.pymod(month, 12); + month = mod; + year += div; + if (month === 0) { + month = 12; + --year; + } + if (year > dateutil_1.default.MAXYEAR) { + this._len = total; + return iterResult.getValue(); + } + } + ii.rebuild(year, month); + } else if (freq === RRule.WEEKLY) { + if (wkst > weekday) { + day += -(weekday + 1 + (6 - wkst)) + interval * 7; + } else { + day += -(weekday - wkst) + interval * 7; + } + weekday = wkst; + fixday = true; + } else if (freq === RRule.DAILY) { + day += interval; + fixday = true; + } else if (freq === RRule.HOURLY) { + if (filtered) { + // Jump to one iteration before next day + hour += Math.floor((23 - hour) / interval) * interval; + } + while (true) { + hour += interval; + dm = helpers_1.divmod(hour, 24); + div = dm.div; + mod = dm.mod; + if (div) { + hour = mod; + day += div; + fixday = true; + } + if (!helpers_1.plb(byhour) || helpers_1.contains(byhour, hour)) break; + } + timeset = gettimeset.call(ii, hour, minute, second); + } else if (freq === RRule.MINUTELY) { + if (filtered) { + // Jump to one iteration before next day + minute += Math.floor((1439 - (hour * 60 + minute)) / interval) * interval; + } + while (true) { + minute += interval; + dm = helpers_1.divmod(minute, 60); + div = dm.div; + mod = dm.mod; + if (div) { + minute = mod; + hour += div; + dm = helpers_1.divmod(hour, 24); + div = dm.div; + mod = dm.mod; + if (div) { + hour = mod; + day += div; + fixday = true; + filtered = false; + } + } + if ((!helpers_1.plb(byhour) || helpers_1.contains(byhour, hour)) && (!helpers_1.plb(byminute) || helpers_1.contains(byminute, minute))) { + break; + } + } + timeset = gettimeset.call(ii, hour, minute, second); + } else if (freq === RRule.SECONDLY) { + if (filtered) { + // Jump to one iteration before next day + second += Math.floor((86399 - (hour * 3600 + minute * 60 + second)) / interval) * interval; + } + while (true) { + second += interval; + dm = helpers_1.divmod(second, 60); + div = dm.div; + mod = dm.mod; + if (div) { + second = mod; + minute += div; + dm = helpers_1.divmod(minute, 60); + div = dm.div; + mod = dm.mod; + if (div) { + minute = mod; + hour += div; + dm = helpers_1.divmod(hour, 24); + div = dm.div; + mod = dm.mod; + if (div) { + hour = mod; + day += div; + fixday = true; + } + } + } + if ((!helpers_1.plb(byhour) || helpers_1.contains(byhour, hour)) && (!helpers_1.plb(byminute) || helpers_1.contains(byminute, minute)) && (!helpers_1.plb(bysecond) || helpers_1.contains(bysecond, second))) { + break; + } + } + timeset = gettimeset.call(ii, hour, minute, second); + } + if (fixday && day > 28) { + var daysinmonth = dateutil_1.default.monthRange(year, month - 1)[1]; + if (day > daysinmonth) { + while (day > daysinmonth) { + day -= daysinmonth; + ++month; + if (month === 13) { + month = 1; + ++year; + if (year > dateutil_1.default.MAXYEAR) { + this._len = total; + return iterResult.getValue(); + } + } + daysinmonth = dateutil_1.default.monthRange(year, month - 1)[1]; + } + ii.rebuild(year, month); + } + } + } } - } - } + }], [{ + key: "parseText", + value: function parseText(text, language) { + return getnlp().parseText(text, language); + } + }, { + key: "fromText", + value: function fromText(text, language) { + return getnlp().fromText(text, language); + } + }, { + key: "parseString", + value: function parseString(rfcString) { + rfcString = rfcString.replace(/^\s+|\s+$/, ''); + if (!rfcString.length) return null; + var key = void 0; + var value = void 0; + var attr = void 0; + var attrs = rfcString.split(';'); + var options = {}; + for (var i = 0; i < attrs.length; i++) { + attr = attrs[i].split('='); + key = attr[0]; + value = attr[1]; + switch (key) { + case 'FREQ': + options.freq = Frequency[value]; + break; + case 'WKST': + options.wkst = Days[value]; + break; + case 'COUNT': + case 'INTERVAL': + case 'BYSETPOS': + case 'BYMONTH': + case 'BYMONTHDAY': + case 'BYYEARDAY': + case 'BYWEEKNO': + case 'BYHOUR': + case 'BYMINUTE': + case 'BYSECOND': + if (value.indexOf(',') !== -1) { + value = value.split(','); + for (var j = 0; j < value.length; j++) { + if (/^[+-]?\d+$/.test(value[j].toString())) { + value[j] = Number(value[j]); + } + } + } else if (/^[+-]?\d+$/.test(value)) { + value = Number(value); + } + key = key.toLowerCase(); + // @ts-ignore + options[key] = value; + break; + case 'BYDAY': + // => byweekday + var n = void 0; + var wday = void 0; + var day = void 0; + var days = value.split(','); + options.byweekday = []; + for (var _j4 = 0; _j4 < days.length; _j4++) { + day = days[_j4]; + if (day.length === 2) { + // MO, TU, ... + wday = Days[day]; // wday instanceof Weekday + options.byweekday.push(wday); + } else { + // -1MO, +3FR, 1SO, ... + var parts = day.match(/^([+-]?\d)([A-Z]{2})$/); + n = Number(parts[1]); + var wdaypart = parts[2]; + wday = Days[wdaypart].weekday; + options.byweekday.push(new weekday_1.default(wday, n)); + } + } + break; + case 'DTSTART': + options.dtstart = dateutil_1.default.untilStringToDate(value); + break; + case 'UNTIL': + options.until = dateutil_1.default.untilStringToDate(value); + break; + case 'BYEASTER': + options.byeaster = Number(value); + break; + default: + throw new Error("Unknown RRULE property '" + key + "'"); + } + } + return options; + } + }, { + key: "fromString", + value: function fromString(str) { + return new RRule(RRule.parseString(str)); + } + }, { + key: "optionsToString", + value: function optionsToString(options) { + var pairs = []; + var keys = Object.keys(options); + var defaultKeys = Object.keys(RRule.DEFAULT_OPTIONS); + for (var i = 0; i < keys.length; i++) { + if (!helpers_1.contains(defaultKeys, keys[i])) continue; + var key = keys[i].toUpperCase(); + var value = options[keys[i]]; + var strValues = []; + if (value === null || value instanceof Array && !value.length) continue; + switch (key) { + case 'FREQ': + value = RRule.FREQUENCIES[options.freq]; + break; + case 'WKST': + if (!(value instanceof weekday_1.default)) { + value = new weekday_1.default(value); + } + break; + case 'BYWEEKDAY': + /* + NOTE: BYWEEKDAY is a special case. + RRule() deconstructs the rule.options.byweekday array + into an array of Weekday arguments. + On the other hand, rule.origOptions is an array of Weekdays. + We need to handle both cases here. + It might be worth change RRule to keep the Weekdays. + Also, BYWEEKDAY (used by RRule) vs. BYDAY (RFC) + */ + key = 'BYDAY'; + if (!(value instanceof Array)) value = [value]; + for (var j = 0; j < value.length; j++) { + var wday = value[j]; + if (wday instanceof weekday_1.default) { + // good + } else if (wday instanceof Array) { + wday = new weekday_1.default(wday[0], wday[1]); + } else { + wday = new weekday_1.default(wday); + } + strValues[j] = wday.toString(); + } + value = strValues; + break; + case 'DTSTART': + case 'UNTIL': + value = dateutil_1.default.timeToUntilString(value); + break; + default: + if (value instanceof Array) { + for (var _j5 = 0; _j5 < value.length; _j5++) { + strValues[_j5] = String(value[_j5]); + } + value = strValues; + } else { + value = String(value); + } + } + pairs.push([key, value]); + } + var strings = []; + for (var _i6 = 0; _i6 < pairs.length; _i6++) { + var attr = pairs[_i6]; + strings.push(attr[0] + '=' + attr[1].toString()); + } + return strings.join(';'); + } + }]); + + return RRule; +}(); +// RRule class 'constants' - if (!(helpers_1.plb(opts.byweekno) || helpers_1.plb(opts.byyearday) || helpers_1.plb(opts.bymonthday) || opts.byweekday !== null || opts.byeaster !== null)) { - switch (opts.freq) { - case RRule.YEARLY: - if (!opts.bymonth) opts.bymonth = opts.dtstart.getMonth() + 1; - opts.bymonthday = opts.dtstart.getDate(); - break; - case RRule.MONTHLY: - opts.bymonthday = opts.dtstart.getDate(); - break; +RRule.FREQUENCIES = ['YEARLY', 'MONTHLY', 'WEEKLY', 'DAILY', 'HOURLY', 'MINUTELY', 'SECONDLY']; +RRule.YEARLY = 0; +RRule.MONTHLY = 1; +RRule.WEEKLY = 2; +RRule.DAILY = 3; +RRule.HOURLY = 4; +RRule.MINUTELY = 5; +RRule.SECONDLY = 6; +RRule.DEFAULT_OPTIONS = { + freq: null, + dtstart: null, + interval: 1, + wkst: Days.MO, + count: null, + until: null, + bysetpos: null, + bymonth: null, + bymonthday: null, + bynmonthday: null, + byyearday: null, + byweekno: null, + byweekday: null, + bynweekday: null, + byhour: null, + byminute: null, + bysecond: null, + byeaster: null +}; +RRule.MO = Days.MO; +RRule.TU = Days.TU; +RRule.WE = Days.WE; +RRule.TH = Days.TH; +RRule.FR = Days.FR; +RRule.SA = Days.SA; +RRule.SU = Days.SU; +exports.default = RRule; +// ============================================================================= +// Iterinfo +// ============================================================================= - case RRule.WEEKLY: - opts.byweekday = [dateutil_1.default.getWeekday(opts.dtstart)]; - break; - } - } // bymonth +var Iterinfo = function () { + function Iterinfo(rrule) { + _classCallCheck(this, Iterinfo); + + this.rrule = rrule; + this.lastyear = null; + this.lastmonth = null; + this.yearlen = null; + this.nextyearlen = null; + this.yearordinal = null; + this.yearweekday = null; + this.mmask = null; + this.mrange = null; + this.mdaymask = null; + this.nmdaymask = null; + this.wdaymask = null; + this.wnomask = null; + this.nwdaymask = null; + this.eastermask = null; + } + + _createClass(Iterinfo, [{ + key: "easter", + value: function easter(y) { + var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; + + var a = y % 19; + var b = Math.floor(y / 100); + var c = y % 100; + var d = Math.floor(b / 4); + var e = b % 4; + var f = Math.floor((b + 8) / 25); + var g = Math.floor((b - f + 1) / 3); + var h = Math.floor(19 * a + b - d - g + 15) % 30; + var i = Math.floor(c / 4); + var k = c % 4; + var l = Math.floor(32 + 2 * e + 2 * i - h - k) % 7; + var m = Math.floor((a + 11 * h + 22 * l) / 451); + var month = Math.floor((h + l - 7 * m + 114) / 31); + var day = (h + l - 7 * m + 114) % 31 + 1; + var date = Date.UTC(y, month - 1, day + offset); + var yearStart = Date.UTC(y, 0, 1); + return [Math.ceil((date - yearStart) / (1000 * 60 * 60 * 24))]; + } + }, { + key: "rebuild", + value: function rebuild(year, month) { + var rr = this.rrule; + if (year !== this.lastyear) { + this.yearlen = dateutil_1.default.isLeapYear(year) ? 366 : 365; + this.nextyearlen = dateutil_1.default.isLeapYear(year + 1) ? 366 : 365; + var firstyday = new Date(year, 0, 1); + this.yearordinal = dateutil_1.default.toOrdinal(firstyday); + this.yearweekday = dateutil_1.default.getWeekday(firstyday); + var wday = dateutil_1.default.getWeekday(new Date(year, 0, 1)); + if (this.yearlen === 365) { + this.mmask = [].concat(masks_1.M365MASK); + this.mdaymask = [].concat(masks_1.MDAY365MASK); + this.nmdaymask = [].concat(masks_1.NMDAY365MASK); + this.wdaymask = masks_1.WDAYMASK.slice(wday); + this.mrange = [].concat(masks_1.M365RANGE); + } else { + this.mmask = [].concat(masks_1.M366MASK); + this.mdaymask = [].concat(masks_1.MDAY366MASK); + this.nmdaymask = [].concat(masks_1.NMDAY366MASK); + this.wdaymask = masks_1.WDAYMASK.slice(wday); + this.mrange = [].concat(masks_1.M366RANGE); + } + if (!helpers_1.plb(rr.options.byweekno)) { + this.wnomask = null; + } else { + this.wnomask = helpers_1.repeat(0, this.yearlen + 7); + var no1wkst = void 0; + var firstwkst = void 0; + var wyearlen = void 0; + no1wkst = firstwkst = helpers_1.pymod(7 - this.yearweekday + rr.options.wkst, 7); + if (no1wkst >= 4) { + no1wkst = 0; + // Number of days in the year, plus the days we got + // from last year. + wyearlen = this.yearlen + helpers_1.pymod(this.yearweekday - rr.options.wkst, 7); + } else { + // Number of days in the year, minus the days we + // left in last year. + wyearlen = this.yearlen - no1wkst; + } + var div = Math.floor(wyearlen / 7); + var mod = helpers_1.pymod(wyearlen, 7); + var numweeks = Math.floor(div + mod / 4); + for (var j = 0; j < rr.options.byweekno.length; j++) { + var i = void 0; + var n = rr.options.byweekno[j]; + if (n < 0) { + n += numweeks + 1; + } + if (!(n > 0 && n <= numweeks)) { + continue; + } + if (n > 1) { + i = no1wkst + (n - 1) * 7; + if (no1wkst !== firstwkst) { + i -= 7 - firstwkst; + } + } else { + i = no1wkst; + } + for (var k = 0; k < 7; k++) { + this.wnomask[i] = 1; + i++; + if (this.wdaymask[i] === rr.options.wkst) break; + } + } + if (helpers_1.contains(rr.options.byweekno, 1)) { + // Check week number 1 of next year as well + // orig-TODO : Check -numweeks for next year. + var _i7 = no1wkst + numweeks * 7; + if (no1wkst !== firstwkst) _i7 -= 7 - firstwkst; + if (_i7 < this.yearlen) { + // If week starts in next year, we + // don't care about it. + for (var _j6 = 0; _j6 < 7; _j6++) { + this.wnomask[_i7] = 1; + _i7 += 1; + if (this.wdaymask[_i7] === rr.options.wkst) break; + } + } + } + if (no1wkst) { + // Check last week number of last year as + // well. If no1wkst is 0, either the year + // started on week start, or week number 1 + // got days from last year, so there are no + // days from last year's last week number in + // this year. + var lnumweeks = void 0; + if (!helpers_1.contains(rr.options.byweekno, -1)) { + var lyearweekday = dateutil_1.default.getWeekday(new Date(year - 1, 0, 1)); + var lno1wkst = helpers_1.pymod(7 - lyearweekday.valueOf() + rr.options.wkst, 7); + var lyearlen = dateutil_1.default.isLeapYear(year - 1) ? 366 : 365; + if (lno1wkst >= 4) { + lno1wkst = 0; + lnumweeks = Math.floor(52 + helpers_1.pymod(lyearlen + helpers_1.pymod(lyearweekday - rr.options.wkst, 7), 7) / 4); + } else { + lnumweeks = Math.floor(52 + helpers_1.pymod(this.yearlen - no1wkst, 7) / 4); + } + } else { + lnumweeks = -1; + } + if (helpers_1.contains(rr.options.byweekno, lnumweeks)) { + for (var _i8 = 0; _i8 < no1wkst; _i8++) { + this.wnomask[_i8] = 1; + } + } + } + } + } + if (helpers_1.plb(rr.options.bynweekday) && (month !== this.lastmonth || year !== this.lastyear)) { + var ranges = []; + if (rr.options.freq === RRule.YEARLY) { + if (helpers_1.plb(rr.options.bymonth) && rr.options.bymonth instanceof Array) { + for (var _j7 = 0; _j7 < rr.options.bymonth.length; _j7++) { + month = rr.options.bymonth[_j7]; + ranges.push(this.mrange.slice(month - 1, month + 1)); + } + } else { + ranges = [[0, this.yearlen]]; + } + } else if (rr.options.freq === RRule.MONTHLY) { + ranges = [this.mrange.slice(month - 1, month + 1)]; + } + if (helpers_1.plb(ranges)) { + // Weekly frequency won't get here, so we may not + // care about cross-year weekly periods. + this.nwdaymask = helpers_1.repeat(0, this.yearlen); + for (var _j8 = 0; _j8 < ranges.length; _j8++) { + var rang = ranges[_j8]; + var first = rang[0]; + var last = rang[1]; + last -= 1; + for (var _k = 0; _k < rr.options.bynweekday.length; _k++) { + var _i9 = void 0; + var _wday = rr.options.bynweekday[_k][0]; + var _n = rr.options.bynweekday[_k][1]; + if (_n < 0) { + _i9 = last + (_n + 1) * 7; + _i9 -= helpers_1.pymod(this.wdaymask[_i9] - _wday, 7); + } else { + _i9 = first + (_n - 1) * 7; + _i9 += helpers_1.pymod(7 - this.wdaymask[_i9] + _wday, 7); + } + if (first <= _i9 && _i9 <= last) this.nwdaymask[_i9] = 1; + } + } + } + this.lastyear = year; + this.lastmonth = month; + } + if (rr.options.byeaster !== null) { + this.eastermask = this.easter(year, rr.options.byeaster); + } + } + }, { + key: "ydayset", + value: function ydayset(_, __, ___) { + return [helpers_1.range(this.yearlen), 0, this.yearlen]; + } + }, { + key: "mdayset", + value: function mdayset(_, month, __) { + var set = helpers_1.repeat(null, this.yearlen); + var start = this.mrange[month - 1]; + var end = this.mrange[month]; + for (var i = start; i < end; i++) { + set[i] = i; + }return [set, start, end]; + } + }, { + key: "wdayset", + value: function wdayset(year, month, day) { + // We need to handle cross-year weeks here. + var set = helpers_1.repeat(null, this.yearlen + 7); + var i = dateutil_1.default.toOrdinal(new Date(year, month - 1, day)) - this.yearordinal; + var start = i; + for (var j = 0; j < 7; j++) { + set[i] = i; + ++i; + if (this.wdaymask[i] === this.rrule.options.wkst) break; + } + return [set, start, i]; + } + }, { + key: "ddayset", + value: function ddayset(year, month, day) { + var set = helpers_1.repeat(null, this.yearlen); + var i = dateutil_1.default.toOrdinal(new Date(year, month - 1, day)) - this.yearordinal; + set[i] = i; + return [set, i, i + 1]; + } + }, { + key: "htimeset", + value: function htimeset(hour, minute, second, millisecond) { + var set = []; + var rr = this.rrule; + for (var i = 0; i < rr.options.byminute.length; i++) { + minute = rr.options.byminute[i]; + for (var j = 0; j < rr.options.bysecond.length; j++) { + second = rr.options.bysecond[j]; + set.push(new dateutil_1.default.Time(hour, minute, second, millisecond)); + } + } + dateutil_1.default.sort(set); + return set; + } + }, { + key: "mtimeset", + value: function mtimeset(hour, minute, second, millisecond) { + var set = []; + var rr = this.rrule; + for (var j = 0; j < rr.options.bysecond.length; j++) { + second = rr.options.bysecond[j]; + set.push(new dateutil_1.default.Time(hour, minute, second, millisecond)); + } + dateutil_1.default.sort(set); + return set; + } + }, { + key: "stimeset", + value: function stimeset(hour, minute, second, millisecond) { + return [new dateutil_1.default.Time(hour, minute, second, millisecond)]; + } + }]); + return Iterinfo; +}(); +//# sourceMappingURL=rrule.js.map - if (opts.bymonth !== null && !(opts.bymonth instanceof Array)) { - opts.bymonth = [opts.bymonth]; - } // byyearday +/***/ }), +/* 3 */ +/***/ (function(module, exports, __webpack_require__) { +"use strict"; - if (opts.byyearday !== null && !(opts.byyearday instanceof Array)) { - opts.byyearday = [opts.byyearday]; - } // bymonthday +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - if (opts.bymonthday === null) { - opts.bymonthday = []; - opts.bynmonthday = []; - } else if (opts.bymonthday instanceof Array) { - var bymonthday = []; - var bynmonthday = []; +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - for (var _i = 0; _i < opts.bymonthday.length; _i++) { - v = opts.bymonthday[_i]; +Object.defineProperty(exports, "__esModule", { value: true }); +var WDAYS = ['MO', 'TU', 'WE', 'TH', 'FR', 'SA', 'SU']; +// ============================================================================= +// Weekday +// ============================================================================= - if (v > 0) { - bymonthday.push(v); - } else if (v < 0) { - bynmonthday.push(v); - } - } +var Weekday = function () { + function Weekday(weekday, n) { + _classCallCheck(this, Weekday); - opts.bymonthday = bymonthday; - opts.bynmonthday = bynmonthday; - } else { - if (opts.bymonthday < 0) { - opts.bynmonthday = [opts.bymonthday]; - opts.bymonthday = []; - } else { - opts.bynmonthday = []; - opts.bymonthday = [opts.bymonthday]; - } - } // byweekno - - - if (opts.byweekno !== null && !(opts.byweekno instanceof Array)) { - opts.byweekno = [opts.byweekno]; - } // byweekday / bynweekday - - - if (opts.byweekday === null) { - opts.bynweekday = null; - } else if (typeof opts.byweekday === 'number') { - opts.byweekday = [opts.byweekday]; - opts.bynweekday = null; - } else if (opts.byweekday instanceof weekday_1.default) { - if (!opts.byweekday.n || opts.freq > RRule.MONTHLY) { - opts.byweekday = [opts.byweekday.weekday]; - opts.bynweekday = null; - } else { - opts.bynweekday = [[opts.byweekday.weekday, opts.byweekday.n]]; - opts.byweekday = null; - } - } else { - var byweekday = []; - var bynweekday = []; + if (n === 0) throw new Error("Can't create weekday with n == 0"); + this.weekday = weekday; + this.n = n; + } + // __call__ - Cannot call the object directly, do it through + // e.g. RRule.TH.nth(-1) instead, - for (var _i2 = 0; _i2 < opts.byweekday.length; _i2++) { - var wday = opts.byweekday[_i2]; - if (typeof wday === 'number') { - byweekday.push(wday); - } else if (!wday.n || opts.freq > RRule.MONTHLY) { - byweekday.push(wday.weekday); - } else { - bynweekday.push([wday.weekday, wday.n]); + _createClass(Weekday, [{ + key: "nth", + value: function nth(n) { + return this.n === n ? this : new Weekday(this.weekday, n); } - } + // __eq__ - opts.byweekday = helpers_1.plb(byweekday) ? byweekday : null; - opts.bynweekday = helpers_1.plb(bynweekday) ? bynweekday : null; - } // byhour + }, { + key: "equals", + value: function equals(other) { + return this.weekday === other.weekday && this.n === other.n; + } + // __repr__ + + }, { + key: "toString", + value: function toString() { + var s = WDAYS[this.weekday]; + if (this.n) s = (this.n > 0 ? '+' : '') + String(this.n) + s; + return s; + } + }, { + key: "getJsWeekday", + value: function getJsWeekday() { + return this.weekday === 6 ? 0 : this.weekday + 1; + } + }]); + return Weekday; +}(); - if (opts.byhour === null) { - opts.byhour = opts.freq < RRule.HOURLY ? [opts.dtstart.getHours()] : null; - } else if (typeof opts.byhour === 'number') { - opts.byhour = [opts.byhour]; - } // byminute +exports.default = Weekday; +//# sourceMappingURL=weekday.js.map +/***/ }), +/* 4 */ +/***/ (function(module, exports, __webpack_require__) { - if (opts.byminute === null) { - opts.byminute = opts.freq < RRule.MINUTELY ? [opts.dtstart.getMinutes()] : null; - } else if (typeof opts.byminute === 'number') { - opts.byminute = [opts.byminute]; - } // bysecond +"use strict"; - if (opts.bysecond === null) { - opts.bysecond = opts.freq < RRule.SECONDLY ? [opts.dtstart.getSeconds()] : null; - } else if (typeof opts.bysecond === 'number') { - opts.bysecond = [opts.bysecond]; - } +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - if (opts.freq >= RRule.HOURLY) { - this.timeset = null; - } else { - this.timeset = []; +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - for (var _i3 = 0; _i3 < opts.byhour.length; _i3++) { - var hour = opts.byhour[_i3]; +Object.defineProperty(exports, "__esModule", { value: true }); - for (var j = 0; j < opts.byminute.length; j++) { - var minute = opts.byminute[j]; +var Time = function () { + function Time(hour, minute, second, millisecond) { + _classCallCheck(this, Time); - for (var k = 0; k < opts.bysecond.length; k++) { - var second = opts.bysecond[k]; // python: - // datetime.time(hour, minute, second, - // tzinfo=self._tzinfo)) + this.hour = hour; + this.minute = minute; + this.second = second; + this.millisecond = millisecond || 0; + } - this.timeset.push(new dateutil_1.default.Time(hour, minute, second, millisecondModulo)); - } + _createClass(Time, [{ + key: "getHours", + value: function getHours() { + return this.hour; } - } - - dateutil_1.default.sort(this.timeset); - } - } + }, { + key: "getMinutes", + value: function getMinutes() { + return this.minute; + } + }, { + key: "getSeconds", + value: function getSeconds() { + return this.second; + } + }, { + key: "getMilliseconds", + value: function getMilliseconds() { + return this.millisecond; + } + }, { + key: "getTime", + value: function getTime() { + return (this.hour * 60 * 60 + this.minute * 60 + this.second) * 1000 + this.millisecond; + } + }]); - _createClass(RRule, [{ - key: "all", + return Time; +}(); +exports.Time = Time; +/** + * General date-related utilities. + * Also handles several incompatibilities between JavaScript and Python + * + */ +var dateutil = { + MONTH_DAYS: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], /** - * @param {Function} iterator - optional function that will be called - * on each date that is added. It can return false - * to stop the iteration. - * @return Array containing all recurrences. + * Number of milliseconds of one day */ - value: function all(iterator) { - if (iterator) { - return this._iter(new callbackiterresult_1.default('all', {}, iterator)); - } else { - var result = this._cacheGet('all'); - - if (result === false) { - result = this._iter(new iterresult_1.default('all', {})); - - this._cacheAdd('all', result); - } - - return result; - } - } + ONE_DAY: 1000 * 60 * 60 * 24, /** - * Returns all the occurrences of the rrule between after and before. - * The inc keyword defines what happens if after and/or before are - * themselves occurrences. With inc == True, they will be included in the - * list, if they are found in the recurrence set. - * @return Array + * @see: */ - - }, { - key: "between", - value: function between(after, before) { - var inc = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - var iterator = arguments.length > 3 ? arguments[3] : undefined; - var args = { - before: before, - after: after, - inc: inc - }; - - if (iterator) { - return this._iter(new callbackiterresult_1.default('between', args, iterator)); - } - - var result = this._cacheGet('between', args); - - if (result === false) { - result = this._iter(new iterresult_1.default('between', args)); - - this._cacheAdd('between', result, args); - } - - return result; - } + MAXYEAR: 9999, /** - * Returns the last recurrence before the given datetime instance. - * The inc keyword defines what happens if dt is an occurrence. - * With inc == True, if dt itself is an occurrence, it will be returned. - * @return Date or null + * Python uses 1-Jan-1 as the base for calculating ordinals but we don't + * want to confuse the JS engine with milliseconds > Number.MAX_NUMBER, + * therefore we use 1-Jan-1970 instead */ - - }, { - key: "before", - value: function before(dt) { - var inc = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - var args = { - dt: dt, - inc: inc - }; - - var result = this._cacheGet('before', args); - - if (result === false) { - result = this._iter(new iterresult_1.default('before', args)); - - this._cacheAdd('before', result, args); - } - - return result; - } + ORDINAL_BASE: new Date(1970, 0, 1), /** - * Returns the first recurrence after the given datetime instance. - * The inc keyword defines what happens if dt is an occurrence. - * With inc == True, if dt itself is an occurrence, it will be returned. - * @return Date or null + * Python: MO-SU: 0 - 6 + * JS: SU-SAT 0 - 6 */ - - }, { - key: "after", - value: function after(dt) { - var inc = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; - var args = { - dt: dt, - inc: inc - }; - - var result = this._cacheGet('after', args); - - if (result === false) { - result = this._iter(new iterresult_1.default('after', args)); - - this._cacheAdd('after', result, args); - } - - return result; - } + PY_WEEKDAYS: [6, 0, 1, 2, 3, 4, 5], /** - * Returns the number of recurrences in this set. It will have go trough - * the whole recurrence, if this hasn't been done before. + * py_date.timetuple()[7] */ - - }, { - key: "count", - value: function count() { - return this.all().length; - } + getYearDay: function getYearDay(date) { + var dateNoTime = new Date(date.getFullYear(), date.getMonth(), date.getDate()); + return Math.ceil((dateNoTime.valueOf() - new Date(date.getFullYear(), 0, 1).valueOf()) / dateutil.ONE_DAY) + 1; + }, + isLeapYear: function isLeapYear(year) { + return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0; + }, /** - * Converts the rrule into its string representation - * @see - * @return String + * @return {Number} the date's timezone offset in ms */ - - }, { - key: "toString", - value: function toString() { - return RRule.optionsToString(this.origOptions); - } + tzOffset: function tzOffset(date) { + return date.getTimezoneOffset() * 60 * 1000; + }, /** - * Will convert all rules described in nlp:ToText - * to text. + * @see: */ - - }, { - key: "toText", - value: function toText(gettext, language) { - return getnlp().toText(this, gettext, language); - } - }, { - key: "isFullyConvertibleToText", - value: function isFullyConvertibleToText() { - return getnlp().isFullyConvertible(this); - } + daysBetween: function daysBetween(date1, date2) { + // The number of milliseconds in one day + // Convert both dates to milliseconds + var date1ms = date1.getTime() - dateutil.tzOffset(date1); + var date2ms = date2.getTime() - dateutil.tzOffset(date2); + // Calculate the difference in milliseconds + var differencems = date1ms - date2ms; + // Convert back to days and return + return Math.round(differencems / dateutil.ONE_DAY); + }, /** - * @param {String} what - all/before/after/between - * @param {Array,Date} value - an array of dates, one date, or null - * @param {Object?} args - _iter arguments + * @see: */ - - }, { - key: "_cacheAdd", - value: function _cacheAdd(what, value, args) { - if (!this._cache) return; - - if (value) { - value = value instanceof Date ? dateutil_1.default.clone(value) : dateutil_1.default.cloneDates(value); - } - - if (what === 'all') { - this._cache.all = value; - } else { - args._value = value; - - this._cache[what].push(args); - } - } + toOrdinal: function toOrdinal(date) { + return dateutil.daysBetween(date, dateutil.ORDINAL_BASE); + }, /** - * @return false - not in the cache - * null - cached, but zero occurrences (before/after) - * Date - cached (before/after) - * [] - cached, but zero occurrences (all/between) - * [Date1, DateN] - cached (all/between) + * @see - */ - - }, { - key: "_cacheGet", - value: function _cacheGet(what, args) { - if (!this._cache) return false; - var cached = false; - var argsKeys = args ? Object.keys(args) : []; - - var findCacheDiff = function findCacheDiff(item) { - for (var i = 0; i < argsKeys.length; i++) { - var key = argsKeys[i]; - - if (String(args[key]) !== String(item[key])) { - return true; - } + fromOrdinal: function fromOrdinal(ordinal) { + var millisecsFromBase = ordinal * dateutil.ONE_DAY; + return new Date(dateutil.ORDINAL_BASE.getTime() - dateutil.tzOffset(dateutil.ORDINAL_BASE) + millisecsFromBase + dateutil.tzOffset(new Date(millisecsFromBase))); + }, + /** + * @see: + */ + monthRange: function monthRange(year, month) { + var date = new Date(year, month, 1); + return [dateutil.getWeekday(date), dateutil.getMonthDays(date)]; + }, + getMonthDays: function getMonthDays(date) { + var month = date.getMonth(); + return month === 1 && dateutil.isLeapYear(date.getFullYear()) ? 29 : dateutil.MONTH_DAYS[month]; + }, + /** + * @return {Number} python-like weekday + */ + getWeekday: function getWeekday(date) { + return dateutil.PY_WEEKDAYS[date.getDay()]; + }, + /** + * @see: + */ + combine: function combine(date, time) { + time = time || date; + return new Date(date.getFullYear(), date.getMonth(), date.getDate(), time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds()); + }, + clone: function clone(date) { + var dolly = new Date(date.getTime()); + return dolly; + }, + cloneDates: function cloneDates(dates) { + var clones = []; + for (var i = 0; i < dates.length; i++) { + clones.push(dateutil.clone(dates[i])); } + return clones; + }, + /** + * Sorts an array of Date or dateutil.Time objects + */ + sort: function sort(dates) { + dates.sort(function (a, b) { + return a.getTime() - b.getTime(); + }); + }, + timeToUntilString: function timeToUntilString(time) { + var comp = void 0; + var date = new Date(time); + var comps = [date.getUTCFullYear(), date.getUTCMonth() + 1, date.getUTCDate(), 'T', date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), 'Z']; + for (var i = 0; i < comps.length; i++) { + comp = comps[i]; + if (!/[TZ]/.test(comp.toString()) && comp < 10) { + comps[i] = '0' + String(comp); + } + } + return comps.join(''); + }, + untilStringToDate: function untilStringToDate(until) { + var re = /^(\d{4})(\d{2})(\d{2})(T(\d{2})(\d{2})(\d{2})Z?)?$/; + var bits = re.exec(until); + if (!bits) throw new Error('Invalid UNTIL value: ' + until); + return new Date(Date.UTC(parseInt(bits[1], 10), parseInt(bits[2], 10) - 1, parseInt(bits[3], 10), parseInt(bits[5], 10) || 0, parseInt(bits[6], 10) || 0, parseInt(bits[7], 10) || 0)); + }, + Time: Time +}; +exports.default = dateutil; +//# sourceMappingURL=dateutil.js.map - return false; - }; - - var cachedObject = this._cache[what]; +/***/ }), +/* 5 */ +/***/ (function(module, exports, __webpack_require__) { - if (what === 'all') { - cached = this._cache.all; - } else if (cachedObject instanceof Array) { - // Let's see whether we've already called the - // 'what' method with the same 'args' - for (var i = 0; i < cachedObject.length; i++) { - var item = cachedObject[i]; - if (argsKeys.length && findCacheDiff(item)) continue; - cached = item._value; - break; - } - } +"use strict"; - if (!cached && this._cache.all) { - // Not in the cache, but we already know all the occurrences, - // so we can find the correct dates from the cached ones. - var iterResult = new iterresult_1.default(what, args); +// ============================================================================= +// Results +// ============================================================================= - for (var _i4 = 0; _i4 < this._cache.all.length; _i4++) { - if (!iterResult.accept(this._cache.all[_i4])) break; - } +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - cached = iterResult.getValue(); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - this._cacheAdd(what, cached, args); - } +Object.defineProperty(exports, "__esModule", { value: true }); +/** + * This class helps us to emulate python's generators, sorta. + */ - return cached instanceof Array ? dateutil_1.default.cloneDates(cached) : cached instanceof Date ? dateutil_1.default.clone(cached) : cached; +var IterResult = function () { + function IterResult(method, args) { + _classCallCheck(this, IterResult); + + this.method = method; + this.args = args; + this.minDate = null; + this.maxDate = null; + this._result = []; + if (method === 'between') { + this.maxDate = args.inc ? args.before : new Date(args.before.getTime() - 1); + this.minDate = args.inc ? args.after : new Date(args.after.getTime() + 1); + } else if (method === 'before') { + this.maxDate = args.inc ? args.dt : new Date(args.dt.getTime() - 1); + } else if (method === 'after') { + this.minDate = args.inc ? args.dt : new Date(args.dt.getTime() + 1); + } } /** - * @return a RRule instance with the same freq and options - * as this one (cache is not cloned) + * Possibly adds a date into the result. + * + * @param {Date} date - the date isn't necessarly added to the result + * list (if it is too late/too early) + * @return {Boolean} true if it makes sense to continue the iteration + * false if we're done. */ - }, { - key: "clone", - value: function clone() { - return new RRule(this.origOptions); - } - }, { - key: "_iter", - value: function _iter(iterResult) { - var _RRule$YEARLY$RRule$M; - - /* Since JavaScript doesn't have the python's yield operator (<1.7), - we use the IterResult object that tells us when to stop iterating. - */ - var dtstart = this.options.dtstart; - var dtstartMillisecondModulo = this.options.dtstart.valueOf() % 1000; - var year = dtstart.getFullYear(); - var month = dtstart.getMonth() + 1; - var day = dtstart.getDate(); - var hour = dtstart.getHours(); - var minute = dtstart.getMinutes(); - var second = dtstart.getSeconds(); - var weekday = dateutil_1.default.getWeekday(dtstart); // Some local variables to speed things up a bit - - var freq = this.options.freq; - var interval = this.options.interval; - var wkst = this.options.wkst; - var until = this.options.until; - var bymonth = this.options.bymonth; - var byweekno = this.options.byweekno; - var byyearday = this.options.byyearday; - var byweekday = this.options.byweekday; - var byeaster = this.options.byeaster; - var bymonthday = this.options.bymonthday; - var bynmonthday = this.options.bynmonthday; - var bysetpos = this.options.bysetpos; - var byhour = this.options.byhour; - var byminute = this.options.byminute; - var bysecond = this.options.bysecond; // tslint:disable-next-line:no-use-before-declare - - var ii = new Iterinfo(this); - ii.rebuild(year, month); - var getdayset = (_RRule$YEARLY$RRule$M = {}, _defineProperty(_RRule$YEARLY$RRule$M, RRule.YEARLY, ii.ydayset), _defineProperty(_RRule$YEARLY$RRule$M, RRule.MONTHLY, ii.mdayset), _defineProperty(_RRule$YEARLY$RRule$M, RRule.WEEKLY, ii.wdayset), _defineProperty(_RRule$YEARLY$RRule$M, RRule.DAILY, ii.ddayset), _defineProperty(_RRule$YEARLY$RRule$M, RRule.HOURLY, ii.ddayset), _defineProperty(_RRule$YEARLY$RRule$M, RRule.MINUTELY, ii.ddayset), _defineProperty(_RRule$YEARLY$RRule$M, RRule.SECONDLY, ii.ddayset), _RRule$YEARLY$RRule$M)[freq]; - var timeset; - var gettimeset; - - if (freq < RRule.HOURLY) { - timeset = this.timeset; - } else { - var _RRule$YEARLY$RRule$M2; - - gettimeset = (_RRule$YEARLY$RRule$M2 = {}, _defineProperty(_RRule$YEARLY$RRule$M2, RRule.YEARLY, ii.ydayset), _defineProperty(_RRule$YEARLY$RRule$M2, RRule.MONTHLY, ii.mdayset), _defineProperty(_RRule$YEARLY$RRule$M2, RRule.WEEKLY, ii.wdayset), _defineProperty(_RRule$YEARLY$RRule$M2, RRule.DAILY, ii.ddayset), _defineProperty(_RRule$YEARLY$RRule$M2, RRule.HOURLY, ii.htimeset), _defineProperty(_RRule$YEARLY$RRule$M2, RRule.MINUTELY, ii.mtimeset), _defineProperty(_RRule$YEARLY$RRule$M2, RRule.SECONDLY, ii.stimeset), _RRule$YEARLY$RRule$M2)[freq]; - - if (freq >= RRule.HOURLY && helpers_1.plb(byhour) && !helpers_1.contains(byhour, hour) || freq >= RRule.MINUTELY && helpers_1.plb(byminute) && !helpers_1.contains(byminute, minute) || freq >= RRule.SECONDLY && helpers_1.plb(bysecond) && !helpers_1.contains(bysecond, second)) { - timeset = []; - } else { - timeset = gettimeset.call(ii, hour, minute, second, dtstartMillisecondModulo); - } - } - - var total = 0; - var count = this.options.count; - var i; - var k; - var dm; - var div; - var mod; - var tmp; - var pos; - var dayset; - var start; - var end; - var fixday; - var filtered; - - while (true) { - // Get dayset with the right frequency - tmp = getdayset.call(ii, year, month, day); - dayset = tmp[0]; - start = tmp[1]; - end = tmp[2]; // Do the "hard" work ;-) - - filtered = false; - - for (var j = start; j < end; j++) { - i = dayset[j]; - filtered = helpers_1.plb(bymonth) && !helpers_1.contains(bymonth, ii.mmask[i]) || helpers_1.plb(byweekno) && !ii.wnomask[i] || helpers_1.plb(byweekday) && !helpers_1.contains(byweekday, ii.wdaymask[i]) || helpers_1.plb(ii.nwdaymask) && !ii.nwdaymask[i] || byeaster !== null && !helpers_1.contains(ii.eastermask, i) || (helpers_1.plb(bymonthday) || helpers_1.plb(bynmonthday)) && !helpers_1.contains(bymonthday, ii.mdaymask[i]) && !helpers_1.contains(bynmonthday, ii.nmdaymask[i]) || helpers_1.plb(byyearday) && (i < ii.yearlen && !helpers_1.contains(byyearday, i + 1) && !helpers_1.contains(byyearday, -ii.yearlen + i) || i >= ii.yearlen && !helpers_1.contains(byyearday, i + 1 - ii.yearlen) && !helpers_1.contains(byyearday, -ii.nextyearlen + i - ii.yearlen)); - if (filtered) dayset[i] = null; - } // Output results - - - if (helpers_1.plb(bysetpos) && helpers_1.plb(timeset)) { - var daypos = void 0; - var timepos = void 0; - var poslist = []; - - for (var _j = 0; _j < bysetpos.length; _j++) { - pos = bysetpos[_j]; - - if (pos < 0) { - daypos = Math.floor(pos / timeset.length); - timepos = helpers_1.pymod(pos, timeset.length); - } else { - daypos = Math.floor((pos - 1) / timeset.length); - timepos = helpers_1.pymod(pos - 1, timeset.length); - } - - try { - tmp = []; - - for (k = start; k < end; k++) { - var val = dayset[k]; - if (val === null) continue; - tmp.push(val); - } - - var _i5 = void 0; - - if (daypos < 0) { - // we're trying to emulate python's aList[-n] - _i5 = tmp.slice(daypos)[0]; - } else { - _i5 = tmp[daypos]; - } - - var time = timeset[timepos]; - var date = dateutil_1.default.fromOrdinal(ii.yearordinal + _i5); - var res = dateutil_1.default.combine(date, time); // XXX: can this ever be in the array? - // - compare the actual date instead? - - if (!helpers_1.contains(poslist, res)) poslist.push(res); // tslint:disable-next-line:no-empty - } catch (e) {} - } - - dateutil_1.default.sort(poslist); - - for (var _j2 = 0; _j2 < poslist.length; _j2++) { - var _res = poslist[_j2]; - - if (until && _res > until) { - this._len = total; - return iterResult.getValue(); - } else if (_res >= dtstart) { - ++total; - if (!iterResult.accept(_res)) return iterResult.getValue(); - - if (count) { - --count; - - if (!count) { - this._len = total; - return iterResult.getValue(); - } - } - } - } - } else { - for (var _j3 = start; _j3 < end; _j3++) { - i = dayset[_j3]; - - if (i !== null) { - var _date = dateutil_1.default.fromOrdinal(ii.yearordinal + i); - - for (k = 0; k < timeset.length; k++) { - var _time = timeset[k]; - - var _res2 = dateutil_1.default.combine(_date, _time); - - if (until && _res2 > until) { - this._len = total; - return iterResult.getValue(); - } else if (_res2 >= dtstart) { - ++total; - if (!iterResult.accept(_res2)) { - return iterResult.getValue(); - } - - if (count) { - --count; - - if (!count) { - this._len = total; - return iterResult.getValue(); - } - } - } - } - } - } - } // Handle frequency and interval - - - fixday = false; - - if (freq === RRule.YEARLY) { - year += interval; - - if (year > dateutil_1.default.MAXYEAR) { - this._len = total; - return iterResult.getValue(); - } - - ii.rebuild(year, month); - } else if (freq === RRule.MONTHLY) { - month += interval; - - if (month > 12) { - div = Math.floor(month / 12); - mod = helpers_1.pymod(month, 12); - month = mod; - year += div; - - if (month === 0) { - month = 12; - --year; - } - - if (year > dateutil_1.default.MAXYEAR) { - this._len = total; - return iterResult.getValue(); - } - } - - ii.rebuild(year, month); - } else if (freq === RRule.WEEKLY) { - if (wkst > weekday) { - day += -(weekday + 1 + (6 - wkst)) + interval * 7; - } else { - day += -(weekday - wkst) + interval * 7; - } - - weekday = wkst; - fixday = true; - } else if (freq === RRule.DAILY) { - day += interval; - fixday = true; - } else if (freq === RRule.HOURLY) { - if (filtered) { - // Jump to one iteration before next day - hour += Math.floor((23 - hour) / interval) * interval; - } - - while (true) { - hour += interval; - dm = helpers_1.divmod(hour, 24); - div = dm.div; - mod = dm.mod; - - if (div) { - hour = mod; - day += div; - fixday = true; - } - - if (!helpers_1.plb(byhour) || helpers_1.contains(byhour, hour)) break; - } - - timeset = gettimeset.call(ii, hour, minute, second); - } else if (freq === RRule.MINUTELY) { - if (filtered) { - // Jump to one iteration before next day - minute += Math.floor((1439 - (hour * 60 + minute)) / interval) * interval; - } - - while (true) { - minute += interval; - dm = helpers_1.divmod(minute, 60); - div = dm.div; - mod = dm.mod; - - if (div) { - minute = mod; - hour += div; - dm = helpers_1.divmod(hour, 24); - div = dm.div; - mod = dm.mod; - - if (div) { - hour = mod; - day += div; - fixday = true; - filtered = false; - } - } - - if ((!helpers_1.plb(byhour) || helpers_1.contains(byhour, hour)) && (!helpers_1.plb(byminute) || helpers_1.contains(byminute, minute))) { - break; - } - } - - timeset = gettimeset.call(ii, hour, minute, second); - } else if (freq === RRule.SECONDLY) { - if (filtered) { - // Jump to one iteration before next day - second += Math.floor((86399 - (hour * 3600 + minute * 60 + second)) / interval) * interval; - } - - while (true) { - second += interval; - dm = helpers_1.divmod(second, 60); - div = dm.div; - mod = dm.mod; - - if (div) { - second = mod; - minute += div; - dm = helpers_1.divmod(minute, 60); - div = dm.div; - mod = dm.mod; - - if (div) { - minute = mod; - hour += div; - dm = helpers_1.divmod(hour, 24); - div = dm.div; - mod = dm.mod; - - if (div) { - hour = mod; - day += div; - fixday = true; - } - } + _createClass(IterResult, [{ + key: "accept", + value: function accept(date) { + var tooEarly = this.minDate && date < this.minDate; + var tooLate = this.maxDate && date > this.maxDate; + if (this.method === 'between') { + if (tooEarly) return true; + if (tooLate) return false; + } else if (this.method === 'before') { + if (tooLate) return false; + } else if (this.method === 'after') { + if (tooEarly) return true; + this.add(date); + return false; } - - if ((!helpers_1.plb(byhour) || helpers_1.contains(byhour, hour)) && (!helpers_1.plb(byminute) || helpers_1.contains(byminute, minute)) && (!helpers_1.plb(bysecond) || helpers_1.contains(bysecond, second))) { - break; + return this.add(date); + } + /** + * + * @param {Date} date that is part of the result. + * @return {Boolean} whether we are interested in more values. + */ + + }, { + key: "add", + value: function add(date) { + this._result.push(date); + return true; + } + /** + * 'before' and 'after' return only one date, whereas 'all' + * and 'between' an array. + * @return {Date,Array?} + */ + + }, { + key: "getValue", + value: function getValue() { + var res = this._result; + switch (this.method) { + case 'all': + case 'between': + return res; + case 'before': + case 'after': + return res.length ? res[res.length - 1] : null; } - } - - timeset = gettimeset.call(ii, hour, minute, second); } + }, { + key: "clone", + value: function clone() { + return new IterResult(this.method, this.args); + } + }]); - if (fixday && day > 28) { - var daysinmonth = dateutil_1.default.monthRange(year, month - 1)[1]; + return IterResult; +}(); - if (day > daysinmonth) { - while (day > daysinmonth) { - day -= daysinmonth; - ++month; +exports.default = IterResult; +//# sourceMappingURL=iterresult.js.map - if (month === 13) { - month = 1; - ++year; +/***/ }), +/* 6 */ +/***/ (function(module, exports, __webpack_require__) { - if (year > dateutil_1.default.MAXYEAR) { - this._len = total; - return iterResult.getValue(); - } - } +"use strict"; - daysinmonth = dateutil_1.default.monthRange(year, month - 1)[1]; - } +// ============================================================================= +// i18n +// ============================================================================= - ii.rebuild(year, month); - } - } - } - } - }], [{ - key: "parseText", - value: function parseText(text, language) { - return getnlp().parseText(text, language); - } - }, { - key: "fromText", - value: function fromText(text, language) { - return getnlp().fromText(text, language); +Object.defineProperty(exports, "__esModule", { value: true }); +var ENGLISH = { + dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], + monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], + tokens: { + 'SKIP': /^[ \r\n\t]+|^\.$/, + 'number': /^[1-9][0-9]*/, + 'numberAsText': /^(one|two|three)/i, + 'every': /^every/i, + 'day(s)': /^days?/i, + 'weekday(s)': /^weekdays?/i, + 'week(s)': /^weeks?/i, + 'hour(s)': /^hours?/i, + 'minute(s)': /^minutes?/i, + 'month(s)': /^months?/i, + 'year(s)': /^years?/i, + 'on': /^(on|in)/i, + 'at': /^(at)/i, + 'the': /^the/i, + 'first': /^first/i, + 'second': /^second/i, + 'third': /^third/i, + 'nth': /^([1-9][0-9]*)(\.|th|nd|rd|st)/i, + 'last': /^last/i, + 'for': /^for/i, + 'time(s)': /^times?/i, + 'until': /^(un)?til/i, + 'monday': /^mo(n(day)?)?/i, + 'tuesday': /^tu(e(s(day)?)?)?/i, + 'wednesday': /^we(d(n(esday)?)?)?/i, + 'thursday': /^th(u(r(sday)?)?)?/i, + 'friday': /^fr(i(day)?)?/i, + 'saturday': /^sa(t(urday)?)?/i, + 'sunday': /^su(n(day)?)?/i, + 'january': /^jan(uary)?/i, + 'february': /^feb(ruary)?/i, + 'march': /^mar(ch)?/i, + 'april': /^apr(il)?/i, + 'may': /^may/i, + 'june': /^june?/i, + 'july': /^july?/i, + 'august': /^aug(ust)?/i, + 'september': /^sep(t(ember)?)?/i, + 'october': /^oct(ober)?/i, + 'november': /^nov(ember)?/i, + 'december': /^dec(ember)?/i, + 'comma': /^(,\s*|(and|or)\s*)+/i } - }, { - key: "parseString", - value: function parseString(rfcString) { - rfcString = rfcString.replace(/^\s+|\s+$/, ''); - if (!rfcString.length) return null; - var key; - var value; - var attr; - var attrs = rfcString.split(';'); - var options = {}; - - for (var i = 0; i < attrs.length; i++) { - attr = attrs[i].split('='); - key = attr[0]; - value = attr[1]; - - switch (key) { - case 'FREQ': - options.freq = Frequency[value]; - break; - - case 'WKST': - options.wkst = Days[value]; - break; - - case 'COUNT': - case 'INTERVAL': - case 'BYSETPOS': - case 'BYMONTH': - case 'BYMONTHDAY': - case 'BYYEARDAY': - case 'BYWEEKNO': - case 'BYHOUR': - case 'BYMINUTE': - case 'BYSECOND': - if (value.indexOf(',') !== -1) { - value = value.split(','); - - for (var j = 0; j < value.length; j++) { - if (/^[+-]?\d+$/.test(value[j].toString())) { - value[j] = Number(value[j]); - } - } - } else if (/^[+-]?\d+$/.test(value)) { - value = Number(value); - } - - key = key.toLowerCase(); // @ts-ignore - - options[key] = value; - break; - - case 'BYDAY': - // => byweekday - var n = void 0; - var wday = void 0; - var day = void 0; - var days = value.split(','); - options.byweekday = []; - - for (var _j4 = 0; _j4 < days.length; _j4++) { - day = days[_j4]; +}; +exports.default = ENGLISH; +//# sourceMappingURL=i18n.js.map - if (day.length === 2) { - // MO, TU, ... - wday = Days[day]; // wday instanceof Weekday +/***/ }), +/* 7 */ +/***/ (function(module, exports, __webpack_require__) { - options.byweekday.push(wday); - } else { - // -1MO, +3FR, 1SO, ... - var parts = day.match(/^([+-]?\d)([A-Z]{2})$/); - n = Number(parts[1]); - var wdaypart = parts[2]; - wday = Days[wdaypart].weekday; - options.byweekday.push(new weekday_1.default(wday, n)); - } - } +"use strict"; - break; - case 'DTSTART': - options.dtstart = dateutil_1.default.untilStringToDate(value); - break; +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - case 'UNTIL': - options.until = dateutil_1.default.untilStringToDate(value); - break; +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - case 'BYEASTER': - options.byeaster = Number(value); - break; +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - default: - throw new Error("Unknown RRULE property '" + key + "'"); - } - } +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - return options; - } - }, { - key: "fromString", - value: function fromString(str) { - return new RRule(RRule.parseString(str)); - } - }, { - key: "optionsToString", - value: function optionsToString(options) { - var pairs = []; - var keys = Object.keys(options); - var defaultKeys = Object.keys(RRule.DEFAULT_OPTIONS); - - for (var i = 0; i < keys.length; i++) { - if (!helpers_1.contains(defaultKeys, keys[i])) continue; - var key = keys[i].toUpperCase(); - var value = options[keys[i]]; - var strValues = []; - if (value === null || value instanceof Array && !value.length) continue; - - switch (key) { - case 'FREQ': - value = RRule.FREQUENCIES[options.freq]; - break; - - case 'WKST': - if (!(value instanceof weekday_1.default)) { - value = new weekday_1.default(value); - } - - break; - - case 'BYWEEKDAY': - /* - NOTE: BYWEEKDAY is a special case. - RRule() deconstructs the rule.options.byweekday array - into an array of Weekday arguments. - On the other hand, rule.origOptions is an array of Weekdays. - We need to handle both cases here. - It might be worth change RRule to keep the Weekdays. - Also, BYWEEKDAY (used by RRule) vs. BYDAY (RFC) - */ - key = 'BYDAY'; - if (!(value instanceof Array)) value = [value]; - - for (var j = 0; j < value.length; j++) { - var wday = value[j]; - - if (wday instanceof weekday_1.default) {// good - } else if (wday instanceof Array) { - wday = new weekday_1.default(wday[0], wday[1]); - } else { - wday = new weekday_1.default(wday); - } - - strValues[j] = wday.toString(); - } - - value = strValues; - break; - - case 'DTSTART': - case 'UNTIL': - value = dateutil_1.default.timeToUntilString(value); - break; - - default: - if (value instanceof Array) { - for (var _j5 = 0; _j5 < value.length; _j5++) { - strValues[_j5] = String(value[_j5]); - } - - value = strValues; - } else { - value = String(value); - } +Object.defineProperty(exports, "__esModule", { value: true }); +var rrule_1 = __webpack_require__(2); +var dateutil_1 = __webpack_require__(4); +var helpers_1 = __webpack_require__(0); +/** + * + * @param {Boolean?} noCache + * The same stratagy as RRule on cache, default to false + * @constructor + */ - } +var RRuleSet = function (_rrule_1$default) { + _inherits(RRuleSet, _rrule_1$default); - pairs.push([key, value]); - } + function RRuleSet() { + var noCache = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - var strings = []; + _classCallCheck(this, RRuleSet); - for (var _i6 = 0; _i6 < pairs.length; _i6++) { - var attr = pairs[_i6]; - strings.push(attr[0] + '=' + attr[1].toString()); - } + var _this = _possibleConstructorReturn(this, (RRuleSet.__proto__ || Object.getPrototypeOf(RRuleSet)).call(this, {}, noCache)); - return strings.join(';'); + _this._rrule = []; + _this._rdate = []; + _this._exrule = []; + _this._exdate = []; + return _this; } - }]); - - return RRule; -}(); // RRule class 'constants' - + /** + * Adds an RRule to the set + * + * @param {RRule} + */ -RRule.FREQUENCIES = ['YEARLY', 'MONTHLY', 'WEEKLY', 'DAILY', 'HOURLY', 'MINUTELY', 'SECONDLY']; -RRule.YEARLY = 0; -RRule.MONTHLY = 1; -RRule.WEEKLY = 2; -RRule.DAILY = 3; -RRule.HOURLY = 4; -RRule.MINUTELY = 5; -RRule.SECONDLY = 6; -RRule.DEFAULT_OPTIONS = { - freq: null, - dtstart: null, - interval: 1, - wkst: Days.MO, - count: null, - until: null, - bysetpos: null, - bymonth: null, - bymonthday: null, - bynmonthday: null, - byyearday: null, - byweekno: null, - byweekday: null, - bynweekday: null, - byhour: null, - byminute: null, - bysecond: null, - byeaster: null -}; -RRule.MO = Days.MO; -RRule.TU = Days.TU; -RRule.WE = Days.WE; -RRule.TH = Days.TH; -RRule.FR = Days.FR; -RRule.SA = Days.SA; -RRule.SU = Days.SU; -exports.default = RRule; // ============================================================================= -// Iterinfo -// ============================================================================= -var Iterinfo = -/*#__PURE__*/ -function () { - function Iterinfo(rrule) { - _classCallCheck(this, Iterinfo); - - this.rrule = rrule; - this.lastyear = null; - this.lastmonth = null; - this.yearlen = null; - this.nextyearlen = null; - this.yearordinal = null; - this.yearweekday = null; - this.mmask = null; - this.mrange = null; - this.mdaymask = null; - this.nmdaymask = null; - this.wdaymask = null; - this.wnomask = null; - this.nwdaymask = null; - this.eastermask = null; - } - - _createClass(Iterinfo, [{ - key: "easter", - value: function easter(y) { - var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; - var a = y % 19; - var b = Math.floor(y / 100); - var c = y % 100; - var d = Math.floor(b / 4); - var e = b % 4; - var f = Math.floor((b + 8) / 25); - var g = Math.floor((b - f + 1) / 3); - var h = Math.floor(19 * a + b - d - g + 15) % 30; - var i = Math.floor(c / 4); - var k = c % 4; - var l = Math.floor(32 + 2 * e + 2 * i - h - k) % 7; - var m = Math.floor((a + 11 * h + 22 * l) / 451); - var month = Math.floor((h + l - 7 * m + 114) / 31); - var day = (h + l - 7 * m + 114) % 31 + 1; - var date = Date.UTC(y, month - 1, day + offset); - var yearStart = Date.UTC(y, 0, 1); - return [Math.ceil((date - yearStart) / (1000 * 60 * 60 * 24))]; - } - }, { - key: "rebuild", - value: function rebuild(year, month) { - var rr = this.rrule; - - if (year !== this.lastyear) { - this.yearlen = dateutil_1.default.isLeapYear(year) ? 366 : 365; - this.nextyearlen = dateutil_1.default.isLeapYear(year + 1) ? 366 : 365; - var firstyday = new Date(year, 0, 1); - this.yearordinal = dateutil_1.default.toOrdinal(firstyday); - this.yearweekday = dateutil_1.default.getWeekday(firstyday); - var wday = dateutil_1.default.getWeekday(new Date(year, 0, 1)); - - if (this.yearlen === 365) { - this.mmask = [].concat(masks_1.M365MASK); - this.mdaymask = [].concat(masks_1.MDAY365MASK); - this.nmdaymask = [].concat(masks_1.NMDAY365MASK); - this.wdaymask = masks_1.WDAYMASK.slice(wday); - this.mrange = [].concat(masks_1.M365RANGE); - } else { - this.mmask = [].concat(masks_1.M366MASK); - this.mdaymask = [].concat(masks_1.MDAY366MASK); - this.nmdaymask = [].concat(masks_1.NMDAY366MASK); - this.wdaymask = masks_1.WDAYMASK.slice(wday); - this.mrange = [].concat(masks_1.M366RANGE); + _createClass(RRuleSet, [{ + key: "rrule", + value: function rrule(_rrule) { + if (!(_rrule instanceof rrule_1.default)) { + throw new TypeError(String(_rrule) + ' is not RRule instance'); + } + if (!helpers_1.contains(this._rrule.map(String), String(_rrule))) { + this._rrule.push(_rrule); + } } - - if (!helpers_1.plb(rr.options.byweekno)) { - this.wnomask = null; - } else { - this.wnomask = helpers_1.repeat(0, this.yearlen + 7); - var no1wkst; - var firstwkst; - var wyearlen; - no1wkst = firstwkst = helpers_1.pymod(7 - this.yearweekday + rr.options.wkst, 7); - - if (no1wkst >= 4) { - no1wkst = 0; // Number of days in the year, plus the days we got - // from last year. - - wyearlen = this.yearlen + helpers_1.pymod(this.yearweekday - rr.options.wkst, 7); - } else { - // Number of days in the year, minus the days we - // left in last year. - wyearlen = this.yearlen - no1wkst; - } - - var div = Math.floor(wyearlen / 7); - var mod = helpers_1.pymod(wyearlen, 7); - var numweeks = Math.floor(div + mod / 4); - - for (var j = 0; j < rr.options.byweekno.length; j++) { - var i = void 0; - var n = rr.options.byweekno[j]; - - if (n < 0) { - n += numweeks + 1; + /** + * Adds an RDate to the set + * + * @param {Date} + */ + + }, { + key: "rdate", + value: function rdate(date) { + if (!(date instanceof Date)) { + throw new TypeError(String(date) + ' is not Date instance'); } - - if (!(n > 0 && n <= numweeks)) { - continue; + if (!helpers_1.contains(this._rdate.map(Number), Number(date))) { + this._rdate.push(date); + dateutil_1.default.sort(this._rdate); } - - if (n > 1) { - i = no1wkst + (n - 1) * 7; - - if (no1wkst !== firstwkst) { - i -= 7 - firstwkst; - } - } else { - i = no1wkst; - } - - for (var k = 0; k < 7; k++) { - this.wnomask[i] = 1; - i++; - if (this.wdaymask[i] === rr.options.wkst) break; - } - } - - if (helpers_1.contains(rr.options.byweekno, 1)) { - // Check week number 1 of next year as well - // orig-TODO : Check -numweeks for next year. - var _i7 = no1wkst + numweeks * 7; - - if (no1wkst !== firstwkst) _i7 -= 7 - firstwkst; - - if (_i7 < this.yearlen) { - // If week starts in next year, we - // don't care about it. - for (var _j6 = 0; _j6 < 7; _j6++) { - this.wnomask[_i7] = 1; - _i7 += 1; - if (this.wdaymask[_i7] === rr.options.wkst) break; - } - } - } - - if (no1wkst) { - // Check last week number of last year as - // well. If no1wkst is 0, either the year - // started on week start, or week number 1 - // got days from last year, so there are no - // days from last year's last week number in - // this year. - var lnumweeks; - - if (!helpers_1.contains(rr.options.byweekno, -1)) { - var lyearweekday = dateutil_1.default.getWeekday(new Date(year - 1, 0, 1)); - var lno1wkst = helpers_1.pymod(7 - lyearweekday.valueOf() + rr.options.wkst, 7); - var lyearlen = dateutil_1.default.isLeapYear(year - 1) ? 366 : 365; - - if (lno1wkst >= 4) { - lno1wkst = 0; - lnumweeks = Math.floor(52 + helpers_1.pymod(lyearlen + helpers_1.pymod(lyearweekday - rr.options.wkst, 7), 7) / 4); - } else { - lnumweeks = Math.floor(52 + helpers_1.pymod(this.yearlen - no1wkst, 7) / 4); - } - } else { - lnumweeks = -1; + } + /** + * Adds an EXRULE to the set + * + * @param {RRule} + */ + + }, { + key: "exrule", + value: function exrule(rrule) { + if (!(rrule instanceof rrule_1.default)) { + throw new TypeError(String(rrule) + ' is not RRule instance'); } - - if (helpers_1.contains(rr.options.byweekno, lnumweeks)) { - for (var _i8 = 0; _i8 < no1wkst; _i8++) { - this.wnomask[_i8] = 1; - } + if (!helpers_1.contains(this._exrule.map(String), String(rrule))) { + this._exrule.push(rrule); } - } } - } - - if (helpers_1.plb(rr.options.bynweekday) && (month !== this.lastmonth || year !== this.lastyear)) { - var ranges = []; - - if (rr.options.freq === RRule.YEARLY) { - if (helpers_1.plb(rr.options.bymonth) && rr.options.bymonth instanceof Array) { - for (var _j7 = 0; _j7 < rr.options.bymonth.length; _j7++) { - month = rr.options.bymonth[_j7]; - ranges.push(this.mrange.slice(month - 1, month + 1)); + /** + * Adds an EXDATE to the set + * + * @param {Date} + */ + + }, { + key: "exdate", + value: function exdate(date) { + if (!(date instanceof Date)) { + throw new TypeError(String(date) + ' is not Date instance'); + } + if (!helpers_1.contains(this._exdate.map(Number), Number(date))) { + this._exdate.push(date); + dateutil_1.default.sort(this._exdate); } - } else { - ranges = [[0, this.yearlen]]; - } - } else if (rr.options.freq === RRule.MONTHLY) { - ranges = [this.mrange.slice(month - 1, month + 1)]; } - - if (helpers_1.plb(ranges)) { - // Weekly frequency won't get here, so we may not - // care about cross-year weekly periods. - this.nwdaymask = helpers_1.repeat(0, this.yearlen); - - for (var _j8 = 0; _j8 < ranges.length; _j8++) { - var rang = ranges[_j8]; - var first = rang[0]; - var last = rang[1]; - last -= 1; - - for (var _k = 0; _k < rr.options.bynweekday.length; _k++) { - var _i9 = void 0; - - var _wday = rr.options.bynweekday[_k][0]; - var _n = rr.options.bynweekday[_k][1]; - - if (_n < 0) { - _i9 = last + (_n + 1) * 7; - _i9 -= helpers_1.pymod(this.wdaymask[_i9] - _wday, 7); - } else { - _i9 = first + (_n - 1) * 7; - _i9 += helpers_1.pymod(7 - this.wdaymask[_i9] + _wday, 7); - } - - if (first <= _i9 && _i9 <= last) this.nwdaymask[_i9] = 1; + }, { + key: "valueOf", + value: function valueOf() { + var result = []; + if (this._rrule.length) { + this._rrule.forEach(function (rrule) { + result.push('RRULE:' + rrule); + }); + } + if (this._rdate.length) { + result.push('RDATE:' + this._rdate.map(function (rdate) { + return dateutil_1.default.timeToUntilString(rdate.valueOf()); + }).join(',')); + } + if (this._exrule.length) { + this._exrule.forEach(function (exrule) { + result.push('EXRULE:' + exrule); + }); + } + if (this._exdate.length) { + result.push('EXDATE:' + this._exdate.map(function (exdate) { + return dateutil_1.default.timeToUntilString(exdate.valueOf()); + }).join(',')); + } + return result; + } + /** + * to generate recurrence field sush as: + * ["RRULE:FREQ=YEARLY;COUNT=2;BYDAY=TU;DTSTART=19970902T010000Z","RRULE:FREQ=YEARLY;COUNT=1;BYDAY=TH;DTSTART=19970902T010000Z"] + */ + + }, { + key: "toString", + value: function toString() { + return JSON.stringify(this.valueOf()); + } + }, { + key: "_iter", + value: function _iter(iterResult) { + var _exdateHash = {}; + var _exrule = this._exrule; + var _accept = iterResult.accept; + function evalExdate(after, before) { + _exrule.forEach(function (rrule) { + rrule.between(after, before, true).forEach(function (date) { + _exdateHash[Number(date)] = true; + }); + }); + } + this._exdate.forEach(function (date) { + _exdateHash[Number(date)] = true; + }); + iterResult.accept = function (date) { + var dt = Number(date); + if (!_exdateHash[dt]) { + evalExdate(new Date(dt - 1), new Date(dt + 1)); + if (!_exdateHash[dt]) { + _exdateHash[dt] = true; + return _accept.call(this, date); + } + } + return true; + }; + if (iterResult.method === 'between') { + evalExdate(iterResult.args.after, iterResult.args.before); + iterResult.accept = function (date) { + var dt = Number(date); + if (!_exdateHash[dt]) { + _exdateHash[dt] = true; + return _accept.call(this, date); + } + return true; + }; + } + for (var i = 0; i < this._rdate.length; i++) { + if (!iterResult.accept(new Date(this._rdate[i].valueOf()))) break; + } + this._rrule.forEach(function (rrule) { + rrule._iter(iterResult); + }); + var res = iterResult._result; + dateutil_1.default.sort(res); + switch (iterResult.method) { + case 'all': + case 'between': + return res; + case 'before': + return res.length && res[res.length - 1] || null; + case 'after': + return res.length && res[0] || null; + default: + return null; } - } } + /** + * Create a new RRuleSet Object completely base on current instance + */ + + }, { + key: "clone", + value: function clone() { + var rrs = new RRuleSet(!!this._cache); + var i = void 0; + for (i = 0; i < this._rrule.length; i++) { + rrs.rrule(this._rrule[i].clone()); + } + for (i = 0; i < this._rdate.length; i++) { + rrs.rdate(new Date(this._rdate[i].valueOf())); + } + for (i = 0; i < this._exrule.length; i++) { + rrs.exrule(this._exrule[i].clone()); + } + for (i = 0; i < this._exdate.length; i++) { + rrs.exdate(new Date(this._exdate[i].valueOf())); + } + return rrs; + } + }]); - this.lastyear = year; - this.lastmonth = month; - } + return RRuleSet; +}(rrule_1.default); - if (rr.options.byeaster !== null) { - this.eastermask = this.easter(year, rr.options.byeaster); - } - } - }, { - key: "ydayset", - value: function ydayset(_, __, ___) { - return [helpers_1.range(this.yearlen), 0, this.yearlen]; - } - }, { - key: "mdayset", - value: function mdayset(_, month, __) { - var set = helpers_1.repeat(null, this.yearlen); - var start = this.mrange[month - 1]; - var end = this.mrange[month]; - - for (var i = start; i < end; i++) { - set[i] = i; - } - - return [set, start, end]; - } - }, { - key: "wdayset", - value: function wdayset(year, month, day) { - // We need to handle cross-year weeks here. - var set = helpers_1.repeat(null, this.yearlen + 7); - var i = dateutil_1.default.toOrdinal(new Date(year, month - 1, day)) - this.yearordinal; - var start = i; - - for (var j = 0; j < 7; j++) { - set[i] = i; - ++i; - if (this.wdaymask[i] === this.rrule.options.wkst) break; - } - - return [set, start, i]; - } - }, { - key: "ddayset", - value: function ddayset(year, month, day) { - var set = helpers_1.repeat(null, this.yearlen); - var i = dateutil_1.default.toOrdinal(new Date(year, month - 1, day)) - this.yearordinal; - set[i] = i; - return [set, i, i + 1]; - } - }, { - key: "htimeset", - value: function htimeset(hour, minute, second, millisecond) { - var set = []; - var rr = this.rrule; +exports.default = RRuleSet; +//# sourceMappingURL=rruleset.js.map - for (var i = 0; i < rr.options.byminute.length; i++) { - minute = rr.options.byminute[i]; +/***/ }), +/* 8 */ +/***/ (function(module, exports, __webpack_require__) { - for (var j = 0; j < rr.options.bysecond.length; j++) { - second = rr.options.bysecond[j]; - set.push(new dateutil_1.default.Time(hour, minute, second, millisecond)); - } - } +"use strict"; - dateutil_1.default.sort(set); - return set; - } - }, { - key: "mtimeset", - value: function mtimeset(hour, minute, second, millisecond) { - var set = []; - var rr = this.rrule; - - for (var j = 0; j < rr.options.bysecond.length; j++) { - second = rr.options.bysecond[j]; - set.push(new dateutil_1.default.Time(hour, minute, second, millisecond)); - } - - dateutil_1.default.sort(set); - return set; - } - }, { - key: "stimeset", - value: function stimeset(hour, minute, second, millisecond) { - return [new dateutil_1.default.Time(hour, minute, second, millisecond)]; - } - }]); - return Iterinfo; +Object.defineProperty(exports, "__esModule", { value: true }); +var helpers_1 = __webpack_require__(0); +// ============================================================================= +// Date masks +// ============================================================================= +// Every mask is 7 days longer to handle cross-year weekly periods. +var M365MASK = [].concat(helpers_1.repeat(1, 31), helpers_1.repeat(2, 28), helpers_1.repeat(3, 31), helpers_1.repeat(4, 30), helpers_1.repeat(5, 31), helpers_1.repeat(6, 30), helpers_1.repeat(7, 31), helpers_1.repeat(8, 31), helpers_1.repeat(9, 30), helpers_1.repeat(10, 31), helpers_1.repeat(11, 30), helpers_1.repeat(12, 31), helpers_1.repeat(1, 7)); +exports.M365MASK = M365MASK; +var M366MASK = [].concat(helpers_1.repeat(1, 31), helpers_1.repeat(2, 29), helpers_1.repeat(3, 31), helpers_1.repeat(4, 30), helpers_1.repeat(5, 31), helpers_1.repeat(6, 30), helpers_1.repeat(7, 31), helpers_1.repeat(8, 31), helpers_1.repeat(9, 30), helpers_1.repeat(10, 31), helpers_1.repeat(11, 30), helpers_1.repeat(12, 31), helpers_1.repeat(1, 7)); +exports.M366MASK = M366MASK; +var M28 = helpers_1.range(1, 29); +var M29 = helpers_1.range(1, 30); +var M30 = helpers_1.range(1, 31); +var M31 = helpers_1.range(1, 32); +var MDAY366MASK = [].concat(M31, M29, M31, M30, M31, M30, M31, M31, M30, M31, M30, M31, M31.slice(0, 7)); +exports.MDAY366MASK = MDAY366MASK; +var MDAY365MASK = [].concat(M31, M28, M31, M30, M31, M30, M31, M31, M30, M31, M30, M31, M31.slice(0, 7)); +exports.MDAY365MASK = MDAY365MASK; +M28 = helpers_1.range(-28, 0); +M29 = helpers_1.range(-29, 0); +M30 = helpers_1.range(-30, 0); +M31 = helpers_1.range(-31, 0); +var NMDAY366MASK = [].concat(M31, M29, M31, M30, M31, M30, M31, M31, M30, M31, M30, M31, M31.slice(0, 7)); +exports.NMDAY366MASK = NMDAY366MASK; +var NMDAY365MASK = [].concat(M31, M28, M31, M30, M31, M30, M31, M31, M30, M31, M30, M31, M31.slice(0, 7)); +exports.NMDAY365MASK = NMDAY365MASK; +var M366RANGE = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366]; +exports.M366RANGE = M366RANGE; +var M365RANGE = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365]; +exports.M365RANGE = M365RANGE; +var WDAYMASK = function () { + var wdaymask = []; + for (var i = 0; i < 55; i++) { + wdaymask = wdaymask.concat(helpers_1.range(7)); + }return wdaymask; }(); +exports.WDAYMASK = WDAYMASK; +//# sourceMappingURL=masks.js.map /***/ }), -/* 3 */ +/* 9 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -Object.defineProperty(exports, "__esModule", { - value: true -}); -var WDAYS = ['MO', 'TU', 'WE', 'TH', 'FR', 'SA', 'SU']; // ============================================================================= -// Weekday -// ============================================================================= +Object.defineProperty(exports, "__esModule", { value: true }); +var iterresult_1 = __webpack_require__(5); +var helpers_1 = __webpack_require__(0); +/** + * IterResult subclass that calls a callback function on each add, + * and stops iterating when the callback returns false. + */ -var Weekday = -/*#__PURE__*/ -function () { - function Weekday(weekday, n) { - _classCallCheck(this, Weekday); - - if (n === 0) throw new Error("Can't create weekday with n == 0"); - this.weekday = weekday; - this.n = n; - } // __call__ - Cannot call the object directly, do it through - // e.g. RRule.TH.nth(-1) instead, - - - _createClass(Weekday, [{ - key: "nth", - value: function nth(n) { - return this.n === n ? this : new Weekday(this.weekday, n); - } // __eq__ - - }, { - key: "equals", - value: function equals(other) { - return this.weekday === other.weekday && this.n === other.n; - } // __repr__ - - }, { - key: "toString", - value: function toString() { - var s = WDAYS[this.weekday]; - if (this.n) s = (this.n > 0 ? '+' : '') + String(this.n) + s; - return s; - } - }, { - key: "getJsWeekday", - value: function getJsWeekday() { - return this.weekday === 6 ? 0 : this.weekday + 1; - } - }]); - - return Weekday; -}(); - -exports.default = Weekday; - -/***/ }), -/* 4 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var Time = -/*#__PURE__*/ -function () { - function Time(hour, minute, second, millisecond) { - _classCallCheck(this, Time); - - this.hour = hour; - this.minute = minute; - this.second = second; - this.millisecond = millisecond || 0; - } - - _createClass(Time, [{ - key: "getHours", - value: function getHours() { - return this.hour; - } - }, { - key: "getMinutes", - value: function getMinutes() { - return this.minute; - } - }, { - key: "getSeconds", - value: function getSeconds() { - return this.second; - } - }, { - key: "getMilliseconds", - value: function getMilliseconds() { - return this.millisecond; - } - }, { - key: "getTime", - value: function getTime() { - return (this.hour * 60 * 60 + this.minute * 60 + this.second) * 1000 + this.millisecond; - } - }]); - - return Time; -}(); - -exports.Time = Time; -/** - * General date-related utilities. - * Also handles several incompatibilities between JavaScript and Python - * - */ - -var dateutil = { - MONTH_DAYS: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], - - /** - * Number of milliseconds of one day - */ - ONE_DAY: 1000 * 60 * 60 * 24, - - /** - * @see: - */ - MAXYEAR: 9999, - - /** - * Python uses 1-Jan-1 as the base for calculating ordinals but we don't - * want to confuse the JS engine with milliseconds > Number.MAX_NUMBER, - * therefore we use 1-Jan-1970 instead - */ - ORDINAL_BASE: new Date(1970, 0, 1), - - /** - * Python: MO-SU: 0 - 6 - * JS: SU-SAT 0 - 6 - */ - PY_WEEKDAYS: [6, 0, 1, 2, 3, 4, 5], - - /** - * py_date.timetuple()[7] - */ - getYearDay: function getYearDay(date) { - var dateNoTime = new Date(date.getFullYear(), date.getMonth(), date.getDate()); - return Math.ceil((dateNoTime.valueOf() - new Date(date.getFullYear(), 0, 1).valueOf()) / dateutil.ONE_DAY) + 1; - }, - isLeapYear: function isLeapYear(year) { - return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0; - }, - - /** - * @return {Number} the date's timezone offset in ms - */ - tzOffset: function tzOffset(date) { - return date.getTimezoneOffset() * 60 * 1000; - }, - - /** - * @see: - */ - daysBetween: function daysBetween(date1, date2) { - // The number of milliseconds in one day - // Convert both dates to milliseconds - var date1ms = date1.getTime() - dateutil.tzOffset(date1); - var date2ms = date2.getTime() - dateutil.tzOffset(date2); // Calculate the difference in milliseconds - - var differencems = date1ms - date2ms; // Convert back to days and return - - return Math.round(differencems / dateutil.ONE_DAY); - }, - - /** - * @see: - */ - toOrdinal: function toOrdinal(date) { - return dateutil.daysBetween(date, dateutil.ORDINAL_BASE); - }, - - /** - * @see - - */ - fromOrdinal: function fromOrdinal(ordinal) { - var millisecsFromBase = ordinal * dateutil.ONE_DAY; - return new Date(dateutil.ORDINAL_BASE.getTime() - dateutil.tzOffset(dateutil.ORDINAL_BASE) + millisecsFromBase + dateutil.tzOffset(new Date(millisecsFromBase))); - }, - - /** - * @see: - */ - monthRange: function monthRange(year, month) { - var date = new Date(year, month, 1); - return [dateutil.getWeekday(date), dateutil.getMonthDays(date)]; - }, - getMonthDays: function getMonthDays(date) { - var month = date.getMonth(); - return month === 1 && dateutil.isLeapYear(date.getFullYear()) ? 29 : dateutil.MONTH_DAYS[month]; - }, - - /** - * @return {Number} python-like weekday - */ - getWeekday: function getWeekday(date) { - return dateutil.PY_WEEKDAYS[date.getDay()]; - }, - - /** - * @see: - */ - combine: function combine(date, time) { - time = time || date; - return new Date(date.getFullYear(), date.getMonth(), date.getDate(), time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds()); - }, - clone: function clone(date) { - var dolly = new Date(date.getTime()); - return dolly; - }, - cloneDates: function cloneDates(dates) { - var clones = []; - - for (var i = 0; i < dates.length; i++) { - clones.push(dateutil.clone(dates[i])); - } - - return clones; - }, - - /** - * Sorts an array of Date or dateutil.Time objects - */ - sort: function sort(dates) { - dates.sort(function (a, b) { - return a.getTime() - b.getTime(); - }); - }, - timeToUntilString: function timeToUntilString(time) { - var comp; - var date = new Date(time); - var comps = [date.getUTCFullYear(), date.getUTCMonth() + 1, date.getUTCDate(), 'T', date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), 'Z']; - - for (var i = 0; i < comps.length; i++) { - comp = comps[i]; - - if (!/[TZ]/.test(comp.toString()) && comp < 10) { - comps[i] = '0' + String(comp); - } - } - - return comps.join(''); - }, - untilStringToDate: function untilStringToDate(until) { - var re = /^(\d{4})(\d{2})(\d{2})(T(\d{2})(\d{2})(\d{2})Z?)?$/; - var bits = re.exec(until); - if (!bits) throw new Error('Invalid UNTIL value: ' + until); - return new Date(Date.UTC(parseInt(bits[1], 10), parseInt(bits[2], 10) - 1, parseInt(bits[3], 10), parseInt(bits[5], 10) || 0, parseInt(bits[6], 10) || 0, parseInt(bits[7], 10) || 0)); - }, - Time: Time -}; -exports.default = dateutil; - -/***/ }), -/* 5 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - // ============================================================================= -// Results -// ============================================================================= - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -Object.defineProperty(exports, "__esModule", { - value: true -}); -/** - * This class helps us to emulate python's generators, sorta. - */ - -var IterResult = -/*#__PURE__*/ -function () { - function IterResult(method, args) { - _classCallCheck(this, IterResult); - - this.method = method; - this.args = args; - this.minDate = null; - this.maxDate = null; - this._result = []; - - if (method === 'between') { - this.maxDate = args.inc ? args.before : new Date(args.before.getTime() - 1); - this.minDate = args.inc ? args.after : new Date(args.after.getTime() + 1); - } else if (method === 'before') { - this.maxDate = args.inc ? args.dt : new Date(args.dt.getTime() - 1); - } else if (method === 'after') { - this.minDate = args.inc ? args.dt : new Date(args.dt.getTime() + 1); - } - } - /** - * Possibly adds a date into the result. - * - * @param {Date} date - the date isn't necessarly added to the result - * list (if it is too late/too early) - * @return {Boolean} true if it makes sense to continue the iteration - * false if we're done. - */ - - - _createClass(IterResult, [{ - key: "accept", - value: function accept(date) { - var tooEarly = this.minDate && date < this.minDate; - var tooLate = this.maxDate && date > this.maxDate; - - if (this.method === 'between') { - if (tooEarly) return true; - if (tooLate) return false; - } else if (this.method === 'before') { - if (tooLate) return false; - } else if (this.method === 'after') { - if (tooEarly) return true; - this.add(date); - return false; - } - - return this.add(date); - } - /** - * - * @param {Date} date that is part of the result. - * @return {Boolean} whether we are interested in more values. - */ - - }, { - key: "add", - value: function add(date) { - this._result.push(date); - - return true; - } - /** - * 'before' and 'after' return only one date, whereas 'all' - * and 'between' an array. - * @return {Date,Array?} - */ - - }, { - key: "getValue", - value: function getValue() { - var res = this._result; +var CallbackIterResult = function (_iterresult_1$default) { + _inherits(CallbackIterResult, _iterresult_1$default); - switch (this.method) { - case 'all': - case 'between': - return res; + function CallbackIterResult(method, args, iterator) { + _classCallCheck(this, CallbackIterResult); - case 'before': - case 'after': - return res.length ? res[res.length - 1] : null; - } - } - }, { - key: "clone", - value: function clone() { - return new IterResult(this.method, this.args); - } - }]); - - return IterResult; -}(); - -exports.default = IterResult; - -/***/ }), -/* 6 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - // ============================================================================= -// i18n -// ============================================================================= - -Object.defineProperty(exports, "__esModule", { - value: true -}); -var ENGLISH = { - dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], - monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], - tokens: { - 'SKIP': /^[ \r\n\t]+|^\.$/, - 'number': /^[1-9][0-9]*/, - 'numberAsText': /^(one|two|three)/i, - 'every': /^every/i, - 'day(s)': /^days?/i, - 'weekday(s)': /^weekdays?/i, - 'week(s)': /^weeks?/i, - 'hour(s)': /^hours?/i, - 'minute(s)': /^minutes?/i, - 'month(s)': /^months?/i, - 'year(s)': /^years?/i, - 'on': /^(on|in)/i, - 'at': /^(at)/i, - 'the': /^the/i, - 'first': /^first/i, - 'second': /^second/i, - 'third': /^third/i, - 'nth': /^([1-9][0-9]*)(\.|th|nd|rd|st)/i, - 'last': /^last/i, - 'for': /^for/i, - 'time(s)': /^times?/i, - 'until': /^(un)?til/i, - 'monday': /^mo(n(day)?)?/i, - 'tuesday': /^tu(e(s(day)?)?)?/i, - 'wednesday': /^we(d(n(esday)?)?)?/i, - 'thursday': /^th(u(r(sday)?)?)?/i, - 'friday': /^fr(i(day)?)?/i, - 'saturday': /^sa(t(urday)?)?/i, - 'sunday': /^su(n(day)?)?/i, - 'january': /^jan(uary)?/i, - 'february': /^feb(ruary)?/i, - 'march': /^mar(ch)?/i, - 'april': /^apr(il)?/i, - 'may': /^may/i, - 'june': /^june?/i, - 'july': /^july?/i, - 'august': /^aug(ust)?/i, - 'september': /^sep(t(ember)?)?/i, - 'october': /^oct(ober)?/i, - 'november': /^nov(ember)?/i, - 'december': /^dec(ember)?/i, - 'comma': /^(,\s*|(and|or)\s*)+/i - } -}; -exports.default = ENGLISH; - -/***/ }), -/* 7 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } - -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var rrule_1 = __webpack_require__(2); - -var dateutil_1 = __webpack_require__(4); - -var helpers_1 = __webpack_require__(0); -/** - * - * @param {Boolean?} noCache - * The same stratagy as RRule on cache, default to false - * @constructor - */ - - -var RRuleSet = -/*#__PURE__*/ -function (_rrule_1$default) { - _inherits(RRuleSet, _rrule_1$default); - - function RRuleSet() { - var _this; - - var noCache = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - - _classCallCheck(this, RRuleSet); - - _this = _possibleConstructorReturn(this, _getPrototypeOf(RRuleSet).call(this, {}, noCache)); - _this._rrule = []; - _this._rdate = []; - _this._exrule = []; - _this._exdate = []; - return _this; - } - /** - * Adds an RRule to the set - * - * @param {RRule} - */ - - - _createClass(RRuleSet, [{ - key: "rrule", - value: function rrule(_rrule) { - if (!(_rrule instanceof rrule_1.default)) { - throw new TypeError(String(_rrule) + ' is not RRule instance'); - } - - if (!helpers_1.contains(this._rrule.map(String), String(_rrule))) { - this._rrule.push(_rrule); - } - } - /** - * Adds an RDate to the set - * - * @param {Date} - */ - - }, { - key: "rdate", - value: function rdate(date) { - if (!(date instanceof Date)) { - throw new TypeError(String(date) + ' is not Date instance'); - } - - if (!helpers_1.contains(this._rdate.map(Number), Number(date))) { - this._rdate.push(date); - - dateutil_1.default.sort(this._rdate); - } - } - /** - * Adds an EXRULE to the set - * - * @param {RRule} - */ - - }, { - key: "exrule", - value: function exrule(rrule) { - if (!(rrule instanceof rrule_1.default)) { - throw new TypeError(String(rrule) + ' is not RRule instance'); - } - - if (!helpers_1.contains(this._exrule.map(String), String(rrule))) { - this._exrule.push(rrule); - } - } - /** - * Adds an EXDATE to the set - * - * @param {Date} - */ - - }, { - key: "exdate", - value: function exdate(date) { - if (!(date instanceof Date)) { - throw new TypeError(String(date) + ' is not Date instance'); - } - - if (!helpers_1.contains(this._exdate.map(Number), Number(date))) { - this._exdate.push(date); - - dateutil_1.default.sort(this._exdate); - } - } - }, { - key: "valueOf", - value: function valueOf() { - var result = []; - - if (this._rrule.length) { - this._rrule.forEach(function (rrule) { - result.push('RRULE:' + rrule); - }); - } - - if (this._rdate.length) { - result.push('RDATE:' + this._rdate.map(function (rdate) { - return dateutil_1.default.timeToUntilString(rdate.valueOf()); - }).join(',')); - } - - if (this._exrule.length) { - this._exrule.forEach(function (exrule) { - result.push('EXRULE:' + exrule); - }); - } - - if (this._exdate.length) { - result.push('EXDATE:' + this._exdate.map(function (exdate) { - return dateutil_1.default.timeToUntilString(exdate.valueOf()); - }).join(',')); - } - - return result; - } - /** - * to generate recurrence field sush as: - * ["RRULE:FREQ=YEARLY;COUNT=2;BYDAY=TU;DTSTART=19970902T010000Z","RRULE:FREQ=YEARLY;COUNT=1;BYDAY=TH;DTSTART=19970902T010000Z"] - */ - - }, { - key: "toString", - value: function toString() { - return JSON.stringify(this.valueOf()); - } - }, { - key: "_iter", - value: function _iter(iterResult) { - var _exdateHash = {}; - var _exrule = this._exrule; - var _accept = iterResult.accept; - - function evalExdate(after, before) { - _exrule.forEach(function (rrule) { - rrule.between(after, before, true).forEach(function (date) { - _exdateHash[Number(date)] = true; - }); - }); - } - - this._exdate.forEach(function (date) { - _exdateHash[Number(date)] = true; - }); - - iterResult.accept = function (date) { - var dt = Number(date); - - if (!_exdateHash[dt]) { - evalExdate(new Date(dt - 1), new Date(dt + 1)); - - if (!_exdateHash[dt]) { - _exdateHash[dt] = true; - return _accept.call(this, date); - } + var allowedMethods = ['all', 'between']; + if (!helpers_1.contains(allowedMethods, method)) { + throw new Error('Invalid method "' + method + '". Only all and between works with iterator.'); } - return true; - }; - - if (iterResult.method === 'between') { - evalExdate(iterResult.args.after, iterResult.args.before); - - iterResult.accept = function (date) { - var dt = Number(date); - - if (!_exdateHash[dt]) { - _exdateHash[dt] = true; - return _accept.call(this, date); - } - - return true; - }; - } - - for (var i = 0; i < this._rdate.length; i++) { - if (!iterResult.accept(new Date(this._rdate[i].valueOf()))) break; - } - - this._rrule.forEach(function (rrule) { - rrule._iter(iterResult); - }); - - var res = iterResult._result; - dateutil_1.default.sort(res); + var _this = _possibleConstructorReturn(this, (CallbackIterResult.__proto__ || Object.getPrototypeOf(CallbackIterResult)).call(this, method, args)); - switch (iterResult.method) { - case 'all': - case 'between': - return res; - - case 'before': - return res.length && res[res.length - 1] || null; - - case 'after': - return res.length && res[0] || null; - - default: - return null; - } + _this.iterator = iterator; + return _this; } - /** - * Create a new RRuleSet Object completely base on current instance - */ - - }, { - key: "clone", - value: function clone() { - var rrs = new RRuleSet(!!this._cache); - var i; - for (i = 0; i < this._rrule.length; i++) { - rrs.rrule(this._rrule[i].clone()); - } - - for (i = 0; i < this._rdate.length; i++) { - rrs.rdate(new Date(this._rdate[i].valueOf())); - } - - for (i = 0; i < this._exrule.length; i++) { - rrs.exrule(this._exrule[i].clone()); - } - - for (i = 0; i < this._exdate.length; i++) { - rrs.exdate(new Date(this._exdate[i].valueOf())); - } - - return rrs; - } - }]); - - return RRuleSet; -}(rrule_1.default); - -exports.default = RRuleSet; - -/***/ }), -/* 8 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var helpers_1 = __webpack_require__(0); // ============================================================================= -// Date masks -// ============================================================================= -// Every mask is 7 days longer to handle cross-year weekly periods. - - -var M365MASK = [].concat(helpers_1.repeat(1, 31), helpers_1.repeat(2, 28), helpers_1.repeat(3, 31), helpers_1.repeat(4, 30), helpers_1.repeat(5, 31), helpers_1.repeat(6, 30), helpers_1.repeat(7, 31), helpers_1.repeat(8, 31), helpers_1.repeat(9, 30), helpers_1.repeat(10, 31), helpers_1.repeat(11, 30), helpers_1.repeat(12, 31), helpers_1.repeat(1, 7)); -exports.M365MASK = M365MASK; -var M366MASK = [].concat(helpers_1.repeat(1, 31), helpers_1.repeat(2, 29), helpers_1.repeat(3, 31), helpers_1.repeat(4, 30), helpers_1.repeat(5, 31), helpers_1.repeat(6, 30), helpers_1.repeat(7, 31), helpers_1.repeat(8, 31), helpers_1.repeat(9, 30), helpers_1.repeat(10, 31), helpers_1.repeat(11, 30), helpers_1.repeat(12, 31), helpers_1.repeat(1, 7)); -exports.M366MASK = M366MASK; -var M28 = helpers_1.range(1, 29); -var M29 = helpers_1.range(1, 30); -var M30 = helpers_1.range(1, 31); -var M31 = helpers_1.range(1, 32); -var MDAY366MASK = [].concat(M31, M29, M31, M30, M31, M30, M31, M31, M30, M31, M30, M31, M31.slice(0, 7)); -exports.MDAY366MASK = MDAY366MASK; -var MDAY365MASK = [].concat(M31, M28, M31, M30, M31, M30, M31, M31, M30, M31, M30, M31, M31.slice(0, 7)); -exports.MDAY365MASK = MDAY365MASK; -M28 = helpers_1.range(-28, 0); -M29 = helpers_1.range(-29, 0); -M30 = helpers_1.range(-30, 0); -M31 = helpers_1.range(-31, 0); -var NMDAY366MASK = [].concat(M31, M29, M31, M30, M31, M30, M31, M31, M30, M31, M30, M31, M31.slice(0, 7)); -exports.NMDAY366MASK = NMDAY366MASK; -var NMDAY365MASK = [].concat(M31, M28, M31, M30, M31, M30, M31, M31, M30, M31, M30, M31, M31.slice(0, 7)); -exports.NMDAY365MASK = NMDAY365MASK; -var M366RANGE = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366]; -exports.M366RANGE = M366RANGE; -var M365RANGE = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365]; -exports.M365RANGE = M365RANGE; - -var WDAYMASK = function () { - var wdaymask = []; - - for (var i = 0; i < 55; i++) { - wdaymask = wdaymask.concat(helpers_1.range(7)); - } - - return wdaymask; -}(); - -exports.WDAYMASK = WDAYMASK; - -/***/ }), -/* 9 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } - -function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } - -function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } - -function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } - -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var iterresult_1 = __webpack_require__(5); - -var helpers_1 = __webpack_require__(0); -/** - * IterResult subclass that calls a callback function on each add, - * and stops iterating when the callback returns false. - */ - - -var CallbackIterResult = -/*#__PURE__*/ -function (_iterresult_1$default) { - _inherits(CallbackIterResult, _iterresult_1$default); - - function CallbackIterResult(method, args, iterator) { - var _this; - - _classCallCheck(this, CallbackIterResult); - - var allowedMethods = ['all', 'between']; - - if (!helpers_1.contains(allowedMethods, method)) { - throw new Error('Invalid method "' + method + '". Only all and between works with iterator.'); - } - - _this = _possibleConstructorReturn(this, _getPrototypeOf(CallbackIterResult).call(this, method, args)); - _this.iterator = iterator; - return _this; - } - - _createClass(CallbackIterResult, [{ - key: "add", - value: function add(date) { - if (this.iterator(date, this._result.length)) { - this._result.push(date); - - return true; - } - - return false; - } - }]); + _createClass(CallbackIterResult, [{ + key: "add", + value: function add(date) { + if (this.iterator(date, this._result.length)) { + this._result.push(date); + return true; + } + return false; + } + }]); - return CallbackIterResult; + return CallbackIterResult; }(iterresult_1.default); exports.default = CallbackIterResult; +//# sourceMappingURL=callbackiterresult.js.map /***/ }), /* 10 */ @@ -2573,16 +2224,10 @@ exports.default = CallbackIterResult; "use strict"; -Object.defineProperty(exports, "__esModule", { - value: true -}); - +Object.defineProperty(exports, "__esModule", { value: true }); var totext_1 = __webpack_require__(11); - var parsetext_1 = __webpack_require__(12); - exports.parseText = parsetext_1.default; - var index_1 = __webpack_require__(1); /*! * rrule.js - Library for working with recurrence rules for calendar dates. @@ -2593,7 +2238,6 @@ var index_1 = __webpack_require__(1); * https://github.com/jakubroztocil/rrule/blob/master/LICENCE * */ - /** * * Implementation of RRule.fromText() and RRule::toText(). @@ -2606,7 +2250,6 @@ var index_1 = __webpack_require__(1); // ============================================================================= // fromText // ============================================================================= - /** * Will be able to convert some of the below described rules from * text format to a rule object. @@ -2675,12 +2318,9 @@ var index_1 = __webpack_require__(1); * @param {String} text * @return {Object, Boolean} the rule, or null. */ - - var fromText = function fromText(text, language) { - return new index_1.default(parsetext_1.default(text, language)); + return new index_1.default(parsetext_1.default(text, language)); }; - exports.fromText = fromText; var common = ['count', 'until', 'interval', 'byweekday', 'bymonthday', 'bymonth']; totext_1.default.IMPLEMENTED = []; @@ -2689,17 +2329,18 @@ totext_1.default.IMPLEMENTED[index_1.default.MINUTELY] = common; totext_1.default.IMPLEMENTED[index_1.default.DAILY] = ['byhour'].concat(common); totext_1.default.IMPLEMENTED[index_1.default.WEEKLY] = common; totext_1.default.IMPLEMENTED[index_1.default.MONTHLY] = common; -totext_1.default.IMPLEMENTED[index_1.default.YEARLY] = ['byweekno', 'byyearday'].concat(common); // ============================================================================= +totext_1.default.IMPLEMENTED[index_1.default.YEARLY] = ['byweekno', 'byyearday'].concat(common); +// ============================================================================= // Export // ============================================================================= - var toText = function toText(rrule, gettext, language) { - return new totext_1.default(rrule, gettext, language).toString(); + return new totext_1.default(rrule, gettext, language).toString(); }; - exports.toText = toText; var isFullyConvertible = totext_1.default.isFullyConvertible; + exports.isFullyConvertible = isFullyConvertible; +//# sourceMappingURL=index.js.map /***/ }), /* 11 */ @@ -2708,29 +2349,21 @@ exports.isFullyConvertible = isFullyConvertible; "use strict"; -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); -Object.defineProperty(exports, "__esModule", { - value: true -}); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } +Object.defineProperty(exports, "__esModule", { value: true }); var i18n_1 = __webpack_require__(6); - -var index_1 = __webpack_require__(1); // ============================================================================= +var index_1 = __webpack_require__(1); +// ============================================================================= // Helper functions // ============================================================================= - /** * Return true if a value is in an array */ - - var contains = function contains(arr, val) { - return arr.indexOf(val) !== -1; + return arr.indexOf(val) !== -1; }; /** * @@ -2741,390 +2374,345 @@ var contains = function contains(arr, val) { * @constructor */ +var ToText = function () { + function ToText(rrule, gettext) { + var language = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : i18n_1.default; -var ToText = -/*#__PURE__*/ -function () { - function ToText(rrule, gettext) { - var language = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : i18n_1.default; - - _classCallCheck(this, ToText); + _classCallCheck(this, ToText); - this.text = []; - this.language = language || i18n_1.default; - - this.gettext = gettext || function (id) { - return id.toString(); - }; - - this.rrule = rrule; - this.options = rrule.options; - this.origOptions = rrule.origOptions; - - if (this.origOptions.bymonthday) { - var bymonthday = [].concat(this.options.bymonthday); - var bynmonthday = [].concat(this.options.bynmonthday); - bymonthday.sort(); - bynmonthday.sort(); - bynmonthday.reverse(); // 1, 2, 3, .., -5, -4, -3, .. - - this.bymonthday = bymonthday.concat(bynmonthday); - if (!this.bymonthday.length) this.bymonthday = null; - } - - if (this.origOptions.byweekday) { - var byweekday = !(this.origOptions.byweekday instanceof Array) ? [this.origOptions.byweekday] : this.origOptions.byweekday; - var days = String(byweekday); - this.byweekday = { - allWeeks: byweekday.filter(function (weekday) { - return !weekday.n; - }), - someWeeks: byweekday.filter(function (weekday) { - return Boolean(weekday.n); - }), - isWeekdays: days.indexOf('MO') !== -1 && days.indexOf('TU') !== -1 && days.indexOf('WE') !== -1 && days.indexOf('TH') !== -1 && days.indexOf('FR') !== -1 && days.indexOf('SA') === -1 && days.indexOf('SU') === -1 - }; - - var sortWeekDays = function sortWeekDays(a, b) { - return a.weekday - b.weekday; - }; - - this.byweekday.allWeeks.sort(sortWeekDays); - this.byweekday.someWeeks.sort(sortWeekDays); - if (!this.byweekday.allWeeks.length) this.byweekday.allWeeks = null; - if (!this.byweekday.someWeeks.length) this.byweekday.someWeeks = null; - } else { - this.byweekday = null; - } - } - /** - * Test whether the rrule can be fully converted to text. - * @param {RRule} rrule - * @return {Boolean} - */ - - - _createClass(ToText, [{ - key: "isFullyConvertible", - value: function isFullyConvertible() { - return ToText.isFullyConvertible(this.rrule); + this.text = []; + this.language = language || i18n_1.default; + this.gettext = gettext || function (id) { + return id.toString(); + }; + this.rrule = rrule; + this.options = rrule.options; + this.origOptions = rrule.origOptions; + if (this.origOptions.bymonthday) { + var bymonthday = [].concat(this.options.bymonthday); + var bynmonthday = [].concat(this.options.bynmonthday); + bymonthday.sort(); + bynmonthday.sort(); + bynmonthday.reverse(); + // 1, 2, 3, .., -5, -4, -3, .. + this.bymonthday = bymonthday.concat(bynmonthday); + if (!this.bymonthday.length) this.bymonthday = null; + } + if (this.origOptions.byweekday) { + var byweekday = !(this.origOptions.byweekday instanceof Array) ? [this.origOptions.byweekday] : this.origOptions.byweekday; + var days = String(byweekday); + this.byweekday = { + allWeeks: byweekday.filter(function (weekday) { + return !weekday.n; + }), + someWeeks: byweekday.filter(function (weekday) { + return Boolean(weekday.n); + }), + isWeekdays: days.indexOf('MO') !== -1 && days.indexOf('TU') !== -1 && days.indexOf('WE') !== -1 && days.indexOf('TH') !== -1 && days.indexOf('FR') !== -1 && days.indexOf('SA') === -1 && days.indexOf('SU') === -1 + }; + var sortWeekDays = function sortWeekDays(a, b) { + return a.weekday - b.weekday; + }; + this.byweekday.allWeeks.sort(sortWeekDays); + this.byweekday.someWeeks.sort(sortWeekDays); + if (!this.byweekday.allWeeks.length) this.byweekday.allWeeks = null; + if (!this.byweekday.someWeeks.length) this.byweekday.someWeeks = null; + } else { + this.byweekday = null; + } } /** - * Perform the conversion. Only some of the frequencies are supported. - * If some of the rrule's options aren't supported, they'll - * be omitted from the output an "(~ approximate)" will be appended. - * @return {*} + * Test whether the rrule can be fully converted to text. + * @param {RRule} rrule + * @return {Boolean} */ - }, { - key: "toString", - value: function toString() { - var gettext = this.gettext; - if (!(this.options.freq in ToText.IMPLEMENTED)) { - return gettext('RRule error: Unable to fully convert this rrule to text'); - } - - this.text = [gettext('every')]; // @ts-ignore - - this[index_1.default.FREQUENCIES[this.options.freq]](); - - if (this.options.until) { - this.add(gettext('until')); - var until = this.options.until; - this.add(this.language.monthNames[until.getMonth()]).add(until.getDate() + ',').add(until.getFullYear().toString()); - } else if (this.options.count) { - this.add(gettext('for')).add(this.options.count.toString()).add(this.plural(this.options.count) ? gettext('times') : gettext('time')); - } - - if (!this.isFullyConvertible()) this.add(gettext('(~ approximate)')); - return this.text.join(''); - } - }, { - key: "HOURLY", - value: function HOURLY() { - var gettext = this.gettext; - if (this.options.interval !== 1) this.add(this.options.interval.toString()); - this.add(this.plural(this.options.interval) ? gettext('hours') : gettext('hour')); - } - }, { - key: "MINUTELY", - value: function MINUTELY() { - var gettext = this.gettext; - if (this.options.interval !== 1) this.add(this.options.interval.toString()); - this.add(this.plural(this.options.interval) ? gettext('minutes') : gettext('minutes')); - } - }, { - key: "DAILY", - value: function DAILY() { - var gettext = this.gettext; - if (this.options.interval !== 1) this.add(this.options.interval.toString()); - - if (this.byweekday && this.byweekday.isWeekdays) { - this.add(this.plural(this.options.interval) ? gettext('weekdays') : gettext('weekday')); - } else { - this.add(this.plural(this.options.interval) ? gettext('days') : gettext('day')); - } - - if (this.origOptions.bymonth) { - this.add(gettext('in')); - - this._bymonth(); - } - - if (this.bymonthday) { - this._bymonthday(); - } else if (this.byweekday) { - this._byweekday(); - } else if (this.origOptions.byhour) { - this._byhour(); - } - } - }, { - key: "WEEKLY", - value: function WEEKLY() { - var gettext = this.gettext; - - if (this.options.interval !== 1) { - this.add(this.options.interval.toString()).add(this.plural(this.options.interval) ? gettext('weeks') : gettext('week')); - } - - if (this.byweekday && this.byweekday.isWeekdays) { - if (this.options.interval === 1) { - this.add(this.plural(this.options.interval) ? gettext('weekdays') : gettext('weekday')); - } else { - this.add(gettext('on')).add(gettext('weekdays')); + _createClass(ToText, [{ + key: "isFullyConvertible", + value: function isFullyConvertible() { + return ToText.isFullyConvertible(this.rrule); } - } else { - if (this.options.interval === 1) this.add(gettext('week')); - - if (this.origOptions.bymonth) { - this.add(gettext('in')); - - this._bymonth(); + /** + * Perform the conversion. Only some of the frequencies are supported. + * If some of the rrule's options aren't supported, they'll + * be omitted from the output an "(~ approximate)" will be appended. + * @return {*} + */ + + }, { + key: "toString", + value: function toString() { + var gettext = this.gettext; + if (!(this.options.freq in ToText.IMPLEMENTED)) { + return gettext('RRule error: Unable to fully convert this rrule to text'); + } + this.text = [gettext('every')]; + // @ts-ignore + this[index_1.default.FREQUENCIES[this.options.freq]](); + if (this.options.until) { + this.add(gettext('until')); + var until = this.options.until; + this.add(this.language.monthNames[until.getMonth()]).add(until.getDate() + ',').add(until.getFullYear().toString()); + } else if (this.options.count) { + this.add(gettext('for')).add(this.options.count.toString()).add(this.plural(this.options.count) ? gettext('times') : gettext('time')); + } + if (!this.isFullyConvertible()) this.add(gettext('(~ approximate)')); + return this.text.join(''); } - - if (this.bymonthday) { - this._bymonthday(); - } else if (this.byweekday) { - this._byweekday(); + }, { + key: "HOURLY", + value: function HOURLY() { + var gettext = this.gettext; + if (this.options.interval !== 1) this.add(this.options.interval.toString()); + this.add(this.plural(this.options.interval) ? gettext('hours') : gettext('hour')); } - } - } - }, { - key: "MONTHLY", - value: function MONTHLY() { - var gettext = this.gettext; - - if (this.origOptions.bymonth) { - if (this.options.interval !== 1) { - this.add(this.options.interval.toString()).add(gettext('months')); - if (this.plural(this.options.interval)) this.add(gettext('in')); - } else {// this.add(gettext('MONTH')) - } - - this._bymonth(); - } else { - if (this.options.interval !== 1) this.add(this.options.interval.toString()); - this.add(this.plural(this.options.interval) ? gettext('months') : gettext('month')); - } - - if (this.bymonthday) { - this._bymonthday(); - } else if (this.byweekday && this.byweekday.isWeekdays) { - this.add(gettext('on')).add(gettext('weekdays')); - } else if (this.byweekday) { - this._byweekday(); - } - } - }, { - key: "YEARLY", - value: function YEARLY() { - var gettext = this.gettext; - - if (this.origOptions.bymonth) { - if (this.options.interval !== 1) { - this.add(this.options.interval.toString()); - this.add(gettext('years')); - } else {// this.add(gettext('YEAR')) - } - - this._bymonth(); - } else { - if (this.options.interval !== 1) this.add(this.options.interval.toString()); - this.add(this.plural(this.options.interval) ? gettext('years') : gettext('year')); - } - - if (this.bymonthday) { - this._bymonthday(); - } else if (this.byweekday) { - this._byweekday(); - } - - if (this.options.byyearday) { - this.add(gettext('on the')).add(this.list(this.options.byyearday, this.nth, gettext('and'))).add(gettext('day')); - } - - if (this.options.byweekno) { - this.add(gettext('in')).add(this.plural(this.options.byweekno.length) ? gettext('weeks') : gettext('week')).add(this.list(this.options.byweekno, null, gettext('and'))); - } - } - }, { - key: "_bymonthday", - value: function _bymonthday() { - var gettext = this.gettext; - - if (this.byweekday && this.byweekday.allWeeks) { - this.add(gettext('on')).add(this.list(this.byweekday.allWeeks, this.weekdaytext, gettext('or'))).add(gettext('the')).add(this.list(this.bymonthday, this.nth, gettext('or'))); - } else { - this.add(gettext('on the')).add(this.list(this.bymonthday, this.nth, gettext('and'))); - } // this.add(gettext('DAY')) + }, { + key: "MINUTELY", + value: function MINUTELY() { + var gettext = this.gettext; + if (this.options.interval !== 1) this.add(this.options.interval.toString()); + this.add(this.plural(this.options.interval) ? gettext('minutes') : gettext('minutes')); + } + }, { + key: "DAILY", + value: function DAILY() { + var gettext = this.gettext; + if (this.options.interval !== 1) this.add(this.options.interval.toString()); + if (this.byweekday && this.byweekday.isWeekdays) { + this.add(this.plural(this.options.interval) ? gettext('weekdays') : gettext('weekday')); + } else { + this.add(this.plural(this.options.interval) ? gettext('days') : gettext('day')); + } + if (this.origOptions.bymonth) { + this.add(gettext('in')); + this._bymonth(); + } + if (this.bymonthday) { + this._bymonthday(); + } else if (this.byweekday) { + this._byweekday(); + } else if (this.origOptions.byhour) { + this._byhour(); + } + } + }, { + key: "WEEKLY", + value: function WEEKLY() { + var gettext = this.gettext; + if (this.options.interval !== 1) { + this.add(this.options.interval.toString()).add(this.plural(this.options.interval) ? gettext('weeks') : gettext('week')); + } + if (this.byweekday && this.byweekday.isWeekdays) { + if (this.options.interval === 1) { + this.add(this.plural(this.options.interval) ? gettext('weekdays') : gettext('weekday')); + } else { + this.add(gettext('on')).add(gettext('weekdays')); + } + } else { + if (this.options.interval === 1) this.add(gettext('week')); + if (this.origOptions.bymonth) { + this.add(gettext('in')); + this._bymonth(); + } + if (this.bymonthday) { + this._bymonthday(); + } else if (this.byweekday) { + this._byweekday(); + } + } + } + }, { + key: "MONTHLY", + value: function MONTHLY() { + var gettext = this.gettext; + if (this.origOptions.bymonth) { + if (this.options.interval !== 1) { + this.add(this.options.interval.toString()).add(gettext('months')); + if (this.plural(this.options.interval)) this.add(gettext('in')); + } else { + // this.add(gettext('MONTH')) + } + this._bymonth(); + } else { + if (this.options.interval !== 1) this.add(this.options.interval.toString()); + this.add(this.plural(this.options.interval) ? gettext('months') : gettext('month')); + } + if (this.bymonthday) { + this._bymonthday(); + } else if (this.byweekday && this.byweekday.isWeekdays) { + this.add(gettext('on')).add(gettext('weekdays')); + } else if (this.byweekday) { + this._byweekday(); + } + } + }, { + key: "YEARLY", + value: function YEARLY() { + var gettext = this.gettext; + if (this.origOptions.bymonth) { + if (this.options.interval !== 1) { + this.add(this.options.interval.toString()); + this.add(gettext('years')); + } else { + // this.add(gettext('YEAR')) + } + this._bymonth(); + } else { + if (this.options.interval !== 1) this.add(this.options.interval.toString()); + this.add(this.plural(this.options.interval) ? gettext('years') : gettext('year')); + } + if (this.bymonthday) { + this._bymonthday(); + } else if (this.byweekday) { + this._byweekday(); + } + if (this.options.byyearday) { + this.add(gettext('on the')).add(this.list(this.options.byyearday, this.nth, gettext('and'))).add(gettext('day')); + } + if (this.options.byweekno) { + this.add(gettext('in')).add(this.plural(this.options.byweekno.length) ? gettext('weeks') : gettext('week')).add(this.list(this.options.byweekno, null, gettext('and'))); + } + } + }, { + key: "_bymonthday", + value: function _bymonthday() { + var gettext = this.gettext; + if (this.byweekday && this.byweekday.allWeeks) { + this.add(gettext('on')).add(this.list(this.byweekday.allWeeks, this.weekdaytext, gettext('or'))).add(gettext('the')).add(this.list(this.bymonthday, this.nth, gettext('or'))); + } else { + this.add(gettext('on the')).add(this.list(this.bymonthday, this.nth, gettext('and'))); + } + // this.add(gettext('DAY')) + } + }, { + key: "_byweekday", + value: function _byweekday() { + var gettext = this.gettext; + if (this.byweekday.allWeeks && !this.byweekday.isWeekdays) { + this.add(gettext('on')).add(this.list(this.byweekday.allWeeks, this.weekdaytext)); + } + if (this.byweekday.someWeeks) { + if (this.byweekday.allWeeks) this.add(gettext('and')); + this.add(gettext('on the')).add(this.list(this.byweekday.someWeeks, this.weekdaytext, gettext('and'))); + } + } + }, { + key: "_byhour", + value: function _byhour() { + var gettext = this.gettext; + this.add(gettext('at')).add(this.list(this.origOptions.byhour, null, gettext('and'))); + } + }, { + key: "_bymonth", + value: function _bymonth() { + this.add(this.list(this.options.bymonth, this.monthtext, this.gettext('and'))); + } + }, { + key: "nth", + value: function nth(n) { + n = parseInt(n.toString(), 10); + var nth = void 0; + var npos = void 0; + var gettext = this.gettext; + if (n === -1) return gettext('last'); + npos = Math.abs(n); + switch (npos) { + case 1: + case 21: + case 31: + nth = npos + gettext('st'); + break; + case 2: + case 22: + nth = npos + gettext('nd'); + break; + case 3: + case 23: + nth = npos + gettext('rd'); + break; + default: + nth = npos + gettext('th'); + } + return n < 0 ? nth + ' ' + gettext('last') : nth; + } + }, { + key: "monthtext", + value: function monthtext(m) { + return this.language.monthNames[m - 1]; + } + }, { + key: "weekdaytext", + value: function weekdaytext(wday) { + var weekday = typeof wday === 'number' ? (wday + 1) % 7 : wday.getJsWeekday(); + return (wday.n ? this.nth(wday.n) + ' ' : '') + this.language.dayNames[weekday]; + } + }, { + key: "plural", + value: function plural(n) { + return n % 100 !== 1; + } + }, { + key: "add", + value: function add(s) { + this.text.push(' '); + this.text.push(s); + return this; + } + }, { + key: "list", + value: function list(arr, callback, finalDelim) { + var delim = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : ','; - } - }, { - key: "_byweekday", - value: function _byweekday() { - var gettext = this.gettext; - - if (this.byweekday.allWeeks && !this.byweekday.isWeekdays) { - this.add(gettext('on')).add(this.list(this.byweekday.allWeeks, this.weekdaytext)); - } - - if (this.byweekday.someWeeks) { - if (this.byweekday.allWeeks) this.add(gettext('and')); - this.add(gettext('on the')).add(this.list(this.byweekday.someWeeks, this.weekdaytext, gettext('and'))); - } - } - }, { - key: "_byhour", - value: function _byhour() { - var gettext = this.gettext; - this.add(gettext('at')).add(this.list(this.origOptions.byhour, null, gettext('and'))); - } - }, { - key: "_bymonth", - value: function _bymonth() { - this.add(this.list(this.options.bymonth, this.monthtext, this.gettext('and'))); - } - }, { - key: "nth", - value: function nth(n) { - n = parseInt(n.toString(), 10); - var nth; - var npos; - var gettext = this.gettext; - if (n === -1) return gettext('last'); - npos = Math.abs(n); - - switch (npos) { - case 1: - case 21: - case 31: - nth = npos + gettext('st'); - break; - - case 2: - case 22: - nth = npos + gettext('nd'); - break; - - case 3: - case 23: - nth = npos + gettext('rd'); - break; - - default: - nth = npos + gettext('th'); - } - - return n < 0 ? nth + ' ' + gettext('last') : nth; - } - }, { - key: "monthtext", - value: function monthtext(m) { - return this.language.monthNames[m - 1]; - } - }, { - key: "weekdaytext", - value: function weekdaytext(wday) { - var weekday = typeof wday === 'number' ? (wday + 1) % 7 : wday.getJsWeekday(); - return (wday.n ? this.nth(wday.n) + ' ' : '') + this.language.dayNames[weekday]; - } - }, { - key: "plural", - value: function plural(n) { - return n % 100 !== 1; - } - }, { - key: "add", - value: function add(s) { - this.text.push(' '); - this.text.push(s); - return this; - } - }, { - key: "list", - value: function list(arr, callback, finalDelim) { - var delim = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : ','; - - if (!(arr instanceof Array)) { - arr = [arr]; - } - - var delimJoin = function delimJoin(array, delimiter, finalDelimiter) { - var list = ''; - - for (var i = 0; i < array.length; i++) { - if (i !== 0) { - if (i === array.length - 1) { - list += ' ' + finalDelimiter + ' '; + if (!(arr instanceof Array)) { + arr = [arr]; + } + var delimJoin = function delimJoin(array, delimiter, finalDelimiter) { + var list = ''; + for (var i = 0; i < array.length; i++) { + if (i !== 0) { + if (i === array.length - 1) { + list += ' ' + finalDelimiter + ' '; + } else { + list += delimiter + ' '; + } + } + list += array[i]; + } + return list; + }; + callback = callback || function (o) { + return o.toString(); + }; + var self = this; + var realCallback = function realCallback(arg) { + return callback.call(self, arg); + }; + if (finalDelim) { + return delimJoin(arr.map(realCallback), delim, finalDelim); } else { - list += delimiter + ' '; + return arr.map(realCallback).join(delim + ' '); } - } - - list += array[i]; } + }], [{ + key: "isFullyConvertible", + value: function isFullyConvertible(rrule) { + var canConvert = true; + if (!(rrule.options.freq in ToText.IMPLEMENTED)) return false; + if (rrule.origOptions.until && rrule.origOptions.count) return false; + for (var key in rrule.origOptions) { + if (contains(['dtstart', 'wkst', 'freq'], key)) return true; + if (!contains(ToText.IMPLEMENTED[rrule.options.freq], key)) return false; + } + return canConvert; + } + }]); - return list; - }; - - callback = callback || function (o) { - return o.toString(); - }; - - var self = this; - - var realCallback = function realCallback(arg) { - return callback.call(self, arg); - }; - - if (finalDelim) { - return delimJoin(arr.map(realCallback), delim, finalDelim); - } else { - return arr.map(realCallback).join(delim + ' '); - } - } - }], [{ - key: "isFullyConvertible", - value: function isFullyConvertible(rrule) { - var canConvert = true; - if (!(rrule.options.freq in ToText.IMPLEMENTED)) return false; - if (rrule.origOptions.until && rrule.origOptions.count) return false; - - for (var key in rrule.origOptions) { - if (contains(['dtstart', 'wkst', 'freq'], key)) return true; - if (!contains(ToText.IMPLEMENTED[rrule.options.freq], key)) return false; - } - - return canConvert; - } - }]); - - return ToText; + return ToText; }(); exports.default = ToText; +//# sourceMappingURL=totext.js.map /***/ }), /* 12 */ @@ -3133,478 +2721,393 @@ exports.default = ToText; "use strict"; -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); -Object.defineProperty(exports, "__esModule", { - value: true -}); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } +Object.defineProperty(exports, "__esModule", { value: true }); var i18n_1 = __webpack_require__(6); - -var index_1 = __webpack_require__(1); // ============================================================================= +var index_1 = __webpack_require__(1); +// ============================================================================= // Parser // ============================================================================= +var Parser = function () { + function Parser(rules) { + _classCallCheck(this, Parser); -var Parser = -/*#__PURE__*/ -function () { - function Parser(rules) { - _classCallCheck(this, Parser); - - this.done = true; - this.rules = rules; - } - - _createClass(Parser, [{ - key: "start", - value: function start(text) { - this.text = text; - this.done = false; - return this.nextSymbol(); + this.done = true; + this.rules = rules; } - }, { - key: "isDone", - value: function isDone() { - return this.done && this.symbol == null; - } - }, { - key: "nextSymbol", - value: function nextSymbol() { - var best; - var bestSymbol; - var p = this; - this.symbol = null; - this.value = null; - - do { - if (this.done) return false; - var match = void 0; - var rule = void 0; - best = null; - for (var name in this.rules) { - rule = this.rules[name]; - match = rule.exec(p.text); - - if (match) { - if (best == null || match[0].length > best[0].length) { - best = match; - bestSymbol = name; - } - } + _createClass(Parser, [{ + key: "start", + value: function start(text) { + this.text = text; + this.done = false; + return this.nextSymbol(); } - - if (best != null) { - this.text = this.text.substr(best[0].length); - if (this.text === '') this.done = true; + }, { + key: "isDone", + value: function isDone() { + return this.done && this.symbol === null; } - - if (best == null) { - this.done = true; - this.symbol = null; - this.value = null; - return; + }, { + key: "nextSymbol", + value: function nextSymbol() { + var best = void 0; + var bestSymbol = void 0; + var p = this; + this.symbol = null; + this.value = null; + do { + if (this.done) return false; + var match = void 0; + var rule = void 0; + best = null; + for (var name in this.rules) { + rule = this.rules[name]; + match = rule.exec(p.text); + if (match) { + if (best === null || match[0].length > best[0].length) { + best = match; + bestSymbol = name; + } + } + } + if (best != null) { + this.text = this.text.substr(best[0].length); + if (this.text === '') this.done = true; + } + if (best == null) { + this.done = true; + this.symbol = null; + this.value = null; + return; + } + } while (bestSymbol === 'SKIP'); + this.symbol = bestSymbol; + this.value = best; + return true; } - } while (bestSymbol === 'SKIP'); - - this.symbol = bestSymbol; - this.value = best; - return true; - } - }, { - key: "accept", - value: function accept(name) { - if (this.symbol === name) { - if (this.value) { - var v = this.value; - this.nextSymbol(); - return v; + }, { + key: "accept", + value: function accept(name) { + if (this.symbol === name) { + if (this.value) { + var v = this.value; + this.nextSymbol(); + return v; + } + this.nextSymbol(); + return true; + } + return false; } + }, { + key: "expect", + value: function expect(name) { + if (this.accept(name)) return true; + throw new Error('expected ' + name + ' but found ' + this.symbol); + } + }]); - this.nextSymbol(); - return true; - } - - return false; - } - }, { - key: "expect", - value: function expect(name) { - if (this.accept(name)) return true; - throw new Error('expected ' + name + ' but found ' + this.symbol); - } - }]); - - return Parser; + return Parser; }(); function parseText(text, language) { - var options = {}; - var ttr = new Parser((language || i18n_1.default).tokens); - if (!ttr.start(text)) return null; - S(); - return options; - - function S() { - // every [n] - ttr.expect('every'); - var n = ttr.accept('number'); - if (n) options.interval = parseInt(n[0], 10); - if (ttr.isDone()) throw new Error('Unexpected end'); - - switch (ttr.symbol) { - case 'day(s)': - options.freq = index_1.default.DAILY; - - if (ttr.nextSymbol()) { - AT(); - F(); - } - - break; - // FIXME Note: every 2 weekdays != every two weeks on weekdays. - // DAILY on weekdays is not a valid rule - - case 'weekday(s)': - options.freq = index_1.default.WEEKLY; - options.byweekday = [index_1.default.MO, index_1.default.TU, index_1.default.WE, index_1.default.TH, index_1.default.FR]; - ttr.nextSymbol(); - F(); - break; - - case 'week(s)': - options.freq = index_1.default.WEEKLY; - - if (ttr.nextSymbol()) { - ON(); - F(); - } - - break; - - case 'hour(s)': - options.freq = index_1.default.HOURLY; - - if (ttr.nextSymbol()) { - ON(); - F(); - } - - break; - - case 'minute(s)': - options.freq = index_1.default.MINUTELY; - - if (ttr.nextSymbol()) { - ON(); - F(); - } - - break; - - case 'month(s)': - options.freq = index_1.default.MONTHLY; - - if (ttr.nextSymbol()) { - ON(); - F(); + var options = {}; + var ttr = new Parser((language || i18n_1.default).tokens); + if (!ttr.start(text)) return null; + S(); + return options; + function S() { + // every [n] + ttr.expect('every'); + var n = ttr.accept('number'); + if (n) options.interval = parseInt(n[0], 10); + if (ttr.isDone()) throw new Error('Unexpected end'); + switch (ttr.symbol) { + case 'day(s)': + options.freq = index_1.default.DAILY; + if (ttr.nextSymbol()) { + AT(); + F(); + } + break; + // FIXME Note: every 2 weekdays != every two weeks on weekdays. + // DAILY on weekdays is not a valid rule + case 'weekday(s)': + options.freq = index_1.default.WEEKLY; + options.byweekday = [index_1.default.MO, index_1.default.TU, index_1.default.WE, index_1.default.TH, index_1.default.FR]; + ttr.nextSymbol(); + F(); + break; + case 'week(s)': + options.freq = index_1.default.WEEKLY; + if (ttr.nextSymbol()) { + ON(); + F(); + } + break; + case 'hour(s)': + options.freq = index_1.default.HOURLY; + if (ttr.nextSymbol()) { + ON(); + F(); + } + break; + case 'minute(s)': + options.freq = index_1.default.MINUTELY; + if (ttr.nextSymbol()) { + ON(); + F(); + } + break; + case 'month(s)': + options.freq = index_1.default.MONTHLY; + if (ttr.nextSymbol()) { + ON(); + F(); + } + break; + case 'year(s)': + options.freq = index_1.default.YEARLY; + if (ttr.nextSymbol()) { + ON(); + F(); + } + break; + case 'monday': + case 'tuesday': + case 'wednesday': + case 'thursday': + case 'friday': + case 'saturday': + case 'sunday': + options.freq = index_1.default.WEEKLY; + var key = ttr.symbol.substr(0, 2).toUpperCase(); + // @ts-ignore + options.byweekday = [index_1.default[key]]; + if (!ttr.nextSymbol()) return; + // TODO check for duplicates + while (ttr.accept('comma')) { + if (ttr.isDone()) throw new Error('Unexpected end'); + var wkd = decodeWKD(); + if (!wkd) { + throw new Error('Unexpected symbol ' + ttr.symbol + ', expected weekday'); + } + // @ts-ignore + options.byweekday.push(index_1.default[wkd]); + ttr.nextSymbol(); + } + MDAYs(); + F(); + break; + case 'january': + case 'february': + case 'march': + case 'april': + case 'may': + case 'june': + case 'july': + case 'august': + case 'september': + case 'october': + case 'november': + case 'december': + options.freq = index_1.default.YEARLY; + options.bymonth = [decodeM()]; + if (!ttr.nextSymbol()) return; + // TODO check for duplicates + while (ttr.accept('comma')) { + if (ttr.isDone()) throw new Error('Unexpected end'); + var m = decodeM(); + if (!m) { + throw new Error('Unexpected symbol ' + ttr.symbol + ', expected month'); + } + options.bymonth.push(m); + ttr.nextSymbol(); + } + ON(); + F(); + break; + default: + throw new Error('Unknown symbol'); } - - break; - - case 'year(s)': - options.freq = index_1.default.YEARLY; - - if (ttr.nextSymbol()) { - ON(); - F(); + } + function ON() { + var on = ttr.accept('on'); + var the = ttr.accept('the'); + if (!(on || the)) return; + do { + var nth = decodeNTH(); + var wkd = decodeWKD(); + var m = decodeM(); + // nth | + if (nth) { + // ttr.nextSymbol() + if (wkd) { + ttr.nextSymbol(); + if (!options.byweekday) options.byweekday = []; + // @ts-ignore + options.byweekday.push(index_1.default[wkd].nth(nth)); + } else { + if (!options.bymonthday) options.bymonthday = []; + // @ts-ignore + options.bymonthday.push(nth); + ttr.accept('day(s)'); + } + // + } else if (wkd) { + ttr.nextSymbol(); + if (!options.byweekday) options.byweekday = []; + // @ts-ignore + options.byweekday.push(index_1.default[wkd]); + } else if (ttr.symbol === 'weekday(s)') { + ttr.nextSymbol(); + if (!options.byweekday) { + options.byweekday = [index_1.default.MO, index_1.default.TU, index_1.default.WE, index_1.default.TH, index_1.default.FR]; + } + } else if (ttr.symbol === 'week(s)') { + ttr.nextSymbol(); + var n = ttr.accept('number'); + if (!n) { + throw new Error('Unexpected symbol ' + ttr.symbol + ', expected week number'); + } + options.byweekno = [n[0]]; + while (ttr.accept('comma')) { + n = ttr.accept('number'); + if (!n) { + throw new Error('Unexpected symbol ' + ttr.symbol + '; expected monthday'); + } + options.byweekno.push(n[0]); + } + } else if (m) { + ttr.nextSymbol(); + if (!options.bymonth) options.bymonth = []; + // @ts-ignore + options.bymonth.push(m); + } else { + return; + } + } while (ttr.accept('comma') || ttr.accept('the') || ttr.accept('on')); + } + function AT() { + var at = ttr.accept('at'); + if (!at) return; + do { + var n = ttr.accept('number'); + if (!n) { + throw new Error('Unexpected symbol ' + ttr.symbol + ', expected hour'); + } + options.byhour = [n[0]]; + while (ttr.accept('comma')) { + n = ttr.accept('number'); + if (!n) { + throw new Error('Unexpected symbol ' + ttr.symbol + '; expected hour'); + } + options.byhour.push(n[0]); + } + } while (ttr.accept('comma') || ttr.accept('at')); + } + function decodeM() { + switch (ttr.symbol) { + case 'january': + return 1; + case 'february': + return 2; + case 'march': + return 3; + case 'april': + return 4; + case 'may': + return 5; + case 'june': + return 6; + case 'july': + return 7; + case 'august': + return 8; + case 'september': + return 9; + case 'october': + return 10; + case 'november': + return 11; + case 'december': + return 12; + default: + return false; } - - break; - - case 'monday': - case 'tuesday': - case 'wednesday': - case 'thursday': - case 'friday': - case 'saturday': - case 'sunday': - options.freq = index_1.default.WEEKLY; - var key = ttr.symbol.substr(0, 2).toUpperCase(); // @ts-ignore - - options.byweekday = [index_1.default[key]]; - if (!ttr.nextSymbol()) return; // TODO check for duplicates - - while (ttr.accept('comma')) { - if (ttr.isDone()) throw new Error('Unexpected end'); - var wkd = decodeWKD(); - - if (!wkd) { - throw new Error('Unexpected symbol ' + ttr.symbol + ', expected weekday'); - } // @ts-ignore - - - options.byweekday.push(index_1.default[wkd]); - ttr.nextSymbol(); - } - - MDAYs(); - F(); - break; - - case 'january': - case 'february': - case 'march': - case 'april': - case 'may': - case 'june': - case 'july': - case 'august': - case 'september': - case 'october': - case 'november': - case 'december': - options.freq = index_1.default.YEARLY; - options.bymonth = [decodeM()]; - if (!ttr.nextSymbol()) return; // TODO check for duplicates - - while (ttr.accept('comma')) { - if (ttr.isDone()) throw new Error('Unexpected end'); - var m = decodeM(); - - if (!m) { - throw new Error('Unexpected symbol ' + ttr.symbol + ', expected month'); - } - - options.bymonth.push(m); - ttr.nextSymbol(); + } + function decodeWKD() { + switch (ttr.symbol) { + case 'monday': + case 'tuesday': + case 'wednesday': + case 'thursday': + case 'friday': + case 'saturday': + case 'sunday': + return ttr.symbol.substr(0, 2).toUpperCase(); + default: + return false; } - - ON(); - F(); - break; - - default: - throw new Error('Unknown symbol'); } - } - - function ON() { - var on = ttr.accept('on'); - var the = ttr.accept('the'); - if (!(on || the)) return; - - do { - var nth = decodeNTH(); - var wkd = decodeWKD(); - var m = decodeM(); // nth | - - if (nth) { - // ttr.nextSymbol() - if (wkd) { - ttr.nextSymbol(); - if (!options.byweekday) options.byweekday = []; // @ts-ignore - - options.byweekday.push(index_1.default[wkd].nth(nth)); - } else { - if (!options.bymonthday) options.bymonthday = []; // @ts-ignore - - options.bymonthday.push(nth); - ttr.accept('day(s)'); - } // - - } else if (wkd) { - ttr.nextSymbol(); - if (!options.byweekday) options.byweekday = []; // @ts-ignore - - options.byweekday.push(index_1.default[wkd]); - } else if (ttr.symbol === 'weekday(s)') { - ttr.nextSymbol(); - - if (!options.byweekday) { - options.byweekday = [index_1.default.MO, index_1.default.TU, index_1.default.WE, index_1.default.TH, index_1.default.FR]; + function decodeNTH() { + switch (ttr.symbol) { + case 'last': + ttr.nextSymbol(); + return -1; + case 'first': + ttr.nextSymbol(); + return 1; + case 'second': + ttr.nextSymbol(); + return ttr.accept('last') ? -2 : 2; + case 'third': + ttr.nextSymbol(); + return ttr.accept('last') ? -3 : 3; + case 'nth': + var v = parseInt(ttr.value[1], 10); + if (v < -366 || v > 366) throw new Error('Nth out of range: ' + v); + ttr.nextSymbol(); + return ttr.accept('last') ? -v : v; + default: + return false; } - } else if (ttr.symbol === 'week(s)') { + } + function MDAYs() { + ttr.accept('on'); + ttr.accept('the'); + var nth = decodeNTH(); + if (!nth) return; + options.bymonthday = [nth]; ttr.nextSymbol(); - var n = ttr.accept('number'); - - if (!n) { - throw new Error('Unexpected symbol ' + ttr.symbol + ', expected week number'); - } - - options.byweekno = [n[0]]; - while (ttr.accept('comma')) { - n = ttr.accept('number'); - - if (!n) { - throw new Error('Unexpected symbol ' + ttr.symbol + '; expected monthday'); - } - - options.byweekno.push(n[0]); - } - } else if (m) { - ttr.nextSymbol(); - if (!options.bymonth) options.bymonth = []; // @ts-ignore - - options.bymonth.push(m); - } else { - return; - } - } while (ttr.accept('comma') || ttr.accept('the') || ttr.accept('on')); - } - - function AT() { - var at = ttr.accept('at'); - if (!at) return; - - do { - var n = ttr.accept('number'); - - if (!n) { - throw new Error('Unexpected symbol ' + ttr.symbol + ', expected hour'); - } - - options.byhour = [n[0]]; - - while (ttr.accept('comma')) { - n = ttr.accept('number'); - - if (!n) { - throw new Error('Unexpected symbol ' + ttr.symbol + '; expected hour'); + nth = decodeNTH(); + if (!nth) { + throw new Error('Unexpected symbol ' + ttr.symbol + '; expected monthday'); + } + options.bymonthday.push(nth); + ttr.nextSymbol(); } - - options.byhour.push(n[0]); - } - } while (ttr.accept('comma') || ttr.accept('at')); - } - - function decodeM() { - switch (ttr.symbol) { - case 'january': - return 1; - - case 'february': - return 2; - - case 'march': - return 3; - - case 'april': - return 4; - - case 'may': - return 5; - - case 'june': - return 6; - - case 'july': - return 7; - - case 'august': - return 8; - - case 'september': - return 9; - - case 'october': - return 10; - - case 'november': - return 11; - - case 'december': - return 12; - - default: - return false; - } - } - - function decodeWKD() { - switch (ttr.symbol) { - case 'monday': - case 'tuesday': - case 'wednesday': - case 'thursday': - case 'friday': - case 'saturday': - case 'sunday': - return ttr.symbol.substr(0, 2).toUpperCase(); - - default: - return false; - } - } - - function decodeNTH() { - switch (ttr.symbol) { - case 'last': - ttr.nextSymbol(); - return -1; - - case 'first': - ttr.nextSymbol(); - return 1; - - case 'second': - ttr.nextSymbol(); - return ttr.accept('last') ? -2 : 2; - - case 'third': - ttr.nextSymbol(); - return ttr.accept('last') ? -3 : 3; - - case 'nth': - var v = parseInt(ttr.value[1], 10); - if (v < -366 || v > 366) throw new Error('Nth out of range: ' + v); - ttr.nextSymbol(); - return ttr.accept('last') ? -v : v; - - default: - return false; } - } - - function MDAYs() { - ttr.accept('on'); - ttr.accept('the'); - var nth = decodeNTH(); - if (!nth) return; - options.bymonthday = [nth]; - ttr.nextSymbol(); - - while (ttr.accept('comma')) { - nth = decodeNTH(); - - if (!nth) { - throw new Error('Unexpected symbol ' + ttr.symbol + '; expected monthday'); - } - - options.bymonthday.push(nth); - ttr.nextSymbol(); - } - } - - function F() { - if (ttr.symbol === 'until') { - var date = Date.parse(ttr.text); - if (!date) throw new Error('Cannot parse until date:' + ttr.text); - options.until = new Date(date); - } else if (ttr.accept('for')) { - options.count = ttr.value[0]; - ttr.expect('number'); // ttr.expect('times') + function F() { + if (ttr.symbol === 'until') { + var date = Date.parse(ttr.text); + if (!date) throw new Error('Cannot parse until date:' + ttr.text); + options.until = new Date(date); + } else if (ttr.accept('for')) { + options.count = ttr.value[0]; + ttr.expect('number'); + // ttr.expect('times') + } } - } } - exports.default = parseText; +//# sourceMappingURL=parsetext.js.map /***/ }), /* 13 */ @@ -3613,411 +3116,370 @@ exports.default = parseText; "use strict"; -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } - -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); -Object.defineProperty(exports, "__esModule", { - value: true -}); +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } +Object.defineProperty(exports, "__esModule", { value: true }); var rrule_1 = __webpack_require__(2); - var rruleset_1 = __webpack_require__(7); - var dateutil_1 = __webpack_require__(4); - var weekday_1 = __webpack_require__(3); - var helpers_1 = __webpack_require__(0); /** * RRuleStr * To parse a set of rrule strings */ - -var RRuleStr = -/*#__PURE__*/ -function () { - function RRuleStr() { - _classCallCheck(this, RRuleStr); - +var RRuleStr = function () { + function RRuleStr() { + _classCallCheck(this, RRuleStr); + + // tslint:disable-next-line:variable-name + this._handle_BYDAY = this._handle_BYWEEKDAY; + // tslint:disable-next-line:variable-name + this._handle_INTERVAL = this._handle_int; + // tslint:disable-next-line:variable-name + this._handle_COUNT = this._handle_int; + // tslint:disable-next-line:variable-name + this._handle_BYSETPOS = this._handle_int_list; + // tslint:disable-next-line:variable-name + this._handle_BYMONTH = this._handle_int_list; + // tslint:disable-next-line:variable-name + this._handle_BYMONTHDAY = this._handle_int_list; + // tslint:disable-next-line:variable-name + this._handle_BYYEARDAY = this._handle_int_list; + // tslint:disable-next-line:variable-name + this._handle_BYEASTER = this._handle_int_list; + // tslint:disable-next-line:variable-name + this._handle_BYWEEKNO = this._handle_int_list; + // tslint:disable-next-line:variable-name + this._handle_BYHOUR = this._handle_int_list; + // tslint:disable-next-line:variable-name + this._handle_BYMINUTE = this._handle_int_list; + // tslint:disable-next-line:variable-name + this._handle_BYSECOND = this._handle_int_list; + } // tslint:disable-next-line:variable-name - this._handle_BYDAY = this._handle_BYWEEKDAY; // tslint:disable-next-line:variable-name - - this._handle_INTERVAL = this._handle_int; // tslint:disable-next-line:variable-name - - this._handle_COUNT = this._handle_int; // tslint:disable-next-line:variable-name - - this._handle_BYSETPOS = this._handle_int_list; // tslint:disable-next-line:variable-name - - this._handle_BYMONTH = this._handle_int_list; // tslint:disable-next-line:variable-name - - this._handle_BYMONTHDAY = this._handle_int_list; // tslint:disable-next-line:variable-name - this._handle_BYYEARDAY = this._handle_int_list; // tslint:disable-next-line:variable-name - - this._handle_BYEASTER = this._handle_int_list; // tslint:disable-next-line:variable-name - - this._handle_BYWEEKNO = this._handle_int_list; // tslint:disable-next-line:variable-name - - this._handle_BYHOUR = this._handle_int_list; // tslint:disable-next-line:variable-name - - this._handle_BYMINUTE = this._handle_int_list; // tslint:disable-next-line:variable-name - - this._handle_BYSECOND = this._handle_int_list; - } // tslint:disable-next-line:variable-name - - - _createClass(RRuleStr, [{ - key: "_handle_DTSTART", - value: function _handle_DTSTART(rrkwargs, name, value, _) { - // @ts-ignore - rrkwargs[name.toLowerCase()] = dateutil_1.default.untilStringToDate(value); - } - }, { - key: "_handle_int", - value: function _handle_int(rrkwargs, name, value) { - // @ts-ignore - rrkwargs[name.toLowerCase()] = parseInt(value, 10); - } - }, { - key: "_handle_int_list", - value: function _handle_int_list(rrkwargs, name, value) { - // @ts-ignore - rrkwargs[name.toLowerCase()] = value.split(',').map(function (x) { - return parseInt(x, 10); - }); - } - }, { - key: "_handle_FREQ", - value: function _handle_FREQ(rrkwargs, _, value, __) { - // eslint-disable-line - rrkwargs['freq'] = RRuleStr._freq_map[value]; - } - }, { - key: "_handle_UNTIL", - value: function _handle_UNTIL(rrkwargs, _, value, __) { - // eslint-disable-line - try { - rrkwargs['until'] = dateutil_1.default.untilStringToDate(value); - } catch (error) { - throw new Error('invalid until date'); - } - } - }, { - key: "_handle_WKST", - value: function _handle_WKST(rrkwargs, _, value, __) { - // eslint-disable-line - rrkwargs['wkst'] = RRuleStr._weekday_map[value]; - } - }, { - key: "_handle_BYWEEKDAY", - value: function _handle_BYWEEKDAY(rrkwargs, _, value, __) { - // Two ways to specify this: +1MO or MO(+1) - var splt; - var i; - var j; - var n; - var w; - var wday; - var l = []; - var wdays = value.split(','); - - for (i = 0; i < wdays.length; i++) { - wday = wdays[i]; - - if (wday.indexOf('(') > -1) { - // If it's of the form TH(+1), etc. - splt = wday.split('('); - w = splt[0]; - n = parseInt(splt.slice(1, -1)[0], 10); - } else { - // # If it's of the form +1MO - for (j = 0; j < wday.length; j++) { - if ('+-0123456789'.indexOf(wday[j]) === -1) break; - } - n = wday.slice(0, j) || null; - w = wday.slice(j); - if (n) n = parseInt(n, 10); + _createClass(RRuleStr, [{ + key: "_handle_DTSTART", + value: function _handle_DTSTART(rrkwargs, name, value, _) { + // @ts-ignore + rrkwargs[name.toLowerCase()] = dateutil_1.default.untilStringToDate(value); } - - var weekday = new weekday_1.default(RRuleStr._weekday_map[w], n); - l.push(weekday); - } - - rrkwargs['byweekday'] = l; - } - }, { - key: "_parseRfcRRule", - value: function _parseRfcRRule(line) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - options.dtstart = options.dtstart || null; - options.cache = options.cache || false; - options.ignoretz = options.ignoretz || false; - options.tzinfos = options.tzinfos || null; - var name; - var value; - var parts; - - if (line.indexOf(':') !== -1) { - parts = line.split(':'); - name = parts[0]; - value = parts[1]; - if (name !== 'RRULE') throw new Error('unknown parameter name'); - } else { - value = line; - } - - var rrkwargs = {}; - var pairs = value.split(';'); - - for (var i = 0; i < pairs.length; i++) { - parts = pairs[i].split('='); - name = parts[0].toUpperCase(); - value = parts[1].toUpperCase(); - - try { - // @ts-ignore - this['_handle_' + name](rrkwargs, name, value, { - ignoretz: options.ignoretz, - tzinfos: options.tzinfos - }); - } catch (error) { - throw new Error("unknown parameter '" + name + "':" + value); - } - } - - rrkwargs.dtstart = rrkwargs.dtstart || options.dtstart; - return new rrule_1.default(rrkwargs, !options.cache); - } - }, { - key: "_parseRfc", - value: function _parseRfc(s, options) { - if (options.compatible) { - options.forceset = true; - options.unfold = true; - } - - s = s && s.toUpperCase().trim(); - if (!s) throw new Error('Invalid empty string'); - var i = 0; - var line; - var lines; // More info about 'unfold' option - // Go head to http://www.ietf.org/rfc/rfc2445.txt - - if (options.unfold) { - lines = s.split('\n'); - - while (i < lines.length) { - // TODO - line = lines[i] = lines[i].replace(/\s+$/g, ''); - - if (!line) { - lines.splice(i, 1); - } else if (i > 0 && line[0] === ' ') { - lines[i - 1] += line.slice(1); - lines.splice(i, 1); - } else { - i += 1; - } - } - } else { - lines = s.split(/\s/); - } - - var rrulevals = []; - var rdatevals = []; - var exrulevals = []; - var exdatevals = []; - var name; - var value; - var parts; - var parms; - var parm; - var dtstart; - var rset; - var j; - var k; - var datestrs; - var datestr; - - if (!options.forceset && lines.length === 1 && (s.indexOf(':') === -1 || s.indexOf('RRULE:') === 0)) { - return this._parseRfcRRule(lines[0], { - cache: options.cache, - dtstart: options.dtstart, - ignoretz: options.ignoretz, - tzinfos: options.tzinfos - }); - } else { - for (var _i = 0; _i < lines.length; _i++) { - line = lines[_i]; - if (!line) continue; - - if (line.indexOf(':') === -1) { - name = 'RRULE'; - value = line; - } else { - parts = helpers_1.split(line, ':', 1); - name = parts[0]; - value = parts[1]; - } - - parms = name.split(';'); - if (!parms) throw new Error('empty property name'); - name = parms[0]; - parms = parms.slice(1); - - if (name === 'RRULE') { - for (j = 0; j < parms.length; j++) { - parm = parms[j]; - throw new Error('unsupported RRULE parm: ' + parm); + }, { + key: "_handle_int", + value: function _handle_int(rrkwargs, name, value) { + // @ts-ignore + rrkwargs[name.toLowerCase()] = parseInt(value, 10); + } + }, { + key: "_handle_int_list", + value: function _handle_int_list(rrkwargs, name, value) { + // @ts-ignore + rrkwargs[name.toLowerCase()] = value.split(',').map(function (x) { + return parseInt(x, 10); + }); + } + }, { + key: "_handle_FREQ", + value: function _handle_FREQ(rrkwargs, _, value, __) { + // eslint-disable-line + rrkwargs['freq'] = RRuleStr._freq_map[value]; + } + }, { + key: "_handle_UNTIL", + value: function _handle_UNTIL(rrkwargs, _, value, __) { + // eslint-disable-line + try { + rrkwargs['until'] = dateutil_1.default.untilStringToDate(value); + } catch (error) { + throw new Error('invalid until date'); } - - rrulevals.push(value); - } else if (name === 'RDATE') { - for (j = 0; j < parms.length; j++) { - parm = parms[j]; - - if (parm !== 'VALUE=DATE-TIME' && parm !== 'VALUE=DATE') { - throw new Error('unsupported RDATE parm: ' + parm); - } + } + }, { + key: "_handle_WKST", + value: function _handle_WKST(rrkwargs, _, value, __) { + // eslint-disable-line + rrkwargs['wkst'] = RRuleStr._weekday_map[value]; + } + }, { + key: "_handle_BYWEEKDAY", + value: function _handle_BYWEEKDAY(rrkwargs, _, value, __) { + // Two ways to specify this: +1MO or MO(+1) + var splt = void 0; + var i = void 0; + var j = void 0; + var n = void 0; + var w = void 0; + var wday = void 0; + var l = []; + var wdays = value.split(','); + for (i = 0; i < wdays.length; i++) { + wday = wdays[i]; + if (wday.indexOf('(') > -1) { + // If it's of the form TH(+1), etc. + splt = wday.split('('); + w = splt[0]; + n = parseInt(splt.slice(1, -1)[0], 10); + } else { + // # If it's of the form +1MO + for (j = 0; j < wday.length; j++) { + if ('+-0123456789'.indexOf(wday[j]) === -1) break; + } + n = wday.slice(0, j) || null; + w = wday.slice(j); + if (n) n = parseInt(n, 10); + } + var weekday = new weekday_1.default(RRuleStr._weekday_map[w], n); + l.push(weekday); } - - rdatevals.push(value); - } else if (name === 'EXRULE') { - for (j = 0; j < parms.length; j++) { - parm = parms[j]; - throw new Error('unsupported EXRULE parm: ' + parm); + rrkwargs['byweekday'] = l; + } + }, { + key: "_parseRfcRRule", + value: function _parseRfcRRule(line) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + options.dtstart = options.dtstart || null; + options.cache = options.cache || false; + options.ignoretz = options.ignoretz || false; + options.tzinfos = options.tzinfos || null; + var name = void 0; + var value = void 0; + var parts = void 0; + if (line.indexOf(':') !== -1) { + parts = line.split(':'); + name = parts[0]; + value = parts[1]; + if (name !== 'RRULE') throw new Error('unknown parameter name'); + } else { + value = line; } - - exrulevals.push(value); - } else if (name === 'EXDATE') { - for (j = 0; j < parms.length; j++) { - parm = parms[j]; - - if (parm !== 'VALUE=DATE-TIME' && parm !== 'VALUE=DATE') { - throw new Error('unsupported EXDATE parm: ' + parm); - } + var rrkwargs = {}; + var pairs = value.split(';'); + for (var i = 0; i < pairs.length; i++) { + parts = pairs[i].split('='); + name = parts[0].toUpperCase(); + value = parts[1].toUpperCase(); + try { + // @ts-ignore + this['_handle_' + name](rrkwargs, name, value, { + ignoretz: options.ignoretz, + tzinfos: options.tzinfos + }); + } catch (error) { + throw new Error("unknown parameter '" + name + "':" + value); + } } - - exdatevals.push(value); - } else if (name === 'DTSTART') { - dtstart = dateutil_1.default.untilStringToDate(value); - } else { - throw new Error('unsupported property: ' + name); - } + rrkwargs.dtstart = rrkwargs.dtstart || options.dtstart; + return new rrule_1.default(rrkwargs, !options.cache); } - - if (options.forceset || rrulevals.length > 1 || rdatevals.length || exrulevals.length || exdatevals.length) { - rset = new rruleset_1.default(!options.cache); - - for (j = 0; j < rrulevals.length; j++) { - rset.rrule(this._parseRfcRRule(rrulevals[j], { - dtstart: options.dtstart || dtstart, - ignoretz: options.ignoretz, - tzinfos: options.tzinfos - })); - } - - for (j = 0; j < rdatevals.length; j++) { - datestrs = rdatevals[j].split(','); - - for (k = 0; k < datestrs.length; k++) { - datestr = datestrs[k]; - rset.rdate(dateutil_1.default.untilStringToDate(datestr)); + }, { + key: "_parseRfc", + value: function _parseRfc(s, options) { + if (options.compatible) { + options.forceset = true; + options.unfold = true; } - } - - for (j = 0; j < exrulevals.length; j++) { - rset.exrule(this._parseRfcRRule(exrulevals[j], { - dtstart: options.dtstart || dtstart, - ignoretz: options.ignoretz, - tzinfos: options.tzinfos - })); - } - - for (j = 0; j < exdatevals.length; j++) { - datestrs = exdatevals[j].split(','); - - for (k = 0; k < datestrs.length; k++) { - datestr = datestrs[k]; - rset.exdate(dateutil_1.default.untilStringToDate(datestr)); + s = s && s.toUpperCase().trim(); + if (!s) throw new Error('Invalid empty string'); + var i = 0; + var line = void 0; + var lines = void 0; + // More info about 'unfold' option + // Go head to http://www.ietf.org/rfc/rfc2445.txt + if (options.unfold) { + lines = s.split('\n'); + while (i < lines.length) { + // TODO + line = lines[i] = lines[i].replace(/\s+$/g, ''); + if (!line) { + lines.splice(i, 1); + } else if (i > 0 && line[0] === ' ') { + lines[i - 1] += line.slice(1); + lines.splice(i, 1); + } else { + i += 1; + } + } + } else { + lines = s.split(/\s/); } - } - - if (options.compatible && options.dtstart) rset.rdate(dtstart); - return rset; - } else { - return this._parseRfcRRule(rrulevals[0], { - dtstart: options.dtstart || dtstart, - cache: options.cache, - ignoretz: options.ignoretz, - tzinfos: options.tzinfos - }); - } - } - } - }, { - key: "parse", - value: function parse(s) { - var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; - var invalid = []; - var keys = Object.keys(options); - var defaultKeys = Object.keys(RRuleStr.DEFAULT_OPTIONS); - keys.forEach(function (key) { - if (!helpers_1.contains(defaultKeys, key)) invalid.push(key); - }, this); - - if (invalid.length) { - throw new Error('Invalid options: ' + invalid.join(', ')); - } // Merge in default options - - - defaultKeys.forEach(function (key) { - // @ts-ignore - if (!helpers_1.contains(keys, key)) options[key] = RRuleStr.DEFAULT_OPTIONS[key]; - }); - return this._parseRfc(s, options); - } - }]); + var rrulevals = []; + var rdatevals = []; + var exrulevals = []; + var exdatevals = []; + var name = void 0; + var value = void 0; + var parts = void 0; + var parms = void 0; + var parm = void 0; + var dtstart = void 0; + var rset = void 0; + var j = void 0; + var k = void 0; + var datestrs = void 0; + var datestr = void 0; + if (!options.forceset && lines.length === 1 && (s.indexOf(':') === -1 || s.indexOf('RRULE:') === 0)) { + return this._parseRfcRRule(lines[0], { + cache: options.cache, + dtstart: options.dtstart, + ignoretz: options.ignoretz, + tzinfos: options.tzinfos + }); + } else { + for (var _i = 0; _i < lines.length; _i++) { + line = lines[_i]; + if (!line) continue; + if (line.indexOf(':') === -1) { + name = 'RRULE'; + value = line; + } else { + parts = helpers_1.split(line, ':', 1); + name = parts[0]; + value = parts[1]; + } + parms = name.split(';'); + if (!parms) throw new Error('empty property name'); + name = parms[0]; + parms = parms.slice(1); + if (name === 'RRULE') { + for (j = 0; j < parms.length; j++) { + parm = parms[j]; + throw new Error('unsupported RRULE parm: ' + parm); + } + rrulevals.push(value); + } else if (name === 'RDATE') { + for (j = 0; j < parms.length; j++) { + parm = parms[j]; + if (parm !== 'VALUE=DATE-TIME' && parm !== 'VALUE=DATE') { + throw new Error('unsupported RDATE parm: ' + parm); + } + } + rdatevals.push(value); + } else if (name === 'EXRULE') { + for (j = 0; j < parms.length; j++) { + parm = parms[j]; + throw new Error('unsupported EXRULE parm: ' + parm); + } + exrulevals.push(value); + } else if (name === 'EXDATE') { + for (j = 0; j < parms.length; j++) { + parm = parms[j]; + if (parm !== 'VALUE=DATE-TIME' && parm !== 'VALUE=DATE') { + throw new Error('unsupported EXDATE parm: ' + parm); + } + } + exdatevals.push(value); + } else if (name === 'DTSTART') { + dtstart = dateutil_1.default.untilStringToDate(value); + } else { + throw new Error('unsupported property: ' + name); + } + } + if (options.forceset || rrulevals.length > 1 || rdatevals.length || exrulevals.length || exdatevals.length) { + rset = new rruleset_1.default(!options.cache); + for (j = 0; j < rrulevals.length; j++) { + rset.rrule(this._parseRfcRRule(rrulevals[j], { + dtstart: options.dtstart || dtstart, + ignoretz: options.ignoretz, + tzinfos: options.tzinfos + })); + } + for (j = 0; j < rdatevals.length; j++) { + datestrs = rdatevals[j].split(','); + for (k = 0; k < datestrs.length; k++) { + datestr = datestrs[k]; + rset.rdate(dateutil_1.default.untilStringToDate(datestr)); + } + } + for (j = 0; j < exrulevals.length; j++) { + rset.exrule(this._parseRfcRRule(exrulevals[j], { + dtstart: options.dtstart || dtstart, + ignoretz: options.ignoretz, + tzinfos: options.tzinfos + })); + } + for (j = 0; j < exdatevals.length; j++) { + datestrs = exdatevals[j].split(','); + for (k = 0; k < datestrs.length; k++) { + datestr = datestrs[k]; + rset.exdate(dateutil_1.default.untilStringToDate(datestr)); + } + } + if (options.compatible && options.dtstart) rset.rdate(dtstart); + return rset; + } else { + return this._parseRfcRRule(rrulevals[0], { + dtstart: options.dtstart || dtstart, + cache: options.cache, + ignoretz: options.ignoretz, + tzinfos: options.tzinfos + }); + } + } + } + }, { + key: "parse", + value: function parse(s) { + var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + var invalid = []; + var keys = Object.keys(options); + var defaultKeys = Object.keys(RRuleStr.DEFAULT_OPTIONS); + keys.forEach(function (key) { + if (!helpers_1.contains(defaultKeys, key)) invalid.push(key); + }, this); + if (invalid.length) { + throw new Error('Invalid options: ' + invalid.join(', ')); + } + // Merge in default options + defaultKeys.forEach(function (key) { + // @ts-ignore + if (!helpers_1.contains(keys, key)) options[key] = RRuleStr.DEFAULT_OPTIONS[key]; + }); + return this._parseRfc(s, options); + } + }]); - return RRuleStr; -}(); // tslint:disable-next-line:variable-name + return RRuleStr; +}(); +// tslint:disable-next-line:variable-name RRuleStr._weekday_map = { - MO: 0, - TU: 1, - WE: 2, - TH: 3, - FR: 4, - SA: 5, - SU: 6 -}; // tslint:disable-next-line:variable-name - + MO: 0, + TU: 1, + WE: 2, + TH: 3, + FR: 4, + SA: 5, + SU: 6 +}; +// tslint:disable-next-line:variable-name RRuleStr._freq_map = { - YEARLY: rrule_1.default.YEARLY, - MONTHLY: rrule_1.default.MONTHLY, - WEEKLY: rrule_1.default.WEEKLY, - DAILY: rrule_1.default.DAILY, - HOURLY: rrule_1.default.HOURLY, - MINUTELY: rrule_1.default.MINUTELY, - SECONDLY: rrule_1.default.SECONDLY + YEARLY: rrule_1.default.YEARLY, + MONTHLY: rrule_1.default.MONTHLY, + WEEKLY: rrule_1.default.WEEKLY, + DAILY: rrule_1.default.DAILY, + HOURLY: rrule_1.default.HOURLY, + MINUTELY: rrule_1.default.MINUTELY, + SECONDLY: rrule_1.default.SECONDLY }; RRuleStr.DEFAULT_OPTIONS = { - dtstart: null, - cache: false, - unfold: false, - forceset: false, - compatible: false, - ignoretz: false, - tzinfos: null + dtstart: null, + cache: false, + unfold: false, + forceset: false, + compatible: false, + ignoretz: false, + tzinfos: null }; exports.default = RRuleStr; +//# sourceMappingURL=rrulestr.js.map /***/ }) /******/ ]); diff --git a/dist/es5/rrule.js.map b/dist/es5/rrule.js.map index 8c306ae5..ff5b08f8 100644 --- a/dist/es5/rrule.js.map +++ b/dist/es5/rrule.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://rrule/webpack/universalModuleDefinition","webpack://rrule/webpack/bootstrap","webpack://rrule/../../src/helpers.ts","webpack://rrule/../../src/index.ts","webpack://rrule/../../src/rrule.ts","webpack://rrule/../../src/weekday.ts","webpack://rrule/../../src/dateutil.ts","webpack://rrule/../../src/iterresult.ts","webpack://rrule/../../../src/nlp/i18n.ts","webpack://rrule/../../src/rruleset.ts","webpack://rrule/../../src/masks.ts","webpack://rrule/../../src/callbackiterresult.ts","webpack://rrule/../../../src/nlp/index.ts","webpack://rrule/../../../src/nlp/totext.ts","webpack://rrule/../../../src/nlp/parsetext.ts","webpack://rrule/../../src/rrulestr.ts"],"names":[],"mappings":"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","file":"rrule.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"rrule\"] = factory();\n\telse\n\t\troot[\"rrule\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1);\n","\"use strict\";\n// =============================================================================\n// Helper functions\n// =============================================================================\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Simplified version of python's range()\n */\nconst range = function (start, end) {\n if (arguments.length === 1) {\n end = start;\n start = 0;\n }\n const rang = [];\n for (let i = start; i < end; i++)\n rang.push(i);\n return rang;\n};\nexports.range = range;\nconst repeat = function (value, times) {\n let i = 0;\n const array = [];\n if (value instanceof Array) {\n for (; i < times; i++)\n array[i] = [].concat(value);\n }\n else {\n for (; i < times; i++)\n array[i] = value;\n }\n return array;\n};\nexports.repeat = repeat;\n/**\n * Python like split\n */\nconst split = function (str, sep, num) {\n const splits = str.split(sep);\n return num\n ? splits.slice(0, num).concat([splits.slice(num).join(sep)])\n : splits;\n};\nexports.split = split;\n/**\n * closure/goog/math/math.js:modulo\n * Copyright 2006 The Closure Library Authors.\n * The % operator in JavaScript returns the remainder of a / b, but differs from\n * some other languages in that the result will have the same sign as the\n * dividend. For example, -1 % 8 == -1, whereas in some other languages\n * (such as Python) the result would be 7. This function emulates the more\n * correct modulo behavior, which is useful for certain applications such as\n * calculating an offset index in a circular list.\n *\n * @param {number} a The dividend.\n * @param {number} b The divisor.\n * @return {number} a % b where the result is between 0 and b (either 0 <= x < b\n * or b < x <= 0, depending on the sign of b).\n */\nconst pymod = function (a, b) {\n const r = a % b;\n // If r and b differ in sign, add b to wrap the result to the correct sign.\n return r * b < 0 ? r + b : r;\n};\nexports.pymod = pymod;\n/**\n * @see: \n */\nconst divmod = function (a, b) {\n return { div: Math.floor(a / b), mod: pymod(a, b) };\n};\nexports.divmod = divmod;\n/**\n * Python-like boolean\n * @return {Boolean} value of an object/primitive, taking into account\n * the fact that in Python an empty list's/tuple's\n * boolean value is False, whereas in JS it's true\n */\nconst plb = function (obj) {\n return obj instanceof Array && obj.length === 0 ? false : Boolean(obj);\n};\nexports.plb = plb;\n/**\n * Return true if a value is in an array\n */\nconst contains = function (arr, val) {\n return arr.indexOf(val) !== -1;\n};\nexports.contains = contains;\n//# sourceMappingURL=helpers.js.map","\"use strict\";\n/*!\n * rrule.js - Library for working with recurrence rules for calendar dates.\n * https://github.com/jakubroztocil/rrule\n *\n * Copyright 2010, Jakub Roztocil and Lars Schoning\n * Licenced under the BSD licence.\n * https://github.com/jakubroztocil/rrule/blob/master/LICENCE\n *\n * Based on:\n * python-dateutil - Extensions to the standard Python datetime module.\n * Copyright (c) 2003-2011 - Gustavo Niemeyer \n * Copyright (c) 2012 - Tomi Pieviläinen \n * https://github.com/jakubroztocil/rrule/blob/master/LICENCE\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst rrule_1 = require(\"./rrule\");\nexports.RRule = rrule_1.default;\nconst rruleset_1 = require(\"./rruleset\");\nexports.RRuleSet = rruleset_1.default;\nconst rrulestr_1 = require(\"./rrulestr\");\nvar rrule_2 = require(\"./rrule\");\nexports.Frequency = rrule_2.Frequency;\nvar weekday_1 = require(\"./weekday\");\nexports.Weekday = weekday_1.default;\n// =============================================================================\n// Export\n// =============================================================================\n// Only one RRuleStr instance for all rrule string parsing work.\nconst rruleStr = new rrulestr_1.default();\nconst rrulestr = function () {\n return rruleStr.parse.apply(rruleStr, arguments);\n};\nexports.rrulestr = rrulestr;\nexports.default = rrule_1.default;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst weekday_1 = require(\"./weekday\");\nconst dateutil_1 = require(\"./dateutil\");\nconst helpers_1 = require(\"./helpers\");\nconst masks_1 = require(\"./masks\");\nconst iterresult_1 = require(\"./iterresult\");\nconst callbackiterresult_1 = require(\"./callbackiterresult\");\nconst getnlp = function () {\n // Lazy, runtime import to avoid circular refs.\n if (!getnlp._nlp) {\n getnlp._nlp = require('./nlp');\n }\n return getnlp._nlp;\n};\nvar Frequency;\n(function (Frequency) {\n Frequency[Frequency[\"YEARLY\"] = 0] = \"YEARLY\";\n Frequency[Frequency[\"MONTHLY\"] = 1] = \"MONTHLY\";\n Frequency[Frequency[\"WEEKLY\"] = 2] = \"WEEKLY\";\n Frequency[Frequency[\"DAILY\"] = 3] = \"DAILY\";\n Frequency[Frequency[\"HOURLY\"] = 4] = \"HOURLY\";\n Frequency[Frequency[\"MINUTELY\"] = 5] = \"MINUTELY\";\n Frequency[Frequency[\"SECONDLY\"] = 6] = \"SECONDLY\";\n})(Frequency = exports.Frequency || (exports.Frequency = {}));\nconst Days = {\n MO: new weekday_1.default(0),\n TU: new weekday_1.default(1),\n WE: new weekday_1.default(2),\n TH: new weekday_1.default(3),\n FR: new weekday_1.default(4),\n SA: new weekday_1.default(5),\n SU: new weekday_1.default(6)\n};\n/**\n *\n * @param {Options?} options - see \n * The only required option is `freq`, one of RRule.YEARLY, RRule.MONTHLY, ...\n * @constructor\n */\nclass RRule {\n constructor(options = {}, noCache = false) {\n // RFC string\n this._string = null;\n this._cache = noCache\n ? null\n : {\n all: false,\n before: [],\n after: [],\n between: []\n };\n // used by toString()\n this.origOptions = {};\n this.options = {};\n const invalid = [];\n const keys = Object.keys(options);\n const defaultKeys = Object.keys(RRule.DEFAULT_OPTIONS);\n // Shallow copy for options and origOptions and check for invalid\n keys.forEach(function (key) {\n this.origOptions[key] = options[key];\n this.options[key] = options[key];\n if (!helpers_1.contains(defaultKeys, key))\n invalid.push(key);\n }, this);\n if (invalid.length) {\n throw new Error('Invalid options: ' + invalid.join(', '));\n }\n if (!RRule.FREQUENCIES[options.freq] && options.byeaster === null) {\n throw new Error('Invalid frequency: ' + String(options.freq));\n }\n // Merge in default options\n defaultKeys.forEach(function (key) {\n if (!helpers_1.contains(keys, key))\n this.options[key] = RRule.DEFAULT_OPTIONS[key];\n }, this);\n const opts = this.options;\n if (opts.byeaster !== null)\n opts.freq = RRule.YEARLY;\n if (!opts.dtstart)\n opts.dtstart = new Date(new Date().setMilliseconds(0));\n const millisecondModulo = opts.dtstart.getTime() % 1000;\n if (opts.wkst === null) {\n opts.wkst = RRule.MO.weekday;\n }\n else if (typeof opts.wkst === 'number') {\n // cool, just keep it like that\n }\n else {\n opts.wkst = opts.wkst.weekday;\n }\n let v;\n if (opts.bysetpos !== null) {\n if (typeof opts.bysetpos === 'number')\n opts.bysetpos = [opts.bysetpos];\n for (let i = 0; i < opts.bysetpos.length; i++) {\n v = opts.bysetpos[i];\n if (v === 0 || !(v >= -366 && v <= 366)) {\n throw new Error('bysetpos must be between 1 and 366,' + ' or between -366 and -1');\n }\n }\n }\n if (!(helpers_1.plb(opts.byweekno) ||\n helpers_1.plb(opts.byyearday) ||\n helpers_1.plb(opts.bymonthday) ||\n opts.byweekday !== null ||\n opts.byeaster !== null)) {\n switch (opts.freq) {\n case RRule.YEARLY:\n if (!opts.bymonth)\n opts.bymonth = opts.dtstart.getMonth() + 1;\n opts.bymonthday = opts.dtstart.getDate();\n break;\n case RRule.MONTHLY:\n opts.bymonthday = opts.dtstart.getDate();\n break;\n case RRule.WEEKLY:\n opts.byweekday = [dateutil_1.default.getWeekday(opts.dtstart)];\n break;\n }\n }\n // bymonth\n if (opts.bymonth !== null && !(opts.bymonth instanceof Array)) {\n opts.bymonth = [opts.bymonth];\n }\n // byyearday\n if (opts.byyearday !== null && !(opts.byyearday instanceof Array)) {\n opts.byyearday = [opts.byyearday];\n }\n // bymonthday\n if (opts.bymonthday === null) {\n opts.bymonthday = [];\n opts.bynmonthday = [];\n }\n else if (opts.bymonthday instanceof Array) {\n const bymonthday = [];\n const bynmonthday = [];\n for (let i = 0; i < opts.bymonthday.length; i++) {\n v = opts.bymonthday[i];\n if (v > 0) {\n bymonthday.push(v);\n }\n else if (v < 0) {\n bynmonthday.push(v);\n }\n }\n opts.bymonthday = bymonthday;\n opts.bynmonthday = bynmonthday;\n }\n else {\n if (opts.bymonthday < 0) {\n opts.bynmonthday = [opts.bymonthday];\n opts.bymonthday = [];\n }\n else {\n opts.bynmonthday = [];\n opts.bymonthday = [opts.bymonthday];\n }\n }\n // byweekno\n if (opts.byweekno !== null && !(opts.byweekno instanceof Array)) {\n opts.byweekno = [opts.byweekno];\n }\n // byweekday / bynweekday\n if (opts.byweekday === null) {\n opts.bynweekday = null;\n }\n else if (typeof opts.byweekday === 'number') {\n opts.byweekday = [opts.byweekday];\n opts.bynweekday = null;\n }\n else if (opts.byweekday instanceof weekday_1.default) {\n if (!opts.byweekday.n || opts.freq > RRule.MONTHLY) {\n opts.byweekday = [opts.byweekday.weekday];\n opts.bynweekday = null;\n }\n else {\n opts.bynweekday = [[opts.byweekday.weekday, opts.byweekday.n]];\n opts.byweekday = null;\n }\n }\n else {\n const byweekday = [];\n const bynweekday = [];\n for (let i = 0; i < opts.byweekday.length; i++) {\n const wday = opts.byweekday[i];\n if (typeof wday === 'number') {\n byweekday.push(wday);\n }\n else if (!wday.n || opts.freq > RRule.MONTHLY) {\n byweekday.push(wday.weekday);\n }\n else {\n bynweekday.push([wday.weekday, wday.n]);\n }\n }\n opts.byweekday = helpers_1.plb(byweekday) ? byweekday : null;\n opts.bynweekday = helpers_1.plb(bynweekday) ? bynweekday : null;\n }\n // byhour\n if (opts.byhour === null) {\n opts.byhour = opts.freq < RRule.HOURLY ? [opts.dtstart.getHours()] : null;\n }\n else if (typeof opts.byhour === 'number') {\n opts.byhour = [opts.byhour];\n }\n // byminute\n if (opts.byminute === null) {\n opts.byminute =\n opts.freq < RRule.MINUTELY ? [opts.dtstart.getMinutes()] : null;\n }\n else if (typeof opts.byminute === 'number') {\n opts.byminute = [opts.byminute];\n }\n // bysecond\n if (opts.bysecond === null) {\n opts.bysecond =\n opts.freq < RRule.SECONDLY ? [opts.dtstart.getSeconds()] : null;\n }\n else if (typeof opts.bysecond === 'number') {\n opts.bysecond = [opts.bysecond];\n }\n if (opts.freq >= RRule.HOURLY) {\n this.timeset = null;\n }\n else {\n this.timeset = [];\n for (let i = 0; i < opts.byhour.length; i++) {\n const hour = opts.byhour[i];\n for (let j = 0; j < opts.byminute.length; j++) {\n const minute = opts.byminute[j];\n for (let k = 0; k < opts.bysecond.length; k++) {\n const second = opts.bysecond[k];\n // python:\n // datetime.time(hour, minute, second,\n // tzinfo=self._tzinfo))\n this.timeset.push(new dateutil_1.default.Time(hour, minute, second, millisecondModulo));\n }\n }\n }\n dateutil_1.default.sort(this.timeset);\n }\n }\n static parseText(text, language) {\n return getnlp().parseText(text, language);\n }\n static fromText(text, language) {\n return getnlp().fromText(text, language);\n }\n static parseString(rfcString) {\n rfcString = rfcString.replace(/^\\s+|\\s+$/, '');\n if (!rfcString.length)\n return null;\n let key;\n let value;\n let attr;\n const attrs = rfcString.split(';');\n const options = {};\n for (let i = 0; i < attrs.length; i++) {\n attr = attrs[i].split('=');\n key = attr[0];\n value = attr[1];\n switch (key) {\n case 'FREQ':\n options.freq = Frequency[value];\n break;\n case 'WKST':\n options.wkst = Days[value];\n break;\n case 'COUNT':\n case 'INTERVAL':\n case 'BYSETPOS':\n case 'BYMONTH':\n case 'BYMONTHDAY':\n case 'BYYEARDAY':\n case 'BYWEEKNO':\n case 'BYHOUR':\n case 'BYMINUTE':\n case 'BYSECOND':\n if (value.indexOf(',') !== -1) {\n value = value.split(',');\n for (let j = 0; j < value.length; j++) {\n if (/^[+-]?\\d+$/.test(value[j].toString())) {\n value[j] = Number(value[j]);\n }\n }\n }\n else if (/^[+-]?\\d+$/.test(value)) {\n value = Number(value);\n }\n key = key.toLowerCase();\n // @ts-ignore\n options[key] = value;\n break;\n case 'BYDAY': // => byweekday\n let n;\n let wday;\n let day;\n const days = value.split(',');\n options.byweekday = [];\n for (let j = 0; j < days.length; j++) {\n day = days[j];\n if (day.length === 2) {\n // MO, TU, ...\n wday = Days[day]; // wday instanceof Weekday\n options.byweekday.push(wday);\n }\n else {\n // -1MO, +3FR, 1SO, ...\n const parts = day.match(/^([+-]?\\d)([A-Z]{2})$/);\n n = Number(parts[1]);\n const wdaypart = parts[2];\n wday = Days[wdaypart].weekday;\n options.byweekday.push(new weekday_1.default(wday, n));\n }\n }\n break;\n case 'DTSTART':\n options.dtstart = dateutil_1.default.untilStringToDate(value);\n break;\n case 'UNTIL':\n options.until = dateutil_1.default.untilStringToDate(value);\n break;\n case 'BYEASTER':\n options.byeaster = Number(value);\n break;\n default:\n throw new Error(\"Unknown RRULE property '\" + key + \"'\");\n }\n }\n return options;\n }\n static fromString(str) {\n return new RRule(RRule.parseString(str));\n }\n static optionsToString(options) {\n const pairs = [];\n const keys = Object.keys(options);\n const defaultKeys = Object.keys(RRule.DEFAULT_OPTIONS);\n for (let i = 0; i < keys.length; i++) {\n if (!helpers_1.contains(defaultKeys, keys[i]))\n continue;\n let key = keys[i].toUpperCase();\n let value = options[keys[i]];\n let strValues = [];\n if (value === null || (value instanceof Array && !value.length))\n continue;\n switch (key) {\n case 'FREQ':\n value = RRule.FREQUENCIES[options.freq];\n break;\n case 'WKST':\n if (!(value instanceof weekday_1.default)) {\n value = new weekday_1.default(value);\n }\n break;\n case 'BYWEEKDAY':\n /*\n NOTE: BYWEEKDAY is a special case.\n RRule() deconstructs the rule.options.byweekday array\n into an array of Weekday arguments.\n On the other hand, rule.origOptions is an array of Weekdays.\n We need to handle both cases here.\n It might be worth change RRule to keep the Weekdays.\n \n Also, BYWEEKDAY (used by RRule) vs. BYDAY (RFC)\n \n */\n key = 'BYDAY';\n if (!(value instanceof Array))\n value = [value];\n for (let j = 0; j < value.length; j++) {\n let wday = value[j];\n if (wday instanceof weekday_1.default) {\n // good\n }\n else if (wday instanceof Array) {\n wday = new weekday_1.default(wday[0], wday[1]);\n }\n else {\n wday = new weekday_1.default(wday);\n }\n strValues[j] = wday.toString();\n }\n value = strValues;\n break;\n case 'DTSTART':\n case 'UNTIL':\n value = dateutil_1.default.timeToUntilString(value);\n break;\n default:\n if (value instanceof Array) {\n for (let j = 0; j < value.length; j++) {\n strValues[j] = String(value[j]);\n }\n value = strValues;\n }\n else {\n value = String(value);\n }\n }\n pairs.push([key, value]);\n }\n const strings = [];\n for (let i = 0; i < pairs.length; i++) {\n const attr = pairs[i];\n strings.push(attr[0] + '=' + attr[1].toString());\n }\n return strings.join(';');\n }\n /**\n * @param {Function} iterator - optional function that will be called\n * on each date that is added. It can return false\n * to stop the iteration.\n * @return Array containing all recurrences.\n */\n all(iterator) {\n if (iterator) {\n return this._iter(new callbackiterresult_1.default('all', {}, iterator));\n }\n else {\n let result = this._cacheGet('all');\n if (result === false) {\n result = this._iter(new iterresult_1.default('all', {}));\n this._cacheAdd('all', result);\n }\n return result;\n }\n }\n /**\n * Returns all the occurrences of the rrule between after and before.\n * The inc keyword defines what happens if after and/or before are\n * themselves occurrences. With inc == True, they will be included in the\n * list, if they are found in the recurrence set.\n * @return Array\n */\n between(after, before, inc = false, iterator) {\n const args = {\n before: before,\n after: after,\n inc: inc\n };\n if (iterator) {\n return this._iter(new callbackiterresult_1.default('between', args, iterator));\n }\n let result = this._cacheGet('between', args);\n if (result === false) {\n result = this._iter(new iterresult_1.default('between', args));\n this._cacheAdd('between', result, args);\n }\n return result;\n }\n /**\n * Returns the last recurrence before the given datetime instance.\n * The inc keyword defines what happens if dt is an occurrence.\n * With inc == True, if dt itself is an occurrence, it will be returned.\n * @return Date or null\n */\n before(dt, inc = false) {\n const args = { dt: dt, inc: inc };\n let result = this._cacheGet('before', args);\n if (result === false) {\n result = this._iter(new iterresult_1.default('before', args));\n this._cacheAdd('before', result, args);\n }\n return result;\n }\n /**\n * Returns the first recurrence after the given datetime instance.\n * The inc keyword defines what happens if dt is an occurrence.\n * With inc == True, if dt itself is an occurrence, it will be returned.\n * @return Date or null\n */\n after(dt, inc = false) {\n const args = { dt: dt, inc: inc };\n let result = this._cacheGet('after', args);\n if (result === false) {\n result = this._iter(new iterresult_1.default('after', args));\n this._cacheAdd('after', result, args);\n }\n return result;\n }\n /**\n * Returns the number of recurrences in this set. It will have go trough\n * the whole recurrence, if this hasn't been done before.\n */\n count() {\n return this.all().length;\n }\n /**\n * Converts the rrule into its string representation\n * @see \n * @return String\n */\n toString() {\n return RRule.optionsToString(this.origOptions);\n }\n /**\n * Will convert all rules described in nlp:ToText\n * to text.\n */\n toText(gettext, language) {\n return getnlp().toText(this, gettext, language);\n }\n isFullyConvertibleToText() {\n return getnlp().isFullyConvertible(this);\n }\n /**\n * @param {String} what - all/before/after/between\n * @param {Array,Date} value - an array of dates, one date, or null\n * @param {Object?} args - _iter arguments\n */\n _cacheAdd(what, value, args) {\n if (!this._cache)\n return;\n if (value) {\n value =\n value instanceof Date\n ? dateutil_1.default.clone(value)\n : dateutil_1.default.cloneDates(value);\n }\n if (what === 'all') {\n this._cache.all = value;\n }\n else {\n args._value = value;\n this._cache[what].push(args);\n }\n }\n /**\n * @return false - not in the cache\n * null - cached, but zero occurrences (before/after)\n * Date - cached (before/after)\n * [] - cached, but zero occurrences (all/between)\n * [Date1, DateN] - cached (all/between)\n */\n _cacheGet(what, args) {\n if (!this._cache)\n return false;\n let cached = false;\n const argsKeys = args ? Object.keys(args) : [];\n const findCacheDiff = function (item) {\n for (let i = 0; i < argsKeys.length; i++) {\n const key = argsKeys[i];\n if (String(args[key]) !== String(item[key])) {\n return true;\n }\n }\n return false;\n };\n const cachedObject = this._cache[what];\n if (what === 'all') {\n cached = this._cache.all;\n }\n else if (cachedObject instanceof Array) {\n // Let's see whether we've already called the\n // 'what' method with the same 'args'\n for (let i = 0; i < cachedObject.length; i++) {\n const item = cachedObject[i];\n if (argsKeys.length && findCacheDiff(item))\n continue;\n cached = item._value;\n break;\n }\n }\n if (!cached && this._cache.all) {\n // Not in the cache, but we already know all the occurrences,\n // so we can find the correct dates from the cached ones.\n const iterResult = new iterresult_1.default(what, args);\n for (let i = 0; i < this._cache.all.length; i++) {\n if (!iterResult.accept(this._cache.all[i]))\n break;\n }\n cached = iterResult.getValue();\n this._cacheAdd(what, cached, args);\n }\n return cached instanceof Array\n ? dateutil_1.default.cloneDates(cached)\n : cached instanceof Date\n ? dateutil_1.default.clone(cached)\n : cached;\n }\n /**\n * @return a RRule instance with the same freq and options\n * as this one (cache is not cloned)\n */\n clone() {\n return new RRule(this.origOptions);\n }\n _iter(iterResult) {\n /* Since JavaScript doesn't have the python's yield operator (<1.7),\n we use the IterResult object that tells us when to stop iterating.\n \n */\n const dtstart = this.options.dtstart;\n const dtstartMillisecondModulo = this.options.dtstart.valueOf() % 1000;\n let year = dtstart.getFullYear();\n let month = dtstart.getMonth() + 1;\n let day = dtstart.getDate();\n let hour = dtstart.getHours();\n let minute = dtstart.getMinutes();\n let second = dtstart.getSeconds();\n let weekday = dateutil_1.default.getWeekday(dtstart);\n // Some local variables to speed things up a bit\n const freq = this.options.freq;\n const interval = this.options.interval;\n const wkst = this.options.wkst;\n const until = this.options.until;\n const bymonth = this.options.bymonth;\n const byweekno = this.options.byweekno;\n const byyearday = this.options.byyearday;\n const byweekday = this.options.byweekday;\n const byeaster = this.options.byeaster;\n const bymonthday = this.options.bymonthday;\n const bynmonthday = this.options.bynmonthday;\n const bysetpos = this.options.bysetpos;\n const byhour = this.options.byhour;\n const byminute = this.options.byminute;\n const bysecond = this.options.bysecond;\n // tslint:disable-next-line:no-use-before-declare\n const ii = new Iterinfo(this);\n ii.rebuild(year, month);\n const getdayset = {\n [RRule.YEARLY]: ii.ydayset,\n [RRule.MONTHLY]: ii.mdayset,\n [RRule.WEEKLY]: ii.wdayset,\n [RRule.DAILY]: ii.ddayset,\n [RRule.HOURLY]: ii.ddayset,\n [RRule.MINUTELY]: ii.ddayset,\n [RRule.SECONDLY]: ii.ddayset\n }[freq];\n let timeset;\n let gettimeset;\n if (freq < RRule.HOURLY) {\n timeset = this.timeset;\n }\n else {\n gettimeset = {\n [RRule.YEARLY]: ii.ydayset,\n [RRule.MONTHLY]: ii.mdayset,\n [RRule.WEEKLY]: ii.wdayset,\n [RRule.DAILY]: ii.ddayset,\n [RRule.HOURLY]: ii.htimeset,\n [RRule.MINUTELY]: ii.mtimeset,\n [RRule.SECONDLY]: ii.stimeset\n }[freq];\n if ((freq >= RRule.HOURLY && helpers_1.plb(byhour) && !helpers_1.contains(byhour, hour)) ||\n (freq >= RRule.MINUTELY &&\n helpers_1.plb(byminute) &&\n !helpers_1.contains(byminute, minute)) ||\n (freq >= RRule.SECONDLY && helpers_1.plb(bysecond) && !helpers_1.contains(bysecond, second))) {\n timeset = [];\n }\n else {\n timeset = gettimeset.call(ii, hour, minute, second, dtstartMillisecondModulo);\n }\n }\n let total = 0;\n let count = this.options.count;\n let i;\n let k;\n let dm;\n let div;\n let mod;\n let tmp;\n let pos;\n let dayset;\n let start;\n let end;\n let fixday;\n let filtered;\n while (true) {\n // Get dayset with the right frequency\n tmp = getdayset.call(ii, year, month, day);\n dayset = tmp[0];\n start = tmp[1];\n end = tmp[2];\n // Do the \"hard\" work ;-)\n filtered = false;\n for (let j = start; j < end; j++) {\n i = dayset[j];\n filtered =\n (helpers_1.plb(bymonth) && !helpers_1.contains(bymonth, ii.mmask[i])) ||\n (helpers_1.plb(byweekno) && !ii.wnomask[i]) ||\n (helpers_1.plb(byweekday) &&\n !helpers_1.contains(byweekday, ii.wdaymask[i])) ||\n (helpers_1.plb(ii.nwdaymask) && !ii.nwdaymask[i]) ||\n (byeaster !== null && !helpers_1.contains(ii.eastermask, i)) ||\n ((helpers_1.plb(bymonthday) || helpers_1.plb(bynmonthday)) &&\n !helpers_1.contains(bymonthday, ii.mdaymask[i]) &&\n !helpers_1.contains(bynmonthday, ii.nmdaymask[i])) ||\n (helpers_1.plb(byyearday) &&\n ((i < ii.yearlen &&\n !helpers_1.contains(byyearday, i + 1) &&\n !helpers_1.contains(byyearday, -ii.yearlen + i)) ||\n (i >= ii.yearlen &&\n !helpers_1.contains(byyearday, i + 1 - ii.yearlen) &&\n !helpers_1.contains(byyearday, -ii.nextyearlen + i - ii.yearlen))));\n if (filtered)\n dayset[i] = null;\n }\n // Output results\n if (helpers_1.plb(bysetpos) && helpers_1.plb(timeset)) {\n let daypos;\n let timepos;\n const poslist = [];\n for (let j = 0; j < bysetpos.length; j++) {\n pos = bysetpos[j];\n if (pos < 0) {\n daypos = Math.floor(pos / timeset.length);\n timepos = helpers_1.pymod(pos, timeset.length);\n }\n else {\n daypos = Math.floor((pos - 1) / timeset.length);\n timepos = helpers_1.pymod(pos - 1, timeset.length);\n }\n try {\n tmp = [];\n for (k = start; k < end; k++) {\n const val = dayset[k];\n if (val === null)\n continue;\n tmp.push(val);\n }\n let i;\n if (daypos < 0) {\n // we're trying to emulate python's aList[-n]\n i = tmp.slice(daypos)[0];\n }\n else {\n i = tmp[daypos];\n }\n const time = timeset[timepos];\n const date = dateutil_1.default.fromOrdinal(ii.yearordinal + i);\n const res = dateutil_1.default.combine(date, time);\n // XXX: can this ever be in the array?\n // - compare the actual date instead?\n if (!helpers_1.contains(poslist, res))\n poslist.push(res);\n // tslint:disable-next-line:no-empty\n }\n catch (e) { }\n }\n dateutil_1.default.sort(poslist);\n for (let j = 0; j < poslist.length; j++) {\n const res = poslist[j];\n if (until && res > until) {\n this._len = total;\n return iterResult.getValue();\n }\n else if (res >= dtstart) {\n ++total;\n if (!iterResult.accept(res))\n return iterResult.getValue();\n if (count) {\n --count;\n if (!count) {\n this._len = total;\n return iterResult.getValue();\n }\n }\n }\n }\n }\n else {\n for (let j = start; j < end; j++) {\n i = dayset[j];\n if (i !== null) {\n const date = dateutil_1.default.fromOrdinal(ii.yearordinal + i);\n for (k = 0; k < timeset.length; k++) {\n const time = timeset[k];\n const res = dateutil_1.default.combine(date, time);\n if (until && res > until) {\n this._len = total;\n return iterResult.getValue();\n }\n else if (res >= dtstart) {\n ++total;\n if (!iterResult.accept(res)) {\n return iterResult.getValue();\n }\n if (count) {\n --count;\n if (!count) {\n this._len = total;\n return iterResult.getValue();\n }\n }\n }\n }\n }\n }\n }\n // Handle frequency and interval\n fixday = false;\n if (freq === RRule.YEARLY) {\n year += interval;\n if (year > dateutil_1.default.MAXYEAR) {\n this._len = total;\n return iterResult.getValue();\n }\n ii.rebuild(year, month);\n }\n else if (freq === RRule.MONTHLY) {\n month += interval;\n if (month > 12) {\n div = Math.floor(month / 12);\n mod = helpers_1.pymod(month, 12);\n month = mod;\n year += div;\n if (month === 0) {\n month = 12;\n --year;\n }\n if (year > dateutil_1.default.MAXYEAR) {\n this._len = total;\n return iterResult.getValue();\n }\n }\n ii.rebuild(year, month);\n }\n else if (freq === RRule.WEEKLY) {\n if (wkst > weekday) {\n day += -(weekday + 1 + (6 - wkst)) + interval * 7;\n }\n else {\n day += -(weekday - wkst) + interval * 7;\n }\n weekday = wkst;\n fixday = true;\n }\n else if (freq === RRule.DAILY) {\n day += interval;\n fixday = true;\n }\n else if (freq === RRule.HOURLY) {\n if (filtered) {\n // Jump to one iteration before next day\n hour += Math.floor((23 - hour) / interval) * interval;\n }\n while (true) {\n hour += interval;\n dm = helpers_1.divmod(hour, 24);\n div = dm.div;\n mod = dm.mod;\n if (div) {\n hour = mod;\n day += div;\n fixday = true;\n }\n if (!helpers_1.plb(byhour) || helpers_1.contains(byhour, hour))\n break;\n }\n timeset = gettimeset.call(ii, hour, minute, second);\n }\n else if (freq === RRule.MINUTELY) {\n if (filtered) {\n // Jump to one iteration before next day\n minute +=\n Math.floor((1439 - (hour * 60 + minute)) / interval) * interval;\n }\n while (true) {\n minute += interval;\n dm = helpers_1.divmod(minute, 60);\n div = dm.div;\n mod = dm.mod;\n if (div) {\n minute = mod;\n hour += div;\n dm = helpers_1.divmod(hour, 24);\n div = dm.div;\n mod = dm.mod;\n if (div) {\n hour = mod;\n day += div;\n fixday = true;\n filtered = false;\n }\n }\n if ((!helpers_1.plb(byhour) || helpers_1.contains(byhour, hour)) &&\n (!helpers_1.plb(byminute) || helpers_1.contains(byminute, minute))) {\n break;\n }\n }\n timeset = gettimeset.call(ii, hour, minute, second);\n }\n else if (freq === RRule.SECONDLY) {\n if (filtered) {\n // Jump to one iteration before next day\n second +=\n Math.floor((86399 - (hour * 3600 + minute * 60 + second)) / interval) * interval;\n }\n while (true) {\n second += interval;\n dm = helpers_1.divmod(second, 60);\n div = dm.div;\n mod = dm.mod;\n if (div) {\n second = mod;\n minute += div;\n dm = helpers_1.divmod(minute, 60);\n div = dm.div;\n mod = dm.mod;\n if (div) {\n minute = mod;\n hour += div;\n dm = helpers_1.divmod(hour, 24);\n div = dm.div;\n mod = dm.mod;\n if (div) {\n hour = mod;\n day += div;\n fixday = true;\n }\n }\n }\n if ((!helpers_1.plb(byhour) || helpers_1.contains(byhour, hour)) &&\n (!helpers_1.plb(byminute) || helpers_1.contains(byminute, minute)) &&\n (!helpers_1.plb(bysecond) || helpers_1.contains(bysecond, second))) {\n break;\n }\n }\n timeset = gettimeset.call(ii, hour, minute, second);\n }\n if (fixday && day > 28) {\n let daysinmonth = dateutil_1.default.monthRange(year, month - 1)[1];\n if (day > daysinmonth) {\n while (day > daysinmonth) {\n day -= daysinmonth;\n ++month;\n if (month === 13) {\n month = 1;\n ++year;\n if (year > dateutil_1.default.MAXYEAR) {\n this._len = total;\n return iterResult.getValue();\n }\n }\n daysinmonth = dateutil_1.default.monthRange(year, month - 1)[1];\n }\n ii.rebuild(year, month);\n }\n }\n }\n }\n}\n// RRule class 'constants'\nRRule.FREQUENCIES = [\n 'YEARLY',\n 'MONTHLY',\n 'WEEKLY',\n 'DAILY',\n 'HOURLY',\n 'MINUTELY',\n 'SECONDLY'\n];\nRRule.YEARLY = 0;\nRRule.MONTHLY = 1;\nRRule.WEEKLY = 2;\nRRule.DAILY = 3;\nRRule.HOURLY = 4;\nRRule.MINUTELY = 5;\nRRule.SECONDLY = 6;\nRRule.DEFAULT_OPTIONS = {\n freq: null,\n dtstart: null,\n interval: 1,\n wkst: Days.MO,\n count: null,\n until: null,\n bysetpos: null,\n bymonth: null,\n bymonthday: null,\n bynmonthday: null,\n byyearday: null,\n byweekno: null,\n byweekday: null,\n bynweekday: null,\n byhour: null,\n byminute: null,\n bysecond: null,\n byeaster: null\n};\nRRule.MO = Days.MO;\nRRule.TU = Days.TU;\nRRule.WE = Days.WE;\nRRule.TH = Days.TH;\nRRule.FR = Days.FR;\nRRule.SA = Days.SA;\nRRule.SU = Days.SU;\nexports.default = RRule;\n// =============================================================================\n// Iterinfo\n// =============================================================================\nclass Iterinfo {\n constructor(rrule) {\n this.rrule = rrule;\n this.lastyear = null;\n this.lastmonth = null;\n this.yearlen = null;\n this.nextyearlen = null;\n this.yearordinal = null;\n this.yearweekday = null;\n this.mmask = null;\n this.mrange = null;\n this.mdaymask = null;\n this.nmdaymask = null;\n this.wdaymask = null;\n this.wnomask = null;\n this.nwdaymask = null;\n this.eastermask = null;\n }\n easter(y, offset = 0) {\n const a = y % 19;\n const b = Math.floor(y / 100);\n const c = y % 100;\n const d = Math.floor(b / 4);\n const e = b % 4;\n const f = Math.floor((b + 8) / 25);\n const g = Math.floor((b - f + 1) / 3);\n const h = Math.floor(19 * a + b - d - g + 15) % 30;\n const i = Math.floor(c / 4);\n const k = c % 4;\n const l = Math.floor(32 + 2 * e + 2 * i - h - k) % 7;\n const m = Math.floor((a + 11 * h + 22 * l) / 451);\n const month = Math.floor((h + l - 7 * m + 114) / 31);\n const day = ((h + l - 7 * m + 114) % 31) + 1;\n const date = Date.UTC(y, month - 1, day + offset);\n const yearStart = Date.UTC(y, 0, 1);\n return [Math.ceil((date - yearStart) / (1000 * 60 * 60 * 24))];\n }\n rebuild(year, month) {\n const rr = this.rrule;\n if (year !== this.lastyear) {\n this.yearlen = dateutil_1.default.isLeapYear(year) ? 366 : 365;\n this.nextyearlen = dateutil_1.default.isLeapYear(year + 1) ? 366 : 365;\n const firstyday = new Date(year, 0, 1);\n this.yearordinal = dateutil_1.default.toOrdinal(firstyday);\n this.yearweekday = dateutil_1.default.getWeekday(firstyday);\n const wday = dateutil_1.default.getWeekday(new Date(year, 0, 1));\n if (this.yearlen === 365) {\n this.mmask = [].concat(masks_1.M365MASK);\n this.mdaymask = [].concat(masks_1.MDAY365MASK);\n this.nmdaymask = [].concat(masks_1.NMDAY365MASK);\n this.wdaymask = masks_1.WDAYMASK.slice(wday);\n this.mrange = [].concat(masks_1.M365RANGE);\n }\n else {\n this.mmask = [].concat(masks_1.M366MASK);\n this.mdaymask = [].concat(masks_1.MDAY366MASK);\n this.nmdaymask = [].concat(masks_1.NMDAY366MASK);\n this.wdaymask = masks_1.WDAYMASK.slice(wday);\n this.mrange = [].concat(masks_1.M366RANGE);\n }\n if (!helpers_1.plb(rr.options.byweekno)) {\n this.wnomask = null;\n }\n else {\n this.wnomask = helpers_1.repeat(0, this.yearlen + 7);\n let no1wkst;\n let firstwkst;\n let wyearlen;\n no1wkst = firstwkst = helpers_1.pymod(7 - this.yearweekday + rr.options.wkst, 7);\n if (no1wkst >= 4) {\n no1wkst = 0;\n // Number of days in the year, plus the days we got\n // from last year.\n wyearlen =\n this.yearlen + helpers_1.pymod(this.yearweekday - rr.options.wkst, 7);\n }\n else {\n // Number of days in the year, minus the days we\n // left in last year.\n wyearlen = this.yearlen - no1wkst;\n }\n const div = Math.floor(wyearlen / 7);\n const mod = helpers_1.pymod(wyearlen, 7);\n const numweeks = Math.floor(div + mod / 4);\n for (let j = 0; j < rr.options.byweekno.length; j++) {\n let i;\n let n = rr.options.byweekno[j];\n if (n < 0) {\n n += numweeks + 1;\n }\n if (!(n > 0 && n <= numweeks)) {\n continue;\n }\n if (n > 1) {\n i = no1wkst + (n - 1) * 7;\n if (no1wkst !== firstwkst) {\n i -= 7 - firstwkst;\n }\n }\n else {\n i = no1wkst;\n }\n for (let k = 0; k < 7; k++) {\n this.wnomask[i] = 1;\n i++;\n if (this.wdaymask[i] === rr.options.wkst)\n break;\n }\n }\n if (helpers_1.contains(rr.options.byweekno, 1)) {\n // Check week number 1 of next year as well\n // orig-TODO : Check -numweeks for next year.\n let i = no1wkst + numweeks * 7;\n if (no1wkst !== firstwkst)\n i -= 7 - firstwkst;\n if (i < this.yearlen) {\n // If week starts in next year, we\n // don't care about it.\n for (let j = 0; j < 7; j++) {\n this.wnomask[i] = 1;\n i += 1;\n if (this.wdaymask[i] === rr.options.wkst)\n break;\n }\n }\n }\n if (no1wkst) {\n // Check last week number of last year as\n // well. If no1wkst is 0, either the year\n // started on week start, or week number 1\n // got days from last year, so there are no\n // days from last year's last week number in\n // this year.\n let lnumweeks;\n if (!helpers_1.contains(rr.options.byweekno, -1)) {\n const lyearweekday = dateutil_1.default.getWeekday(new Date(year - 1, 0, 1));\n let lno1wkst = helpers_1.pymod(7 - lyearweekday.valueOf() + rr.options.wkst, 7);\n const lyearlen = dateutil_1.default.isLeapYear(year - 1) ? 366 : 365;\n if (lno1wkst >= 4) {\n lno1wkst = 0;\n lnumweeks = Math.floor(52 +\n helpers_1.pymod(lyearlen + helpers_1.pymod(lyearweekday - rr.options.wkst, 7), 7) /\n 4);\n }\n else {\n lnumweeks = Math.floor(52 + helpers_1.pymod(this.yearlen - no1wkst, 7) / 4);\n }\n }\n else {\n lnumweeks = -1;\n }\n if (helpers_1.contains(rr.options.byweekno, lnumweeks)) {\n for (let i = 0; i < no1wkst; i++)\n this.wnomask[i] = 1;\n }\n }\n }\n }\n if (helpers_1.plb(rr.options.bynweekday) &&\n (month !== this.lastmonth || year !== this.lastyear)) {\n let ranges = [];\n if (rr.options.freq === RRule.YEARLY) {\n if (helpers_1.plb(rr.options.bymonth) && rr.options.bymonth instanceof Array) {\n for (let j = 0; j < rr.options.bymonth.length; j++) {\n month = rr.options.bymonth[j];\n ranges.push(this.mrange.slice(month - 1, month + 1));\n }\n }\n else {\n ranges = [[0, this.yearlen]];\n }\n }\n else if (rr.options.freq === RRule.MONTHLY) {\n ranges = [this.mrange.slice(month - 1, month + 1)];\n }\n if (helpers_1.plb(ranges)) {\n // Weekly frequency won't get here, so we may not\n // care about cross-year weekly periods.\n this.nwdaymask = helpers_1.repeat(0, this.yearlen);\n for (let j = 0; j < ranges.length; j++) {\n const rang = ranges[j];\n const first = rang[0];\n let last = rang[1];\n last -= 1;\n for (let k = 0; k < rr.options.bynweekday.length; k++) {\n let i;\n const wday = rr.options.bynweekday[k][0];\n const n = rr.options.bynweekday[k][1];\n if (n < 0) {\n i = last + (n + 1) * 7;\n i -= helpers_1.pymod((this.wdaymask[i]) - wday, 7);\n }\n else {\n i = first + (n - 1) * 7;\n i += helpers_1.pymod(7 - (this.wdaymask[i]) + wday, 7);\n }\n if (first <= i && i <= last)\n this.nwdaymask[i] = 1;\n }\n }\n }\n this.lastyear = year;\n this.lastmonth = month;\n }\n if (rr.options.byeaster !== null) {\n this.eastermask = this.easter(year, rr.options.byeaster);\n }\n }\n ydayset(_, __, ___) {\n return [helpers_1.range(this.yearlen), 0, this.yearlen];\n }\n mdayset(_, month, __) {\n const set = helpers_1.repeat(null, this.yearlen);\n const start = this.mrange[month - 1];\n const end = this.mrange[month];\n for (let i = start; i < end; i++)\n set[i] = i;\n return [set, start, end];\n }\n wdayset(year, month, day) {\n // We need to handle cross-year weeks here.\n const set = helpers_1.repeat(null, this.yearlen + 7);\n let i = dateutil_1.default.toOrdinal(new Date(year, month - 1, day)) - this.yearordinal;\n const start = i;\n for (let j = 0; j < 7; j++) {\n set[i] = i;\n ++i;\n if (this.wdaymask[i] === this.rrule.options.wkst)\n break;\n }\n return [set, start, i];\n }\n ddayset(year, month, day) {\n const set = helpers_1.repeat(null, this.yearlen);\n const i = dateutil_1.default.toOrdinal(new Date(year, month - 1, day)) - this.yearordinal;\n set[i] = i;\n return [set, i, i + 1];\n }\n htimeset(hour, minute, second, millisecond) {\n const set = [];\n const rr = this.rrule;\n for (let i = 0; i < rr.options.byminute.length; i++) {\n minute = rr.options.byminute[i];\n for (let j = 0; j < rr.options.bysecond.length; j++) {\n second = rr.options.bysecond[j];\n set.push(new dateutil_1.default.Time(hour, minute, second, millisecond));\n }\n }\n dateutil_1.default.sort(set);\n return set;\n }\n mtimeset(hour, minute, second, millisecond) {\n const set = [];\n const rr = this.rrule;\n for (let j = 0; j < rr.options.bysecond.length; j++) {\n second = rr.options.bysecond[j];\n set.push(new dateutil_1.default.Time(hour, minute, second, millisecond));\n }\n dateutil_1.default.sort(set);\n return set;\n }\n stimeset(hour, minute, second, millisecond) {\n return [new dateutil_1.default.Time(hour, minute, second, millisecond)];\n }\n}\n//# sourceMappingURL=rrule.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst WDAYS = ['MO', 'TU', 'WE', 'TH', 'FR', 'SA', 'SU'];\n// =============================================================================\n// Weekday\n// =============================================================================\nclass Weekday {\n constructor(weekday, n) {\n if (n === 0)\n throw new Error(\"Can't create weekday with n == 0\");\n this.weekday = weekday;\n this.n = n;\n }\n // __call__ - Cannot call the object directly, do it through\n // e.g. RRule.TH.nth(-1) instead,\n nth(n) {\n return this.n === n ? this : new Weekday(this.weekday, n);\n }\n // __eq__\n equals(other) {\n return this.weekday === other.weekday && this.n === other.n;\n }\n // __repr__\n toString() {\n let s = WDAYS[this.weekday];\n if (this.n)\n s = (this.n > 0 ? '+' : '') + String(this.n) + s;\n return s;\n }\n getJsWeekday() {\n return this.weekday === 6 ? 0 : this.weekday + 1;\n }\n}\nexports.default = Weekday;\n//# sourceMappingURL=weekday.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass Time {\n constructor(hour, minute, second, millisecond) {\n this.hour = hour;\n this.minute = minute;\n this.second = second;\n this.millisecond = millisecond || 0;\n }\n getHours() {\n return this.hour;\n }\n getMinutes() {\n return this.minute;\n }\n getSeconds() {\n return this.second;\n }\n getMilliseconds() {\n return this.millisecond;\n }\n getTime() {\n return ((this.hour * 60 * 60 + this.minute * 60 + this.second) * 1000 +\n this.millisecond);\n }\n}\nexports.Time = Time;\n/**\n * General date-related utilities.\n * Also handles several incompatibilities between JavaScript and Python\n *\n */\nconst dateutil = {\n MONTH_DAYS: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n /**\n * Number of milliseconds of one day\n */\n ONE_DAY: 1000 * 60 * 60 * 24,\n /**\n * @see: \n */\n MAXYEAR: 9999,\n /**\n * Python uses 1-Jan-1 as the base for calculating ordinals but we don't\n * want to confuse the JS engine with milliseconds > Number.MAX_NUMBER,\n * therefore we use 1-Jan-1970 instead\n */\n ORDINAL_BASE: new Date(1970, 0, 1),\n /**\n * Python: MO-SU: 0 - 6\n * JS: SU-SAT 0 - 6\n */\n PY_WEEKDAYS: [6, 0, 1, 2, 3, 4, 5],\n /**\n * py_date.timetuple()[7]\n */\n getYearDay: function (date) {\n const dateNoTime = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n return (Math.ceil((dateNoTime.valueOf() - new Date(date.getFullYear(), 0, 1).valueOf()) /\n dateutil.ONE_DAY) + 1);\n },\n isLeapYear: function (year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n },\n /**\n * @return {Number} the date's timezone offset in ms\n */\n tzOffset: function (date) {\n return date.getTimezoneOffset() * 60 * 1000;\n },\n /**\n * @see: \n */\n daysBetween: function (date1, date2) {\n // The number of milliseconds in one day\n // Convert both dates to milliseconds\n const date1ms = date1.getTime() - dateutil.tzOffset(date1);\n const date2ms = date2.getTime() - dateutil.tzOffset(date2);\n // Calculate the difference in milliseconds\n const differencems = date1ms - date2ms;\n // Convert back to days and return\n return Math.round(differencems / dateutil.ONE_DAY);\n },\n /**\n * @see: \n */\n toOrdinal: function (date) {\n return dateutil.daysBetween(date, dateutil.ORDINAL_BASE);\n },\n /**\n * @see - \n */\n fromOrdinal: function (ordinal) {\n const millisecsFromBase = ordinal * dateutil.ONE_DAY;\n return new Date(dateutil.ORDINAL_BASE.getTime() -\n dateutil.tzOffset(dateutil.ORDINAL_BASE) +\n millisecsFromBase +\n dateutil.tzOffset(new Date(millisecsFromBase)));\n },\n /**\n * @see: \n */\n monthRange: function (year, month) {\n const date = new Date(year, month, 1);\n return [dateutil.getWeekday(date), dateutil.getMonthDays(date)];\n },\n getMonthDays: function (date) {\n const month = date.getMonth();\n return month === 1 && dateutil.isLeapYear(date.getFullYear())\n ? 29\n : dateutil.MONTH_DAYS[month];\n },\n /**\n * @return {Number} python-like weekday\n */\n getWeekday: function (date) {\n return dateutil.PY_WEEKDAYS[date.getDay()];\n },\n /**\n * @see: \n */\n combine: function (date, time) {\n time = time || date;\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds());\n },\n clone: function (date) {\n const dolly = new Date(date.getTime());\n return dolly;\n },\n cloneDates: function (dates) {\n const clones = [];\n for (let i = 0; i < dates.length; i++) {\n clones.push(dateutil.clone(dates[i]));\n }\n return clones;\n },\n /**\n * Sorts an array of Date or dateutil.Time objects\n */\n sort: function (dates) {\n dates.sort(function (a, b) {\n return a.getTime() - b.getTime();\n });\n },\n timeToUntilString: function (time) {\n let comp;\n const date = new Date(time);\n const comps = [\n date.getUTCFullYear(),\n date.getUTCMonth() + 1,\n date.getUTCDate(),\n 'T',\n date.getUTCHours(),\n date.getUTCMinutes(),\n date.getUTCSeconds(),\n 'Z'\n ];\n for (let i = 0; i < comps.length; i++) {\n comp = comps[i];\n if (!/[TZ]/.test(comp.toString()) && comp < 10) {\n comps[i] = '0' + String(comp);\n }\n }\n return comps.join('');\n },\n untilStringToDate: function (until) {\n const re = /^(\\d{4})(\\d{2})(\\d{2})(T(\\d{2})(\\d{2})(\\d{2})Z?)?$/;\n const bits = re.exec(until);\n if (!bits)\n throw new Error('Invalid UNTIL value: ' + until);\n return new Date(Date.UTC(parseInt(bits[1], 10), parseInt(bits[2], 10) - 1, parseInt(bits[3], 10), parseInt(bits[5], 10) || 0, parseInt(bits[6], 10) || 0, parseInt(bits[7], 10) || 0));\n },\n Time\n};\nexports.default = dateutil;\n//# sourceMappingURL=dateutil.js.map","\"use strict\";\n// =============================================================================\n// Results\n// =============================================================================\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * This class helps us to emulate python's generators, sorta.\n */\nclass IterResult {\n constructor(method, args) {\n this.method = method;\n this.args = args;\n this.minDate = null;\n this.maxDate = null;\n this._result = [];\n if (method === 'between') {\n this.maxDate = args.inc\n ? args.before\n : new Date(args.before.getTime() - 1);\n this.minDate = args.inc ? args.after : new Date(args.after.getTime() + 1);\n }\n else if (method === 'before') {\n this.maxDate = args.inc ? args.dt : new Date(args.dt.getTime() - 1);\n }\n else if (method === 'after') {\n this.minDate = args.inc ? args.dt : new Date(args.dt.getTime() + 1);\n }\n }\n /**\n * Possibly adds a date into the result.\n *\n * @param {Date} date - the date isn't necessarly added to the result\n * list (if it is too late/too early)\n * @return {Boolean} true if it makes sense to continue the iteration\n * false if we're done.\n */\n accept(date) {\n const tooEarly = this.minDate && date < this.minDate;\n const tooLate = this.maxDate && date > this.maxDate;\n if (this.method === 'between') {\n if (tooEarly)\n return true;\n if (tooLate)\n return false;\n }\n else if (this.method === 'before') {\n if (tooLate)\n return false;\n }\n else if (this.method === 'after') {\n if (tooEarly)\n return true;\n this.add(date);\n return false;\n }\n return this.add(date);\n }\n /**\n *\n * @param {Date} date that is part of the result.\n * @return {Boolean} whether we are interested in more values.\n */\n add(date) {\n this._result.push(date);\n return true;\n }\n /**\n * 'before' and 'after' return only one date, whereas 'all'\n * and 'between' an array.\n * @return {Date,Array?}\n */\n getValue() {\n const res = this._result;\n switch (this.method) {\n case 'all':\n case 'between':\n return res;\n case 'before':\n case 'after':\n return res.length ? res[res.length - 1] : null;\n }\n }\n clone() {\n return new IterResult(this.method, this.args);\n }\n}\nexports.default = IterResult;\n//# sourceMappingURL=iterresult.js.map","\"use strict\";\n// =============================================================================\n// i18n\n// =============================================================================\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ENGLISH = {\n dayNames: [\n 'Sunday', 'Monday', 'Tuesday', 'Wednesday',\n 'Thursday', 'Friday', 'Saturday'\n ],\n monthNames: [\n 'January', 'February', 'March', 'April', 'May',\n 'June', 'July', 'August', 'September', 'October',\n 'November', 'December'\n ],\n tokens: {\n 'SKIP': /^[ \\r\\n\\t]+|^\\.$/,\n 'number': /^[1-9][0-9]*/,\n 'numberAsText': /^(one|two|three)/i,\n 'every': /^every/i,\n 'day(s)': /^days?/i,\n 'weekday(s)': /^weekdays?/i,\n 'week(s)': /^weeks?/i,\n 'hour(s)': /^hours?/i,\n 'minute(s)': /^minutes?/i,\n 'month(s)': /^months?/i,\n 'year(s)': /^years?/i,\n 'on': /^(on|in)/i,\n 'at': /^(at)/i,\n 'the': /^the/i,\n 'first': /^first/i,\n 'second': /^second/i,\n 'third': /^third/i,\n 'nth': /^([1-9][0-9]*)(\\.|th|nd|rd|st)/i,\n 'last': /^last/i,\n 'for': /^for/i,\n 'time(s)': /^times?/i,\n 'until': /^(un)?til/i,\n 'monday': /^mo(n(day)?)?/i,\n 'tuesday': /^tu(e(s(day)?)?)?/i,\n 'wednesday': /^we(d(n(esday)?)?)?/i,\n 'thursday': /^th(u(r(sday)?)?)?/i,\n 'friday': /^fr(i(day)?)?/i,\n 'saturday': /^sa(t(urday)?)?/i,\n 'sunday': /^su(n(day)?)?/i,\n 'january': /^jan(uary)?/i,\n 'february': /^feb(ruary)?/i,\n 'march': /^mar(ch)?/i,\n 'april': /^apr(il)?/i,\n 'may': /^may/i,\n 'june': /^june?/i,\n 'july': /^july?/i,\n 'august': /^aug(ust)?/i,\n 'september': /^sep(t(ember)?)?/i,\n 'october': /^oct(ober)?/i,\n 'november': /^nov(ember)?/i,\n 'december': /^dec(ember)?/i,\n 'comma': /^(,\\s*|(and|or)\\s*)+/i\n }\n};\nexports.default = ENGLISH;\n//# sourceMappingURL=i18n.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst rrule_1 = require(\"./rrule\");\nconst dateutil_1 = require(\"./dateutil\");\nconst helpers_1 = require(\"./helpers\");\n/**\n *\n * @param {Boolean?} noCache\n * The same stratagy as RRule on cache, default to false\n * @constructor\n */\nclass RRuleSet extends rrule_1.default {\n constructor(noCache = false) {\n super({}, noCache);\n this._rrule = [];\n this._rdate = [];\n this._exrule = [];\n this._exdate = [];\n }\n /**\n * Adds an RRule to the set\n *\n * @param {RRule}\n */\n rrule(rrule) {\n if (!(rrule instanceof rrule_1.default)) {\n throw new TypeError(String(rrule) + ' is not RRule instance');\n }\n if (!helpers_1.contains(this._rrule.map(String), String(rrule))) {\n this._rrule.push(rrule);\n }\n }\n /**\n * Adds an RDate to the set\n *\n * @param {Date}\n */\n rdate(date) {\n if (!(date instanceof Date)) {\n throw new TypeError(String(date) + ' is not Date instance');\n }\n if (!helpers_1.contains(this._rdate.map(Number), Number(date))) {\n this._rdate.push(date);\n dateutil_1.default.sort(this._rdate);\n }\n }\n /**\n * Adds an EXRULE to the set\n *\n * @param {RRule}\n */\n exrule(rrule) {\n if (!(rrule instanceof rrule_1.default)) {\n throw new TypeError(String(rrule) + ' is not RRule instance');\n }\n if (!helpers_1.contains(this._exrule.map(String), String(rrule))) {\n this._exrule.push(rrule);\n }\n }\n /**\n * Adds an EXDATE to the set\n *\n * @param {Date}\n */\n exdate(date) {\n if (!(date instanceof Date)) {\n throw new TypeError(String(date) + ' is not Date instance');\n }\n if (!helpers_1.contains(this._exdate.map(Number), Number(date))) {\n this._exdate.push(date);\n dateutil_1.default.sort(this._exdate);\n }\n }\n valueOf() {\n const result = [];\n if (this._rrule.length) {\n this._rrule.forEach(function (rrule) {\n result.push('RRULE:' + rrule);\n });\n }\n if (this._rdate.length) {\n result.push('RDATE:' +\n this._rdate\n .map(function (rdate) {\n return dateutil_1.default.timeToUntilString(rdate.valueOf());\n })\n .join(','));\n }\n if (this._exrule.length) {\n this._exrule.forEach(function (exrule) {\n result.push('EXRULE:' + exrule);\n });\n }\n if (this._exdate.length) {\n result.push('EXDATE:' +\n this._exdate\n .map(function (exdate) {\n return dateutil_1.default.timeToUntilString(exdate.valueOf());\n })\n .join(','));\n }\n return result;\n }\n /**\n * to generate recurrence field sush as:\n * [\"RRULE:FREQ=YEARLY;COUNT=2;BYDAY=TU;DTSTART=19970902T010000Z\",\"RRULE:FREQ=YEARLY;COUNT=1;BYDAY=TH;DTSTART=19970902T010000Z\"]\n */\n toString() {\n return JSON.stringify(this.valueOf());\n }\n _iter(iterResult) {\n const _exdateHash = {};\n const _exrule = this._exrule;\n const _accept = iterResult.accept;\n function evalExdate(after, before) {\n _exrule.forEach(function (rrule) {\n rrule.between(after, before, true).forEach(function (date) {\n _exdateHash[Number(date)] = true;\n });\n });\n }\n this._exdate.forEach(function (date) {\n _exdateHash[Number(date)] = true;\n });\n iterResult.accept = function (date) {\n const dt = Number(date);\n if (!_exdateHash[dt]) {\n evalExdate(new Date(dt - 1), new Date(dt + 1));\n if (!_exdateHash[dt]) {\n _exdateHash[dt] = true;\n return _accept.call(this, date);\n }\n }\n return true;\n };\n if (iterResult.method === 'between') {\n evalExdate(iterResult.args.after, iterResult.args.before);\n iterResult.accept = function (date) {\n const dt = Number(date);\n if (!_exdateHash[dt]) {\n _exdateHash[dt] = true;\n return _accept.call(this, date);\n }\n return true;\n };\n }\n for (let i = 0; i < this._rdate.length; i++) {\n if (!iterResult.accept(new Date(this._rdate[i].valueOf())))\n break;\n }\n this._rrule.forEach(function (rrule) {\n rrule._iter(iterResult);\n });\n const res = iterResult._result;\n dateutil_1.default.sort(res);\n switch (iterResult.method) {\n case 'all':\n case 'between':\n return res;\n case 'before':\n return (res.length && res[res.length - 1]) || null;\n case 'after':\n return (res.length && res[0]) || null;\n default:\n return null;\n }\n }\n /**\n * Create a new RRuleSet Object completely base on current instance\n */\n clone() {\n const rrs = new RRuleSet(!!this._cache);\n let i;\n for (i = 0; i < this._rrule.length; i++) {\n rrs.rrule(this._rrule[i].clone());\n }\n for (i = 0; i < this._rdate.length; i++) {\n rrs.rdate(new Date(this._rdate[i].valueOf()));\n }\n for (i = 0; i < this._exrule.length; i++) {\n rrs.exrule(this._exrule[i].clone());\n }\n for (i = 0; i < this._exdate.length; i++) {\n rrs.exdate(new Date(this._exdate[i].valueOf()));\n }\n return rrs;\n }\n}\nexports.default = RRuleSet;\n//# sourceMappingURL=rruleset.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst helpers_1 = require(\"./helpers\");\n// =============================================================================\n// Date masks\n// =============================================================================\n// Every mask is 7 days longer to handle cross-year weekly periods.\nconst M365MASK = [].concat(helpers_1.repeat(1, 31), helpers_1.repeat(2, 28), helpers_1.repeat(3, 31), helpers_1.repeat(4, 30), helpers_1.repeat(5, 31), helpers_1.repeat(6, 30), helpers_1.repeat(7, 31), helpers_1.repeat(8, 31), helpers_1.repeat(9, 30), helpers_1.repeat(10, 31), helpers_1.repeat(11, 30), helpers_1.repeat(12, 31), helpers_1.repeat(1, 7));\nexports.M365MASK = M365MASK;\nconst M366MASK = [].concat(helpers_1.repeat(1, 31), helpers_1.repeat(2, 29), helpers_1.repeat(3, 31), helpers_1.repeat(4, 30), helpers_1.repeat(5, 31), helpers_1.repeat(6, 30), helpers_1.repeat(7, 31), helpers_1.repeat(8, 31), helpers_1.repeat(9, 30), helpers_1.repeat(10, 31), helpers_1.repeat(11, 30), helpers_1.repeat(12, 31), helpers_1.repeat(1, 7));\nexports.M366MASK = M366MASK;\nlet M28 = helpers_1.range(1, 29);\nlet M29 = helpers_1.range(1, 30);\nlet M30 = helpers_1.range(1, 31);\nlet M31 = helpers_1.range(1, 32);\nconst MDAY366MASK = [].concat(M31, M29, M31, M30, M31, M30, M31, M31, M30, M31, M30, M31, M31.slice(0, 7));\nexports.MDAY366MASK = MDAY366MASK;\nconst MDAY365MASK = [].concat(M31, M28, M31, M30, M31, M30, M31, M31, M30, M31, M30, M31, M31.slice(0, 7));\nexports.MDAY365MASK = MDAY365MASK;\nM28 = helpers_1.range(-28, 0);\nM29 = helpers_1.range(-29, 0);\nM30 = helpers_1.range(-30, 0);\nM31 = helpers_1.range(-31, 0);\nconst NMDAY366MASK = [].concat(M31, M29, M31, M30, M31, M30, M31, M31, M30, M31, M30, M31, M31.slice(0, 7));\nexports.NMDAY366MASK = NMDAY366MASK;\nconst NMDAY365MASK = [].concat(M31, M28, M31, M30, M31, M30, M31, M31, M30, M31, M30, M31, M31.slice(0, 7));\nexports.NMDAY365MASK = NMDAY365MASK;\nconst M366RANGE = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366];\nexports.M366RANGE = M366RANGE;\nconst M365RANGE = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365];\nexports.M365RANGE = M365RANGE;\nconst WDAYMASK = (function () {\n let wdaymask = [];\n for (let i = 0; i < 55; i++)\n wdaymask = wdaymask.concat(helpers_1.range(7));\n return wdaymask;\n})();\nexports.WDAYMASK = WDAYMASK;\n//# sourceMappingURL=masks.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst iterresult_1 = require(\"./iterresult\");\nconst helpers_1 = require(\"./helpers\");\n/**\n * IterResult subclass that calls a callback function on each add,\n * and stops iterating when the callback returns false.\n */\nclass CallbackIterResult extends iterresult_1.default {\n constructor(method, args, iterator) {\n const allowedMethods = ['all', 'between'];\n if (!helpers_1.contains(allowedMethods, method)) {\n throw new Error('Invalid method \"' +\n method +\n '\". Only all and between works with iterator.');\n }\n super(method, args);\n this.iterator = iterator;\n }\n add(date) {\n if (this.iterator(date, this._result.length)) {\n this._result.push(date);\n return true;\n }\n return false;\n }\n}\nexports.default = CallbackIterResult;\n//# sourceMappingURL=callbackiterresult.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst totext_1 = require(\"./totext\");\nconst parsetext_1 = require(\"./parsetext\");\nexports.parseText = parsetext_1.default;\nconst index_1 = require(\"../index\");\n/*!\n* rrule.js - Library for working with recurrence rules for calendar dates.\n* https://github.com/jakubroztocil/rrule\n*\n* Copyright 2010, Jakub Roztocil and Lars Schoning\n* Licenced under the BSD licence.\n* https://github.com/jakubroztocil/rrule/blob/master/LICENCE\n*\n*/\n/**\n *\n * Implementation of RRule.fromText() and RRule::toText().\n *\n *\n * On the client side, this file needs to be included\n * when those functions are used.\n *\n */\n// =============================================================================\n// fromText\n// =============================================================================\n/**\n * Will be able to convert some of the below described rules from\n * text format to a rule object.\n *\n *\n * RULES\n *\n * Every ([n])\n * day(s)\n * | [weekday], ..., (and) [weekday]\n * | weekday(s)\n * | week(s)\n * | month(s)\n * | [month], ..., (and) [month]\n * | year(s)\n *\n *\n * Plus 0, 1, or multiple of these:\n *\n * on [weekday], ..., (or) [weekday] the [monthday], [monthday], ... (or) [monthday]\n *\n * on [weekday], ..., (and) [weekday]\n *\n * on the [monthday], [monthday], ... (and) [monthday] (day of the month)\n *\n * on the [nth-weekday], ..., (and) [nth-weekday] (of the month/year)\n *\n *\n * Plus 0 or 1 of these:\n *\n * for [n] time(s)\n *\n * until [date]\n *\n * Plus (.)\n *\n *\n * Definitely no supported for parsing:\n *\n * (for year):\n * in week(s) [n], ..., (and) [n]\n *\n * on the [yearday], ..., (and) [n] day of the year\n * on day [yearday], ..., (and) [n]\n *\n *\n * NON-TERMINALS\n *\n * [n]: 1, 2 ..., one, two, three ..\n * [month]: January, February, March, April, May, ... December\n * [weekday]: Monday, ... Sunday\n * [nth-weekday]: first [weekday], 2nd [weekday], ... last [weekday], ...\n * [monthday]: first, 1., 2., 1st, 2nd, second, ... 31st, last day, 2nd last day, ..\n * [date]:\n * [month] (0-31(,) ([year])),\n * (the) 0-31.(1-12.([year])),\n * (the) 0-31/(1-12/([year])),\n * [weekday]\n *\n * [year]: 0000, 0001, ... 01, 02, ..\n *\n * Definitely not supported for parsing:\n *\n * [yearday]: first, 1., 2., 1st, 2nd, second, ... 366th, last day, 2nd last day, ..\n *\n * @param {String} text\n * @return {Object, Boolean} the rule, or null.\n */\nconst fromText = function (text, language) {\n return new index_1.default(parsetext_1.default(text, language));\n};\nexports.fromText = fromText;\nconst common = [\n 'count',\n 'until',\n 'interval',\n 'byweekday',\n 'bymonthday',\n 'bymonth'\n];\ntotext_1.default.IMPLEMENTED = [];\ntotext_1.default.IMPLEMENTED[index_1.default.HOURLY] = common;\ntotext_1.default.IMPLEMENTED[index_1.default.MINUTELY] = common;\ntotext_1.default.IMPLEMENTED[index_1.default.DAILY] = ['byhour'].concat(common);\ntotext_1.default.IMPLEMENTED[index_1.default.WEEKLY] = common;\ntotext_1.default.IMPLEMENTED[index_1.default.MONTHLY] = common;\ntotext_1.default.IMPLEMENTED[index_1.default.YEARLY] = ['byweekno', 'byyearday'].concat(common);\n// =============================================================================\n// Export\n// =============================================================================\nconst toText = function (rrule, gettext, language) {\n return new totext_1.default(rrule, gettext, language).toString();\n};\nexports.toText = toText;\nconst { isFullyConvertible } = totext_1.default;\nexports.isFullyConvertible = isFullyConvertible;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst i18n_1 = require(\"./i18n\");\nconst index_1 = require(\"../index\");\n// =============================================================================\n// Helper functions\n// =============================================================================\n/**\n * Return true if a value is in an array\n */\nconst contains = function (arr, val) {\n return arr.indexOf(val) !== -1;\n};\n/**\n *\n * @param {RRule} rrule\n * Optional:\n * @param {Function} gettext function\n * @param {Object} language definition\n * @constructor\n */\nclass ToText {\n constructor(rrule, gettext, language = i18n_1.default) {\n this.text = [];\n this.language = language || i18n_1.default;\n this.gettext =\n gettext ||\n function (id) {\n return id.toString();\n };\n this.rrule = rrule;\n this.options = rrule.options;\n this.origOptions = rrule.origOptions;\n if (this.origOptions.bymonthday) {\n const bymonthday = [].concat(this.options.bymonthday);\n const bynmonthday = [].concat(this.options.bynmonthday);\n bymonthday.sort();\n bynmonthday.sort();\n bynmonthday.reverse();\n // 1, 2, 3, .., -5, -4, -3, ..\n this.bymonthday = bymonthday.concat(bynmonthday);\n if (!this.bymonthday.length)\n this.bymonthday = null;\n }\n if (this.origOptions.byweekday) {\n const byweekday = !(this.origOptions.byweekday instanceof Array)\n ? [this.origOptions.byweekday]\n : this.origOptions.byweekday;\n const days = String(byweekday);\n this.byweekday = {\n allWeeks: byweekday.filter(function (weekday) {\n return !weekday.n;\n }),\n someWeeks: byweekday.filter(function (weekday) {\n return Boolean(weekday.n);\n }),\n isWeekdays: days.indexOf('MO') !== -1 &&\n days.indexOf('TU') !== -1 &&\n days.indexOf('WE') !== -1 &&\n days.indexOf('TH') !== -1 &&\n days.indexOf('FR') !== -1 &&\n days.indexOf('SA') === -1 &&\n days.indexOf('SU') === -1\n };\n const sortWeekDays = function (a, b) {\n return a.weekday - b.weekday;\n };\n this.byweekday.allWeeks.sort(sortWeekDays);\n this.byweekday.someWeeks.sort(sortWeekDays);\n if (!this.byweekday.allWeeks.length)\n this.byweekday.allWeeks = null;\n if (!this.byweekday.someWeeks.length)\n this.byweekday.someWeeks = null;\n }\n else {\n this.byweekday = null;\n }\n }\n /**\n * Test whether the rrule can be fully converted to text.\n * @param {RRule} rrule\n * @return {Boolean}\n */\n static isFullyConvertible(rrule) {\n let canConvert = true;\n if (!(rrule.options.freq in ToText.IMPLEMENTED))\n return false;\n if (rrule.origOptions.until && rrule.origOptions.count)\n return false;\n for (let key in rrule.origOptions) {\n if (contains(['dtstart', 'wkst', 'freq'], key))\n return true;\n if (!contains(ToText.IMPLEMENTED[rrule.options.freq], key))\n return false;\n }\n return canConvert;\n }\n isFullyConvertible() {\n return ToText.isFullyConvertible(this.rrule);\n }\n /**\n * Perform the conversion. Only some of the frequencies are supported.\n * If some of the rrule's options aren't supported, they'll\n * be omitted from the output an \"(~ approximate)\" will be appended.\n * @return {*}\n */\n toString() {\n const gettext = this.gettext;\n if (!(this.options.freq in ToText.IMPLEMENTED)) {\n return gettext('RRule error: Unable to fully convert this rrule to text');\n }\n this.text = [gettext('every')];\n // @ts-ignore\n this[index_1.default.FREQUENCIES[this.options.freq]]();\n if (this.options.until) {\n this.add(gettext('until'));\n const until = this.options.until;\n this.add(this.language.monthNames[until.getMonth()])\n .add(until.getDate() + ',')\n .add(until.getFullYear().toString());\n }\n else if (this.options.count) {\n this.add(gettext('for'))\n .add(this.options.count.toString())\n .add(this.plural(this.options.count) ? gettext('times') : gettext('time'));\n }\n if (!this.isFullyConvertible())\n this.add(gettext('(~ approximate)'));\n return this.text.join('');\n }\n HOURLY() {\n const gettext = this.gettext;\n if (this.options.interval !== 1)\n this.add(this.options.interval.toString());\n this.add(this.plural(this.options.interval) ? gettext('hours') : gettext('hour'));\n }\n MINUTELY() {\n const gettext = this.gettext;\n if (this.options.interval !== 1)\n this.add(this.options.interval.toString());\n this.add(this.plural(this.options.interval)\n ? gettext('minutes')\n : gettext('minutes'));\n }\n DAILY() {\n const gettext = this.gettext;\n if (this.options.interval !== 1)\n this.add(this.options.interval.toString());\n if (this.byweekday && this.byweekday.isWeekdays) {\n this.add(this.plural(this.options.interval)\n ? gettext('weekdays')\n : gettext('weekday'));\n }\n else {\n this.add(this.plural(this.options.interval) ? gettext('days') : gettext('day'));\n }\n if (this.origOptions.bymonth) {\n this.add(gettext('in'));\n this._bymonth();\n }\n if (this.bymonthday) {\n this._bymonthday();\n }\n else if (this.byweekday) {\n this._byweekday();\n }\n else if (this.origOptions.byhour) {\n this._byhour();\n }\n }\n WEEKLY() {\n const gettext = this.gettext;\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString()).add(this.plural(this.options.interval) ? gettext('weeks') : gettext('week'));\n }\n if (this.byweekday && this.byweekday.isWeekdays) {\n if (this.options.interval === 1) {\n this.add(this.plural(this.options.interval)\n ? gettext('weekdays')\n : gettext('weekday'));\n }\n else {\n this.add(gettext('on')).add(gettext('weekdays'));\n }\n }\n else {\n if (this.options.interval === 1)\n this.add(gettext('week'));\n if (this.origOptions.bymonth) {\n this.add(gettext('in'));\n this._bymonth();\n }\n if (this.bymonthday) {\n this._bymonthday();\n }\n else if (this.byweekday) {\n this._byweekday();\n }\n }\n }\n MONTHLY() {\n const gettext = this.gettext;\n if (this.origOptions.bymonth) {\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString()).add(gettext('months'));\n if (this.plural(this.options.interval))\n this.add(gettext('in'));\n }\n else {\n // this.add(gettext('MONTH'))\n }\n this._bymonth();\n }\n else {\n if (this.options.interval !== 1)\n this.add(this.options.interval.toString());\n this.add(this.plural(this.options.interval)\n ? gettext('months')\n : gettext('month'));\n }\n if (this.bymonthday) {\n this._bymonthday();\n }\n else if (this.byweekday && this.byweekday.isWeekdays) {\n this.add(gettext('on')).add(gettext('weekdays'));\n }\n else if (this.byweekday) {\n this._byweekday();\n }\n }\n YEARLY() {\n const gettext = this.gettext;\n if (this.origOptions.bymonth) {\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString());\n this.add(gettext('years'));\n }\n else {\n // this.add(gettext('YEAR'))\n }\n this._bymonth();\n }\n else {\n if (this.options.interval !== 1)\n this.add(this.options.interval.toString());\n this.add(this.plural(this.options.interval) ? gettext('years') : gettext('year'));\n }\n if (this.bymonthday) {\n this._bymonthday();\n }\n else if (this.byweekday) {\n this._byweekday();\n }\n if (this.options.byyearday) {\n this.add(gettext('on the'))\n .add(this.list(this.options.byyearday, this.nth, gettext('and')))\n .add(gettext('day'));\n }\n if (this.options.byweekno) {\n this.add(gettext('in'))\n .add(this.plural(this.options.byweekno.length)\n ? gettext('weeks')\n : gettext('week'))\n .add(this.list(this.options.byweekno, null, gettext('and')));\n }\n }\n _bymonthday() {\n const gettext = this.gettext;\n if (this.byweekday && this.byweekday.allWeeks) {\n this.add(gettext('on'))\n .add(this.list(this.byweekday.allWeeks, this.weekdaytext, gettext('or')))\n .add(gettext('the'))\n .add(this.list(this.bymonthday, this.nth, gettext('or')));\n }\n else {\n this.add(gettext('on the')).add(this.list(this.bymonthday, this.nth, gettext('and')));\n }\n // this.add(gettext('DAY'))\n }\n _byweekday() {\n const gettext = this.gettext;\n if (this.byweekday.allWeeks && !this.byweekday.isWeekdays) {\n this.add(gettext('on')).add(this.list(this.byweekday.allWeeks, this.weekdaytext));\n }\n if (this.byweekday.someWeeks) {\n if (this.byweekday.allWeeks)\n this.add(gettext('and'));\n this.add(gettext('on the')).add(this.list(this.byweekday.someWeeks, this.weekdaytext, gettext('and')));\n }\n }\n _byhour() {\n const gettext = this.gettext;\n this.add(gettext('at')).add(this.list(this.origOptions.byhour, null, gettext('and')));\n }\n _bymonth() {\n this.add(this.list(this.options.bymonth, this.monthtext, this.gettext('and')));\n }\n nth(n) {\n n = parseInt(n.toString(), 10);\n let nth;\n let npos;\n const gettext = this.gettext;\n if (n === -1)\n return gettext('last');\n npos = Math.abs(n);\n switch (npos) {\n case 1:\n case 21:\n case 31:\n nth = npos + gettext('st');\n break;\n case 2:\n case 22:\n nth = npos + gettext('nd');\n break;\n case 3:\n case 23:\n nth = npos + gettext('rd');\n break;\n default:\n nth = npos + gettext('th');\n }\n return n < 0 ? nth + ' ' + gettext('last') : nth;\n }\n monthtext(m) {\n return this.language.monthNames[m - 1];\n }\n weekdaytext(wday) {\n const weekday = typeof wday === 'number' ? (wday + 1) % 7 : wday.getJsWeekday();\n return ((wday.n ? this.nth(wday.n) + ' ' : '') + this.language.dayNames[weekday]);\n }\n plural(n) {\n return n % 100 !== 1;\n }\n add(s) {\n this.text.push(' ');\n this.text.push(s);\n return this;\n }\n list(arr, callback, finalDelim, delim = ',') {\n if (!(arr instanceof Array)) {\n arr = [arr];\n }\n const delimJoin = function (array, delimiter, finalDelimiter) {\n let list = '';\n for (let i = 0; i < array.length; i++) {\n if (i !== 0) {\n if (i === array.length - 1) {\n list += ' ' + finalDelimiter + ' ';\n }\n else {\n list += delimiter + ' ';\n }\n }\n list += array[i];\n }\n return list;\n };\n callback =\n callback ||\n function (o) {\n return o.toString();\n };\n const self = this;\n const realCallback = function (arg) {\n return callback.call(self, arg);\n };\n if (finalDelim) {\n return delimJoin(arr.map(realCallback), delim, finalDelim);\n }\n else {\n return arr.map(realCallback).join(delim + ' ');\n }\n }\n}\nexports.default = ToText;\n//# sourceMappingURL=totext.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst i18n_1 = require(\"./i18n\");\nconst index_1 = require(\"../index\");\n// =============================================================================\n// Parser\n// =============================================================================\nclass Parser {\n constructor(rules) {\n this.done = true;\n this.rules = rules;\n }\n start(text) {\n this.text = text;\n this.done = false;\n return this.nextSymbol();\n }\n isDone() {\n return this.done && this.symbol == null;\n }\n nextSymbol() {\n let best;\n let bestSymbol;\n const p = this;\n this.symbol = null;\n this.value = null;\n do {\n if (this.done)\n return false;\n let match;\n let rule;\n best = null;\n for (let name in this.rules) {\n rule = this.rules[name];\n match = rule.exec(p.text);\n if (match) {\n if (best == null || match[0].length > best[0].length) {\n best = match;\n bestSymbol = name;\n }\n }\n }\n if (best != null) {\n this.text = this.text.substr(best[0].length);\n if (this.text === '')\n this.done = true;\n }\n if (best == null) {\n this.done = true;\n this.symbol = null;\n this.value = null;\n return;\n }\n } while (bestSymbol === 'SKIP');\n this.symbol = bestSymbol;\n this.value = best;\n return true;\n }\n accept(name) {\n if (this.symbol === name) {\n if (this.value) {\n const v = this.value;\n this.nextSymbol();\n return v;\n }\n this.nextSymbol();\n return true;\n }\n return false;\n }\n expect(name) {\n if (this.accept(name))\n return true;\n throw new Error('expected ' + name + ' but found ' + this.symbol);\n }\n}\nfunction parseText(text, language) {\n const options = {};\n const ttr = new Parser((language || i18n_1.default).tokens);\n if (!ttr.start(text))\n return null;\n S();\n return options;\n function S() {\n // every [n]\n ttr.expect('every');\n let n = ttr.accept('number');\n if (n)\n options.interval = parseInt(n[0], 10);\n if (ttr.isDone())\n throw new Error('Unexpected end');\n switch (ttr.symbol) {\n case 'day(s)':\n options.freq = index_1.default.DAILY;\n if (ttr.nextSymbol()) {\n AT();\n F();\n }\n break;\n // FIXME Note: every 2 weekdays != every two weeks on weekdays.\n // DAILY on weekdays is not a valid rule\n case 'weekday(s)':\n options.freq = index_1.default.WEEKLY;\n options.byweekday = [\n index_1.default.MO,\n index_1.default.TU,\n index_1.default.WE,\n index_1.default.TH,\n index_1.default.FR\n ];\n ttr.nextSymbol();\n F();\n break;\n case 'week(s)':\n options.freq = index_1.default.WEEKLY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'hour(s)':\n options.freq = index_1.default.HOURLY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'minute(s)':\n options.freq = index_1.default.MINUTELY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'month(s)':\n options.freq = index_1.default.MONTHLY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'year(s)':\n options.freq = index_1.default.YEARLY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'monday':\n case 'tuesday':\n case 'wednesday':\n case 'thursday':\n case 'friday':\n case 'saturday':\n case 'sunday':\n options.freq = index_1.default.WEEKLY;\n const key = ttr.symbol.substr(0, 2).toUpperCase();\n // @ts-ignore\n options.byweekday = [index_1.default[key]];\n if (!ttr.nextSymbol())\n return;\n // TODO check for duplicates\n while (ttr.accept('comma')) {\n if (ttr.isDone())\n throw new Error('Unexpected end');\n let wkd = decodeWKD();\n if (!wkd) {\n throw new Error('Unexpected symbol ' + ttr.symbol + ', expected weekday');\n }\n // @ts-ignore\n options.byweekday.push(index_1.default[wkd]);\n ttr.nextSymbol();\n }\n MDAYs();\n F();\n break;\n case 'january':\n case 'february':\n case 'march':\n case 'april':\n case 'may':\n case 'june':\n case 'july':\n case 'august':\n case 'september':\n case 'october':\n case 'november':\n case 'december':\n options.freq = index_1.default.YEARLY;\n options.bymonth = [decodeM()];\n if (!ttr.nextSymbol())\n return;\n // TODO check for duplicates\n while (ttr.accept('comma')) {\n if (ttr.isDone())\n throw new Error('Unexpected end');\n let m = decodeM();\n if (!m) {\n throw new Error('Unexpected symbol ' + ttr.symbol + ', expected month');\n }\n options.bymonth.push(m);\n ttr.nextSymbol();\n }\n ON();\n F();\n break;\n default:\n throw new Error('Unknown symbol');\n }\n }\n function ON() {\n const on = ttr.accept('on');\n const the = ttr.accept('the');\n if (!(on || the))\n return;\n do {\n let nth = decodeNTH();\n let wkd = decodeWKD();\n let m = decodeM();\n // nth | \n if (nth) {\n // ttr.nextSymbol()\n if (wkd) {\n ttr.nextSymbol();\n if (!options.byweekday)\n options.byweekday = [];\n // @ts-ignore\n options.byweekday.push(index_1.default[wkd].nth(nth));\n }\n else {\n if (!options.bymonthday)\n options.bymonthday = [];\n // @ts-ignore\n options.bymonthday.push(nth);\n ttr.accept('day(s)');\n }\n // \n }\n else if (wkd) {\n ttr.nextSymbol();\n if (!options.byweekday)\n options.byweekday = [];\n // @ts-ignore\n options.byweekday.push(index_1.default[wkd]);\n }\n else if (ttr.symbol === 'weekday(s)') {\n ttr.nextSymbol();\n if (!options.byweekday) {\n options.byweekday = [\n index_1.default.MO,\n index_1.default.TU,\n index_1.default.WE,\n index_1.default.TH,\n index_1.default.FR\n ];\n }\n }\n else if (ttr.symbol === 'week(s)') {\n ttr.nextSymbol();\n let n = ttr.accept('number');\n if (!n) {\n throw new Error('Unexpected symbol ' + ttr.symbol + ', expected week number');\n }\n options.byweekno = [n[0]];\n while (ttr.accept('comma')) {\n n = ttr.accept('number');\n if (!n) {\n throw new Error('Unexpected symbol ' + ttr.symbol + '; expected monthday');\n }\n options.byweekno.push(n[0]);\n }\n }\n else if (m) {\n ttr.nextSymbol();\n if (!options.bymonth)\n options.bymonth = [];\n // @ts-ignore\n options.bymonth.push(m);\n }\n else {\n return;\n }\n } while (ttr.accept('comma') || ttr.accept('the') || ttr.accept('on'));\n }\n function AT() {\n const at = ttr.accept('at');\n if (!at)\n return;\n do {\n let n = ttr.accept('number');\n if (!n) {\n throw new Error('Unexpected symbol ' + ttr.symbol + ', expected hour');\n }\n options.byhour = [n[0]];\n while (ttr.accept('comma')) {\n n = ttr.accept('number');\n if (!n) {\n throw new Error('Unexpected symbol ' + ttr.symbol + '; expected hour');\n }\n options.byhour.push(n[0]);\n }\n } while (ttr.accept('comma') || ttr.accept('at'));\n }\n function decodeM() {\n switch (ttr.symbol) {\n case 'january':\n return 1;\n case 'february':\n return 2;\n case 'march':\n return 3;\n case 'april':\n return 4;\n case 'may':\n return 5;\n case 'june':\n return 6;\n case 'july':\n return 7;\n case 'august':\n return 8;\n case 'september':\n return 9;\n case 'october':\n return 10;\n case 'november':\n return 11;\n case 'december':\n return 12;\n default:\n return false;\n }\n }\n function decodeWKD() {\n switch (ttr.symbol) {\n case 'monday':\n case 'tuesday':\n case 'wednesday':\n case 'thursday':\n case 'friday':\n case 'saturday':\n case 'sunday':\n return ttr.symbol.substr(0, 2).toUpperCase();\n default:\n return false;\n }\n }\n function decodeNTH() {\n switch (ttr.symbol) {\n case 'last':\n ttr.nextSymbol();\n return -1;\n case 'first':\n ttr.nextSymbol();\n return 1;\n case 'second':\n ttr.nextSymbol();\n return ttr.accept('last') ? -2 : 2;\n case 'third':\n ttr.nextSymbol();\n return ttr.accept('last') ? -3 : 3;\n case 'nth':\n const v = parseInt(ttr.value[1], 10);\n if (v < -366 || v > 366)\n throw new Error('Nth out of range: ' + v);\n ttr.nextSymbol();\n return ttr.accept('last') ? -v : v;\n default:\n return false;\n }\n }\n function MDAYs() {\n ttr.accept('on');\n ttr.accept('the');\n let nth = decodeNTH();\n if (!nth)\n return;\n options.bymonthday = [nth];\n ttr.nextSymbol();\n while (ttr.accept('comma')) {\n nth = decodeNTH();\n if (!nth) {\n throw new Error('Unexpected symbol ' + ttr.symbol + '; expected monthday');\n }\n options.bymonthday.push(nth);\n ttr.nextSymbol();\n }\n }\n function F() {\n if (ttr.symbol === 'until') {\n const date = Date.parse(ttr.text);\n if (!date)\n throw new Error('Cannot parse until date:' + ttr.text);\n options.until = new Date(date);\n }\n else if (ttr.accept('for')) {\n options.count = ttr.value[0];\n ttr.expect('number');\n // ttr.expect('times')\n }\n }\n}\nexports.default = parseText;\n//# sourceMappingURL=parsetext.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst rrule_1 = require(\"./rrule\");\nconst rruleset_1 = require(\"./rruleset\");\nconst dateutil_1 = require(\"./dateutil\");\nconst weekday_1 = require(\"./weekday\");\nconst helpers_1 = require(\"./helpers\");\n/**\n * RRuleStr\n * To parse a set of rrule strings\n */\nclass RRuleStr {\n constructor() {\n // tslint:disable-next-line:variable-name\n this._handle_BYDAY = this._handle_BYWEEKDAY;\n // tslint:disable-next-line:variable-name\n this._handle_INTERVAL = this._handle_int;\n // tslint:disable-next-line:variable-name\n this._handle_COUNT = this._handle_int;\n // tslint:disable-next-line:variable-name\n this._handle_BYSETPOS = this._handle_int_list;\n // tslint:disable-next-line:variable-name\n this._handle_BYMONTH = this._handle_int_list;\n // tslint:disable-next-line:variable-name\n this._handle_BYMONTHDAY = this._handle_int_list;\n // tslint:disable-next-line:variable-name\n this._handle_BYYEARDAY = this._handle_int_list;\n // tslint:disable-next-line:variable-name\n this._handle_BYEASTER = this._handle_int_list;\n // tslint:disable-next-line:variable-name\n this._handle_BYWEEKNO = this._handle_int_list;\n // tslint:disable-next-line:variable-name\n this._handle_BYHOUR = this._handle_int_list;\n // tslint:disable-next-line:variable-name\n this._handle_BYMINUTE = this._handle_int_list;\n // tslint:disable-next-line:variable-name\n this._handle_BYSECOND = this._handle_int_list;\n }\n // tslint:disable-next-line:variable-name\n _handle_DTSTART(rrkwargs, name, value, _) {\n // @ts-ignore\n rrkwargs[name.toLowerCase()] = dateutil_1.default.untilStringToDate(value);\n }\n _handle_int(rrkwargs, name, value) {\n // @ts-ignore\n rrkwargs[name.toLowerCase()] = parseInt(value, 10);\n }\n _handle_int_list(rrkwargs, name, value) {\n // @ts-ignore\n rrkwargs[name.toLowerCase()] = value.split(',').map(x => parseInt(x, 10));\n }\n _handle_FREQ(rrkwargs, _, value, __) {\n // eslint-disable-line\n rrkwargs['freq'] = RRuleStr._freq_map[value];\n }\n _handle_UNTIL(rrkwargs, _, value, __) {\n // eslint-disable-line\n try {\n rrkwargs['until'] = dateutil_1.default.untilStringToDate(value);\n }\n catch (error) {\n throw new Error('invalid until date');\n }\n }\n _handle_WKST(rrkwargs, _, value, __) {\n // eslint-disable-line\n rrkwargs['wkst'] = RRuleStr._weekday_map[value];\n }\n _handle_BYWEEKDAY(rrkwargs, _, value, __) {\n // Two ways to specify this: +1MO or MO(+1)\n let splt;\n let i;\n let j;\n let n;\n let w;\n let wday;\n const l = [];\n const wdays = value.split(',');\n for (i = 0; i < wdays.length; i++) {\n wday = wdays[i];\n if (wday.indexOf('(') > -1) {\n // If it's of the form TH(+1), etc.\n splt = wday.split('(');\n w = splt[0];\n n = parseInt(splt.slice(1, -1)[0], 10);\n }\n else {\n // # If it's of the form +1MO\n for (j = 0; j < wday.length; j++) {\n if ('+-0123456789'.indexOf(wday[j]) === -1)\n break;\n }\n n = wday.slice(0, j) || null;\n w = wday.slice(j);\n if (n)\n n = parseInt(n, 10);\n }\n const weekday = new weekday_1.default(RRuleStr._weekday_map[w], n);\n l.push(weekday);\n }\n rrkwargs['byweekday'] = l;\n }\n _parseRfcRRule(line, options = {}) {\n options.dtstart = options.dtstart || null;\n options.cache = options.cache || false;\n options.ignoretz = options.ignoretz || false;\n options.tzinfos = options.tzinfos || null;\n let name;\n let value;\n let parts;\n if (line.indexOf(':') !== -1) {\n parts = line.split(':');\n name = parts[0];\n value = parts[1];\n if (name !== 'RRULE')\n throw new Error('unknown parameter name');\n }\n else {\n value = line;\n }\n const rrkwargs = {};\n const pairs = value.split(';');\n for (let i = 0; i < pairs.length; i++) {\n parts = pairs[i].split('=');\n name = parts[0].toUpperCase();\n value = parts[1].toUpperCase();\n try {\n // @ts-ignore\n this['_handle_' + name](rrkwargs, name, value, {\n ignoretz: options.ignoretz,\n tzinfos: options.tzinfos\n });\n }\n catch (error) {\n throw new Error(\"unknown parameter '\" + name + \"':\" + value);\n }\n }\n rrkwargs.dtstart = rrkwargs.dtstart || options.dtstart;\n return new rrule_1.default(rrkwargs, !options.cache);\n }\n _parseRfc(s, options) {\n if (options.compatible) {\n options.forceset = true;\n options.unfold = true;\n }\n s = s && s.toUpperCase().trim();\n if (!s)\n throw new Error('Invalid empty string');\n let i = 0;\n let line;\n let lines;\n // More info about 'unfold' option\n // Go head to http://www.ietf.org/rfc/rfc2445.txt\n if (options.unfold) {\n lines = s.split('\\n');\n while (i < lines.length) {\n // TODO\n line = lines[i] = lines[i].replace(/\\s+$/g, '');\n if (!line) {\n lines.splice(i, 1);\n }\n else if (i > 0 && line[0] === ' ') {\n lines[i - 1] += line.slice(1);\n lines.splice(i, 1);\n }\n else {\n i += 1;\n }\n }\n }\n else {\n lines = s.split(/\\s/);\n }\n const rrulevals = [];\n const rdatevals = [];\n const exrulevals = [];\n const exdatevals = [];\n let name;\n let value;\n let parts;\n let parms;\n let parm;\n let dtstart;\n let rset;\n let j;\n let k;\n let datestrs;\n let datestr;\n if (!options.forceset &&\n lines.length === 1 &&\n (s.indexOf(':') === -1 || s.indexOf('RRULE:') === 0)) {\n return this._parseRfcRRule(lines[0], {\n cache: options.cache,\n dtstart: options.dtstart,\n ignoretz: options.ignoretz,\n tzinfos: options.tzinfos\n });\n }\n else {\n for (let i = 0; i < lines.length; i++) {\n line = lines[i];\n if (!line)\n continue;\n if (line.indexOf(':') === -1) {\n name = 'RRULE';\n value = line;\n }\n else {\n parts = helpers_1.split(line, ':', 1);\n name = parts[0];\n value = parts[1];\n }\n parms = name.split(';');\n if (!parms)\n throw new Error('empty property name');\n name = parms[0];\n parms = parms.slice(1);\n if (name === 'RRULE') {\n for (j = 0; j < parms.length; j++) {\n parm = parms[j];\n throw new Error('unsupported RRULE parm: ' + parm);\n }\n rrulevals.push(value);\n }\n else if (name === 'RDATE') {\n for (j = 0; j < parms.length; j++) {\n parm = parms[j];\n if (parm !== 'VALUE=DATE-TIME' && parm !== 'VALUE=DATE') {\n throw new Error('unsupported RDATE parm: ' + parm);\n }\n }\n rdatevals.push(value);\n }\n else if (name === 'EXRULE') {\n for (j = 0; j < parms.length; j++) {\n parm = parms[j];\n throw new Error('unsupported EXRULE parm: ' + parm);\n }\n exrulevals.push(value);\n }\n else if (name === 'EXDATE') {\n for (j = 0; j < parms.length; j++) {\n parm = parms[j];\n if (parm !== 'VALUE=DATE-TIME' && parm !== 'VALUE=DATE') {\n throw new Error('unsupported EXDATE parm: ' + parm);\n }\n }\n exdatevals.push(value);\n }\n else if (name === 'DTSTART') {\n dtstart = dateutil_1.default.untilStringToDate(value);\n }\n else {\n throw new Error('unsupported property: ' + name);\n }\n }\n if (options.forceset ||\n rrulevals.length > 1 ||\n rdatevals.length ||\n exrulevals.length ||\n exdatevals.length) {\n rset = new rruleset_1.default(!options.cache);\n for (j = 0; j < rrulevals.length; j++) {\n rset.rrule(this._parseRfcRRule(rrulevals[j], {\n dtstart: options.dtstart || dtstart,\n ignoretz: options.ignoretz,\n tzinfos: options.tzinfos\n }));\n }\n for (j = 0; j < rdatevals.length; j++) {\n datestrs = rdatevals[j].split(',');\n for (k = 0; k < datestrs.length; k++) {\n datestr = datestrs[k];\n rset.rdate(dateutil_1.default.untilStringToDate(datestr));\n }\n }\n for (j = 0; j < exrulevals.length; j++) {\n rset.exrule(this._parseRfcRRule(exrulevals[j], {\n dtstart: options.dtstart || dtstart,\n ignoretz: options.ignoretz,\n tzinfos: options.tzinfos\n }));\n }\n for (j = 0; j < exdatevals.length; j++) {\n datestrs = exdatevals[j].split(',');\n for (k = 0; k < datestrs.length; k++) {\n datestr = datestrs[k];\n rset.exdate(dateutil_1.default.untilStringToDate(datestr));\n }\n }\n if (options.compatible && options.dtstart)\n rset.rdate(dtstart);\n return rset;\n }\n else {\n return this._parseRfcRRule(rrulevals[0], {\n dtstart: options.dtstart || dtstart,\n cache: options.cache,\n ignoretz: options.ignoretz,\n tzinfos: options.tzinfos\n });\n }\n }\n }\n parse(s, options = {}) {\n const invalid = [];\n const keys = Object.keys(options);\n const defaultKeys = Object.keys(RRuleStr.DEFAULT_OPTIONS);\n keys.forEach(function (key) {\n if (!helpers_1.contains(defaultKeys, key))\n invalid.push(key);\n }, this);\n if (invalid.length) {\n throw new Error('Invalid options: ' + invalid.join(', '));\n }\n // Merge in default options\n defaultKeys.forEach(function (key) {\n // @ts-ignore\n if (!helpers_1.contains(keys, key))\n options[key] = RRuleStr.DEFAULT_OPTIONS[key];\n });\n return this._parseRfc(s, options);\n }\n}\n// tslint:disable-next-line:variable-name\nRRuleStr._weekday_map = {\n MO: 0,\n TU: 1,\n WE: 2,\n TH: 3,\n FR: 4,\n SA: 5,\n SU: 6\n};\n// tslint:disable-next-line:variable-name\nRRuleStr._freq_map = {\n YEARLY: rrule_1.default.YEARLY,\n MONTHLY: rrule_1.default.MONTHLY,\n WEEKLY: rrule_1.default.WEEKLY,\n DAILY: rrule_1.default.DAILY,\n HOURLY: rrule_1.default.HOURLY,\n MINUTELY: rrule_1.default.MINUTELY,\n SECONDLY: rrule_1.default.SECONDLY\n};\nRRuleStr.DEFAULT_OPTIONS = {\n dtstart: null,\n cache: false,\n unfold: false,\n forceset: false,\n compatible: false,\n ignoretz: false,\n tzinfos: null\n};\nexports.default = RRuleStr;\n//# sourceMappingURL=rrulestr.js.map"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://rrule/webpack/universalModuleDefinition","webpack://rrule/webpack/bootstrap","webpack://rrule/./dist/es6/helpers.js","webpack://rrule/./dist/es6/index.js","webpack://rrule/./dist/es6/rrule.js","webpack://rrule/./dist/es6/weekday.js","webpack://rrule/./dist/es6/dateutil.js","webpack://rrule/./dist/es6/iterresult.js","webpack://rrule/./dist/es6/nlp/i18n.js","webpack://rrule/./dist/es6/rruleset.js","webpack://rrule/./dist/es6/masks.js","webpack://rrule/./dist/es6/callbackiterresult.js","webpack://rrule/./dist/es6/nlp/index.js","webpack://rrule/./dist/es6/nlp/totext.js","webpack://rrule/./dist/es6/nlp/parsetext.js","webpack://rrule/./dist/es6/rrulestr.js"],"names":["Object","defineProperty","exports","value","range","start","end","arguments","length","rang","i","push","repeat","times","array","Array","concat","split","str","sep","num","splits","slice","join","pymod","a","b","r","divmod","div","Math","floor","mod","plb","obj","Boolean","contains","arr","val","indexOf","rrule_1","require","RRule","default","rruleset_1","RRuleSet","rrulestr_1","rrule_2","Frequency","weekday_1","Weekday","rruleStr","rrulestr","parse","apply","dateutil_1","helpers_1","masks_1","iterresult_1","callbackiterresult_1","getnlp","_nlp","Days","MO","TU","WE","TH","FR","SA","SU","options","noCache","_string","_cache","all","before","after","between","origOptions","invalid","keys","defaultKeys","DEFAULT_OPTIONS","forEach","key","Error","FREQUENCIES","freq","byeaster","String","opts","YEARLY","dtstart","Date","setMilliseconds","millisecondModulo","getTime","wkst","weekday","v","bysetpos","byweekno","byyearday","bymonthday","byweekday","bymonth","getMonth","getDate","MONTHLY","WEEKLY","getWeekday","bynmonthday","bynweekday","n","wday","byhour","HOURLY","getHours","byminute","MINUTELY","getMinutes","bysecond","SECONDLY","getSeconds","timeset","hour","j","minute","k","second","Time","sort","iterator","_iter","result","_cacheGet","_cacheAdd","inc","args","dt","optionsToString","gettext","language","toText","isFullyConvertible","what","clone","cloneDates","_value","cached","argsKeys","findCacheDiff","item","cachedObject","iterResult","accept","getValue","dtstartMillisecondModulo","valueOf","year","getFullYear","month","day","interval","until","ii","Iterinfo","rebuild","getdayset","ydayset","mdayset","wdayset","DAILY","ddayset","gettimeset","htimeset","mtimeset","stimeset","call","total","count","dm","tmp","pos","dayset","fixday","filtered","mmask","wnomask","wdaymask","nwdaymask","eastermask","mdaymask","nmdaymask","yearlen","nextyearlen","daypos","timepos","poslist","time","date","fromOrdinal","yearordinal","res","combine","e","_len","MAXYEAR","daysinmonth","monthRange","text","parseText","fromText","rfcString","replace","attr","attrs","test","toString","Number","toLowerCase","days","parts","match","wdaypart","untilStringToDate","parseString","pairs","toUpperCase","strValues","timeToUntilString","strings","rrule","lastyear","lastmonth","yearweekday","mrange","y","offset","c","d","f","g","h","l","m","UTC","yearStart","ceil","rr","isLeapYear","firstyday","toOrdinal","M365MASK","MDAY365MASK","NMDAY365MASK","WDAYMASK","M365RANGE","M366MASK","MDAY366MASK","NMDAY366MASK","M366RANGE","no1wkst","firstwkst","wyearlen","numweeks","lnumweeks","lyearweekday","lno1wkst","lyearlen","ranges","first","last","easter","_","__","___","set","millisecond","WDAYS","other","s","dateutil","MONTH_DAYS","ONE_DAY","ORDINAL_BASE","PY_WEEKDAYS","getYearDay","dateNoTime","tzOffset","getTimezoneOffset","daysBetween","date1","date2","date1ms","date2ms","differencems","round","ordinal","millisecsFromBase","getMonthDays","getDay","getMilliseconds","dolly","dates","clones","comp","comps","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","re","bits","exec","parseInt","IterResult","method","minDate","maxDate","_result","tooEarly","tooLate","add","ENGLISH","dayNames","monthNames","tokens","_rrule","_rdate","_exrule","_exdate","TypeError","map","rdate","exrule","exdate","JSON","stringify","_exdateHash","_accept","evalExdate","rrs","M28","M29","M30","M31","CallbackIterResult","allowedMethods","totext_1","parsetext_1","index_1","common","IMPLEMENTED","i18n_1","ToText","id","reverse","allWeeks","filter","someWeeks","isWeekdays","sortWeekDays","plural","_bymonth","_bymonthday","_byweekday","_byhour","list","nth","weekdaytext","monthtext","npos","abs","getJsWeekday","callback","finalDelim","delim","delimJoin","delimiter","finalDelimiter","o","self","realCallback","arg","canConvert","Parser","rules","done","nextSymbol","symbol","best","bestSymbol","p","rule","name","substr","ttr","S","expect","isDone","AT","F","ON","wkd","decodeWKD","MDAYs","decodeM","on","the","decodeNTH","at","RRuleStr","_handle_BYDAY","_handle_BYWEEKDAY","_handle_INTERVAL","_handle_int","_handle_COUNT","_handle_BYSETPOS","_handle_int_list","_handle_BYMONTH","_handle_BYMONTHDAY","_handle_BYYEARDAY","_handle_BYEASTER","_handle_BYWEEKNO","_handle_BYHOUR","_handle_BYMINUTE","_handle_BYSECOND","rrkwargs","x","_freq_map","error","_weekday_map","splt","w","wdays","line","cache","ignoretz","tzinfos","compatible","forceset","unfold","trim","lines","splice","rrulevals","rdatevals","exrulevals","exdatevals","parms","parm","rset","datestrs","datestr","_parseRfcRRule","_parseRfc"],"mappings":"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","file":"rrule.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"rrule\"] = factory();\n\telse\n\t\troot[\"rrule\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1);\n","\"use strict\";\n// =============================================================================\n// Helper functions\n// =============================================================================\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Simplified version of python's range()\n */\nconst range = function (start, end) {\n if (arguments.length === 1) {\n end = start;\n start = 0;\n }\n const rang = [];\n for (let i = start; i < end; i++)\n rang.push(i);\n return rang;\n};\nexports.range = range;\nconst repeat = function (value, times) {\n let i = 0;\n const array = [];\n if (value instanceof Array) {\n for (; i < times; i++)\n array[i] = [].concat(value);\n }\n else {\n for (; i < times; i++)\n array[i] = value;\n }\n return array;\n};\nexports.repeat = repeat;\n/**\n * Python like split\n */\nconst split = function (str, sep, num) {\n const splits = str.split(sep);\n return num\n ? splits.slice(0, num).concat([splits.slice(num).join(sep)])\n : splits;\n};\nexports.split = split;\n/**\n * closure/goog/math/math.js:modulo\n * Copyright 2006 The Closure Library Authors.\n * The % operator in JavaScript returns the remainder of a / b, but differs from\n * some other languages in that the result will have the same sign as the\n * dividend. For example, -1 % 8 == -1, whereas in some other languages\n * (such as Python) the result would be 7. This function emulates the more\n * correct modulo behavior, which is useful for certain applications such as\n * calculating an offset index in a circular list.\n *\n * @param {number} a The dividend.\n * @param {number} b The divisor.\n * @return {number} a % b where the result is between 0 and b (either 0 <= x < b\n * or b < x <= 0, depending on the sign of b).\n */\nconst pymod = function (a, b) {\n const r = a % b;\n // If r and b differ in sign, add b to wrap the result to the correct sign.\n return r * b < 0 ? r + b : r;\n};\nexports.pymod = pymod;\n/**\n * @see: \n */\nconst divmod = function (a, b) {\n return { div: Math.floor(a / b), mod: pymod(a, b) };\n};\nexports.divmod = divmod;\n/**\n * Python-like boolean\n * @return {Boolean} value of an object/primitive, taking into account\n * the fact that in Python an empty list's/tuple's\n * boolean value is False, whereas in JS it's true\n */\nconst plb = function (obj) {\n return obj instanceof Array && obj.length === 0 ? false : Boolean(obj);\n};\nexports.plb = plb;\n/**\n * Return true if a value is in an array\n */\nconst contains = function (arr, val) {\n return arr.indexOf(val) !== -1;\n};\nexports.contains = contains;\n//# sourceMappingURL=helpers.js.map","\"use strict\";\n/*!\n * rrule.js - Library for working with recurrence rules for calendar dates.\n * https://github.com/jakubroztocil/rrule\n *\n * Copyright 2010, Jakub Roztocil and Lars Schoning\n * Licenced under the BSD licence.\n * https://github.com/jakubroztocil/rrule/blob/master/LICENCE\n *\n * Based on:\n * python-dateutil - Extensions to the standard Python datetime module.\n * Copyright (c) 2003-2011 - Gustavo Niemeyer \n * Copyright (c) 2012 - Tomi Pieviläinen \n * https://github.com/jakubroztocil/rrule/blob/master/LICENCE\n *\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst rrule_1 = require(\"./rrule\");\nexports.RRule = rrule_1.default;\nconst rruleset_1 = require(\"./rruleset\");\nexports.RRuleSet = rruleset_1.default;\nconst rrulestr_1 = require(\"./rrulestr\");\nvar rrule_2 = require(\"./rrule\");\nexports.Frequency = rrule_2.Frequency;\nvar weekday_1 = require(\"./weekday\");\nexports.Weekday = weekday_1.default;\n// =============================================================================\n// Export\n// =============================================================================\n// Only one RRuleStr instance for all rrule string parsing work.\nconst rruleStr = new rrulestr_1.default();\nconst rrulestr = function () {\n return rruleStr.parse.apply(rruleStr, arguments);\n};\nexports.rrulestr = rrulestr;\nexports.default = rrule_1.default;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst weekday_1 = require(\"./weekday\");\nconst dateutil_1 = require(\"./dateutil\");\nconst helpers_1 = require(\"./helpers\");\nconst masks_1 = require(\"./masks\");\nconst iterresult_1 = require(\"./iterresult\");\nconst callbackiterresult_1 = require(\"./callbackiterresult\");\nconst getnlp = function () {\n // Lazy, runtime import to avoid circular refs.\n if (!getnlp._nlp) {\n getnlp._nlp = require('./nlp');\n }\n return getnlp._nlp;\n};\nvar Frequency;\n(function (Frequency) {\n Frequency[Frequency[\"YEARLY\"] = 0] = \"YEARLY\";\n Frequency[Frequency[\"MONTHLY\"] = 1] = \"MONTHLY\";\n Frequency[Frequency[\"WEEKLY\"] = 2] = \"WEEKLY\";\n Frequency[Frequency[\"DAILY\"] = 3] = \"DAILY\";\n Frequency[Frequency[\"HOURLY\"] = 4] = \"HOURLY\";\n Frequency[Frequency[\"MINUTELY\"] = 5] = \"MINUTELY\";\n Frequency[Frequency[\"SECONDLY\"] = 6] = \"SECONDLY\";\n})(Frequency = exports.Frequency || (exports.Frequency = {}));\nconst Days = {\n MO: new weekday_1.default(0),\n TU: new weekday_1.default(1),\n WE: new weekday_1.default(2),\n TH: new weekday_1.default(3),\n FR: new weekday_1.default(4),\n SA: new weekday_1.default(5),\n SU: new weekday_1.default(6)\n};\n/**\n *\n * @param {Options?} options - see \n * The only required option is `freq`, one of RRule.YEARLY, RRule.MONTHLY, ...\n * @constructor\n */\nclass RRule {\n constructor(options = {}, noCache = false) {\n // RFC string\n this._string = null;\n this._cache = noCache\n ? null\n : {\n all: false,\n before: [],\n after: [],\n between: []\n };\n // used by toString()\n this.origOptions = {};\n this.options = {};\n const invalid = [];\n const keys = Object.keys(options);\n const defaultKeys = Object.keys(RRule.DEFAULT_OPTIONS);\n // Shallow copy for options and origOptions and check for invalid\n keys.forEach(function (key) {\n this.origOptions[key] = options[key];\n this.options[key] = options[key];\n if (!helpers_1.contains(defaultKeys, key))\n invalid.push(key);\n }, this);\n if (invalid.length) {\n throw new Error('Invalid options: ' + invalid.join(', '));\n }\n if (!RRule.FREQUENCIES[options.freq] && options.byeaster === null) {\n throw new Error('Invalid frequency: ' + String(options.freq));\n }\n // Merge in default options\n defaultKeys.forEach(function (key) {\n if (!helpers_1.contains(keys, key))\n this.options[key] = RRule.DEFAULT_OPTIONS[key];\n }, this);\n const opts = this.options;\n if (opts.byeaster !== null)\n opts.freq = RRule.YEARLY;\n if (!opts.dtstart)\n opts.dtstart = new Date(new Date().setMilliseconds(0));\n const millisecondModulo = opts.dtstart.getTime() % 1000;\n if (opts.wkst === null) {\n opts.wkst = RRule.MO.weekday;\n }\n else if (typeof opts.wkst === 'number') {\n // cool, just keep it like that\n }\n else {\n opts.wkst = opts.wkst.weekday;\n }\n let v;\n if (opts.bysetpos !== null) {\n if (typeof opts.bysetpos === 'number')\n opts.bysetpos = [opts.bysetpos];\n for (let i = 0; i < opts.bysetpos.length; i++) {\n v = opts.bysetpos[i];\n if (v === 0 || !(v >= -366 && v <= 366)) {\n throw new Error('bysetpos must be between 1 and 366,' + ' or between -366 and -1');\n }\n }\n }\n if (!(helpers_1.plb(opts.byweekno) ||\n helpers_1.plb(opts.byyearday) ||\n helpers_1.plb(opts.bymonthday) ||\n opts.byweekday !== null ||\n opts.byeaster !== null)) {\n switch (opts.freq) {\n case RRule.YEARLY:\n if (!opts.bymonth)\n opts.bymonth = opts.dtstart.getMonth() + 1;\n opts.bymonthday = opts.dtstart.getDate();\n break;\n case RRule.MONTHLY:\n opts.bymonthday = opts.dtstart.getDate();\n break;\n case RRule.WEEKLY:\n opts.byweekday = [dateutil_1.default.getWeekday(opts.dtstart)];\n break;\n }\n }\n // bymonth\n if (opts.bymonth !== null && !(opts.bymonth instanceof Array)) {\n opts.bymonth = [opts.bymonth];\n }\n // byyearday\n if (opts.byyearday !== null && !(opts.byyearday instanceof Array)) {\n opts.byyearday = [opts.byyearday];\n }\n // bymonthday\n if (opts.bymonthday === null) {\n opts.bymonthday = [];\n opts.bynmonthday = [];\n }\n else if (opts.bymonthday instanceof Array) {\n const bymonthday = [];\n const bynmonthday = [];\n for (let i = 0; i < opts.bymonthday.length; i++) {\n v = opts.bymonthday[i];\n if (v > 0) {\n bymonthday.push(v);\n }\n else if (v < 0) {\n bynmonthday.push(v);\n }\n }\n opts.bymonthday = bymonthday;\n opts.bynmonthday = bynmonthday;\n }\n else {\n if (opts.bymonthday < 0) {\n opts.bynmonthday = [opts.bymonthday];\n opts.bymonthday = [];\n }\n else {\n opts.bynmonthday = [];\n opts.bymonthday = [opts.bymonthday];\n }\n }\n // byweekno\n if (opts.byweekno !== null && !(opts.byweekno instanceof Array)) {\n opts.byweekno = [opts.byweekno];\n }\n // byweekday / bynweekday\n if (opts.byweekday === null) {\n opts.bynweekday = null;\n }\n else if (typeof opts.byweekday === 'number') {\n opts.byweekday = [opts.byweekday];\n opts.bynweekday = null;\n }\n else if (opts.byweekday instanceof weekday_1.default) {\n if (!opts.byweekday.n || opts.freq > RRule.MONTHLY) {\n opts.byweekday = [opts.byweekday.weekday];\n opts.bynweekday = null;\n }\n else {\n opts.bynweekday = [[opts.byweekday.weekday, opts.byweekday.n]];\n opts.byweekday = null;\n }\n }\n else {\n const byweekday = [];\n const bynweekday = [];\n for (let i = 0; i < opts.byweekday.length; i++) {\n const wday = opts.byweekday[i];\n if (typeof wday === 'number') {\n byweekday.push(wday);\n }\n else if (!wday.n || opts.freq > RRule.MONTHLY) {\n byweekday.push(wday.weekday);\n }\n else {\n bynweekday.push([wday.weekday, wday.n]);\n }\n }\n opts.byweekday = helpers_1.plb(byweekday) ? byweekday : null;\n opts.bynweekday = helpers_1.plb(bynweekday) ? bynweekday : null;\n }\n // byhour\n if (opts.byhour === null) {\n opts.byhour = opts.freq < RRule.HOURLY ? [opts.dtstart.getHours()] : null;\n }\n else if (typeof opts.byhour === 'number') {\n opts.byhour = [opts.byhour];\n }\n // byminute\n if (opts.byminute === null) {\n opts.byminute =\n opts.freq < RRule.MINUTELY ? [opts.dtstart.getMinutes()] : null;\n }\n else if (typeof opts.byminute === 'number') {\n opts.byminute = [opts.byminute];\n }\n // bysecond\n if (opts.bysecond === null) {\n opts.bysecond =\n opts.freq < RRule.SECONDLY ? [opts.dtstart.getSeconds()] : null;\n }\n else if (typeof opts.bysecond === 'number') {\n opts.bysecond = [opts.bysecond];\n }\n if (opts.freq >= RRule.HOURLY) {\n this.timeset = null;\n }\n else {\n this.timeset = [];\n for (let i = 0; i < opts.byhour.length; i++) {\n const hour = opts.byhour[i];\n for (let j = 0; j < opts.byminute.length; j++) {\n const minute = opts.byminute[j];\n for (let k = 0; k < opts.bysecond.length; k++) {\n const second = opts.bysecond[k];\n // python:\n // datetime.time(hour, minute, second,\n // tzinfo=self._tzinfo))\n this.timeset.push(new dateutil_1.default.Time(hour, minute, second, millisecondModulo));\n }\n }\n }\n dateutil_1.default.sort(this.timeset);\n }\n }\n static parseText(text, language) {\n return getnlp().parseText(text, language);\n }\n static fromText(text, language) {\n return getnlp().fromText(text, language);\n }\n static parseString(rfcString) {\n rfcString = rfcString.replace(/^\\s+|\\s+$/, '');\n if (!rfcString.length)\n return null;\n let key;\n let value;\n let attr;\n const attrs = rfcString.split(';');\n const options = {};\n for (let i = 0; i < attrs.length; i++) {\n attr = attrs[i].split('=');\n key = attr[0];\n value = attr[1];\n switch (key) {\n case 'FREQ':\n options.freq = Frequency[value];\n break;\n case 'WKST':\n options.wkst = Days[value];\n break;\n case 'COUNT':\n case 'INTERVAL':\n case 'BYSETPOS':\n case 'BYMONTH':\n case 'BYMONTHDAY':\n case 'BYYEARDAY':\n case 'BYWEEKNO':\n case 'BYHOUR':\n case 'BYMINUTE':\n case 'BYSECOND':\n if (value.indexOf(',') !== -1) {\n value = value.split(',');\n for (let j = 0; j < value.length; j++) {\n if (/^[+-]?\\d+$/.test(value[j].toString())) {\n value[j] = Number(value[j]);\n }\n }\n }\n else if (/^[+-]?\\d+$/.test(value)) {\n value = Number(value);\n }\n key = key.toLowerCase();\n // @ts-ignore\n options[key] = value;\n break;\n case 'BYDAY': // => byweekday\n let n;\n let wday;\n let day;\n const days = value.split(',');\n options.byweekday = [];\n for (let j = 0; j < days.length; j++) {\n day = days[j];\n if (day.length === 2) {\n // MO, TU, ...\n wday = Days[day]; // wday instanceof Weekday\n options.byweekday.push(wday);\n }\n else {\n // -1MO, +3FR, 1SO, ...\n const parts = day.match(/^([+-]?\\d)([A-Z]{2})$/);\n n = Number(parts[1]);\n const wdaypart = parts[2];\n wday = Days[wdaypart].weekday;\n options.byweekday.push(new weekday_1.default(wday, n));\n }\n }\n break;\n case 'DTSTART':\n options.dtstart = dateutil_1.default.untilStringToDate(value);\n break;\n case 'UNTIL':\n options.until = dateutil_1.default.untilStringToDate(value);\n break;\n case 'BYEASTER':\n options.byeaster = Number(value);\n break;\n default:\n throw new Error(\"Unknown RRULE property '\" + key + \"'\");\n }\n }\n return options;\n }\n static fromString(str) {\n return new RRule(RRule.parseString(str));\n }\n static optionsToString(options) {\n const pairs = [];\n const keys = Object.keys(options);\n const defaultKeys = Object.keys(RRule.DEFAULT_OPTIONS);\n for (let i = 0; i < keys.length; i++) {\n if (!helpers_1.contains(defaultKeys, keys[i]))\n continue;\n let key = keys[i].toUpperCase();\n let value = options[keys[i]];\n let strValues = [];\n if (value === null || (value instanceof Array && !value.length))\n continue;\n switch (key) {\n case 'FREQ':\n value = RRule.FREQUENCIES[options.freq];\n break;\n case 'WKST':\n if (!(value instanceof weekday_1.default)) {\n value = new weekday_1.default(value);\n }\n break;\n case 'BYWEEKDAY':\n /*\n NOTE: BYWEEKDAY is a special case.\n RRule() deconstructs the rule.options.byweekday array\n into an array of Weekday arguments.\n On the other hand, rule.origOptions is an array of Weekdays.\n We need to handle both cases here.\n It might be worth change RRule to keep the Weekdays.\n \n Also, BYWEEKDAY (used by RRule) vs. BYDAY (RFC)\n \n */\n key = 'BYDAY';\n if (!(value instanceof Array))\n value = [value];\n for (let j = 0; j < value.length; j++) {\n let wday = value[j];\n if (wday instanceof weekday_1.default) {\n // good\n }\n else if (wday instanceof Array) {\n wday = new weekday_1.default(wday[0], wday[1]);\n }\n else {\n wday = new weekday_1.default(wday);\n }\n strValues[j] = wday.toString();\n }\n value = strValues;\n break;\n case 'DTSTART':\n case 'UNTIL':\n value = dateutil_1.default.timeToUntilString(value);\n break;\n default:\n if (value instanceof Array) {\n for (let j = 0; j < value.length; j++) {\n strValues[j] = String(value[j]);\n }\n value = strValues;\n }\n else {\n value = String(value);\n }\n }\n pairs.push([key, value]);\n }\n const strings = [];\n for (let i = 0; i < pairs.length; i++) {\n const attr = pairs[i];\n strings.push(attr[0] + '=' + attr[1].toString());\n }\n return strings.join(';');\n }\n /**\n * @param {Function} iterator - optional function that will be called\n * on each date that is added. It can return false\n * to stop the iteration.\n * @return Array containing all recurrences.\n */\n all(iterator) {\n if (iterator) {\n return this._iter(new callbackiterresult_1.default('all', {}, iterator));\n }\n else {\n let result = this._cacheGet('all');\n if (result === false) {\n result = this._iter(new iterresult_1.default('all', {}));\n this._cacheAdd('all', result);\n }\n return result;\n }\n }\n /**\n * Returns all the occurrences of the rrule between after and before.\n * The inc keyword defines what happens if after and/or before are\n * themselves occurrences. With inc == True, they will be included in the\n * list, if they are found in the recurrence set.\n * @return Array\n */\n between(after, before, inc = false, iterator) {\n const args = {\n before: before,\n after: after,\n inc: inc\n };\n if (iterator) {\n return this._iter(new callbackiterresult_1.default('between', args, iterator));\n }\n let result = this._cacheGet('between', args);\n if (result === false) {\n result = this._iter(new iterresult_1.default('between', args));\n this._cacheAdd('between', result, args);\n }\n return result;\n }\n /**\n * Returns the last recurrence before the given datetime instance.\n * The inc keyword defines what happens if dt is an occurrence.\n * With inc == True, if dt itself is an occurrence, it will be returned.\n * @return Date or null\n */\n before(dt, inc = false) {\n const args = { dt: dt, inc: inc };\n let result = this._cacheGet('before', args);\n if (result === false) {\n result = this._iter(new iterresult_1.default('before', args));\n this._cacheAdd('before', result, args);\n }\n return result;\n }\n /**\n * Returns the first recurrence after the given datetime instance.\n * The inc keyword defines what happens if dt is an occurrence.\n * With inc == True, if dt itself is an occurrence, it will be returned.\n * @return Date or null\n */\n after(dt, inc = false) {\n const args = { dt: dt, inc: inc };\n let result = this._cacheGet('after', args);\n if (result === false) {\n result = this._iter(new iterresult_1.default('after', args));\n this._cacheAdd('after', result, args);\n }\n return result;\n }\n /**\n * Returns the number of recurrences in this set. It will have go trough\n * the whole recurrence, if this hasn't been done before.\n */\n count() {\n return this.all().length;\n }\n /**\n * Converts the rrule into its string representation\n * @see \n * @return String\n */\n toString() {\n return RRule.optionsToString(this.origOptions);\n }\n /**\n * Will convert all rules described in nlp:ToText\n * to text.\n */\n toText(gettext, language) {\n return getnlp().toText(this, gettext, language);\n }\n isFullyConvertibleToText() {\n return getnlp().isFullyConvertible(this);\n }\n /**\n * @param {String} what - all/before/after/between\n * @param {Array,Date} value - an array of dates, one date, or null\n * @param {Object?} args - _iter arguments\n */\n _cacheAdd(what, value, args) {\n if (!this._cache)\n return;\n if (value) {\n value =\n value instanceof Date\n ? dateutil_1.default.clone(value)\n : dateutil_1.default.cloneDates(value);\n }\n if (what === 'all') {\n this._cache.all = value;\n }\n else {\n args._value = value;\n this._cache[what].push(args);\n }\n }\n /**\n * @return false - not in the cache\n * null - cached, but zero occurrences (before/after)\n * Date - cached (before/after)\n * [] - cached, but zero occurrences (all/between)\n * [Date1, DateN] - cached (all/between)\n */\n _cacheGet(what, args) {\n if (!this._cache)\n return false;\n let cached = false;\n const argsKeys = args ? Object.keys(args) : [];\n const findCacheDiff = function (item) {\n for (let i = 0; i < argsKeys.length; i++) {\n const key = argsKeys[i];\n if (String(args[key]) !== String(item[key])) {\n return true;\n }\n }\n return false;\n };\n const cachedObject = this._cache[what];\n if (what === 'all') {\n cached = this._cache.all;\n }\n else if (cachedObject instanceof Array) {\n // Let's see whether we've already called the\n // 'what' method with the same 'args'\n for (let i = 0; i < cachedObject.length; i++) {\n const item = cachedObject[i];\n if (argsKeys.length && findCacheDiff(item))\n continue;\n cached = item._value;\n break;\n }\n }\n if (!cached && this._cache.all) {\n // Not in the cache, but we already know all the occurrences,\n // so we can find the correct dates from the cached ones.\n const iterResult = new iterresult_1.default(what, args);\n for (let i = 0; i < this._cache.all.length; i++) {\n if (!iterResult.accept(this._cache.all[i]))\n break;\n }\n cached = iterResult.getValue();\n this._cacheAdd(what, cached, args);\n }\n return cached instanceof Array\n ? dateutil_1.default.cloneDates(cached)\n : cached instanceof Date\n ? dateutil_1.default.clone(cached)\n : cached;\n }\n /**\n * @return a RRule instance with the same freq and options\n * as this one (cache is not cloned)\n */\n clone() {\n return new RRule(this.origOptions);\n }\n _iter(iterResult) {\n /* Since JavaScript doesn't have the python's yield operator (<1.7),\n we use the IterResult object that tells us when to stop iterating.\n \n */\n const dtstart = this.options.dtstart;\n const dtstartMillisecondModulo = this.options.dtstart.valueOf() % 1000;\n let year = dtstart.getFullYear();\n let month = dtstart.getMonth() + 1;\n let day = dtstart.getDate();\n let hour = dtstart.getHours();\n let minute = dtstart.getMinutes();\n let second = dtstart.getSeconds();\n let weekday = dateutil_1.default.getWeekday(dtstart);\n // Some local variables to speed things up a bit\n const freq = this.options.freq;\n const interval = this.options.interval;\n const wkst = this.options.wkst;\n const until = this.options.until;\n const bymonth = this.options.bymonth;\n const byweekno = this.options.byweekno;\n const byyearday = this.options.byyearday;\n const byweekday = this.options.byweekday;\n const byeaster = this.options.byeaster;\n const bymonthday = this.options.bymonthday;\n const bynmonthday = this.options.bynmonthday;\n const bysetpos = this.options.bysetpos;\n const byhour = this.options.byhour;\n const byminute = this.options.byminute;\n const bysecond = this.options.bysecond;\n // tslint:disable-next-line:no-use-before-declare\n const ii = new Iterinfo(this);\n ii.rebuild(year, month);\n const getdayset = {\n [RRule.YEARLY]: ii.ydayset,\n [RRule.MONTHLY]: ii.mdayset,\n [RRule.WEEKLY]: ii.wdayset,\n [RRule.DAILY]: ii.ddayset,\n [RRule.HOURLY]: ii.ddayset,\n [RRule.MINUTELY]: ii.ddayset,\n [RRule.SECONDLY]: ii.ddayset\n }[freq];\n let timeset;\n let gettimeset;\n if (freq < RRule.HOURLY) {\n timeset = this.timeset;\n }\n else {\n gettimeset = {\n [RRule.YEARLY]: ii.ydayset,\n [RRule.MONTHLY]: ii.mdayset,\n [RRule.WEEKLY]: ii.wdayset,\n [RRule.DAILY]: ii.ddayset,\n [RRule.HOURLY]: ii.htimeset,\n [RRule.MINUTELY]: ii.mtimeset,\n [RRule.SECONDLY]: ii.stimeset\n }[freq];\n if ((freq >= RRule.HOURLY && helpers_1.plb(byhour) && !helpers_1.contains(byhour, hour)) ||\n (freq >= RRule.MINUTELY &&\n helpers_1.plb(byminute) &&\n !helpers_1.contains(byminute, minute)) ||\n (freq >= RRule.SECONDLY && helpers_1.plb(bysecond) && !helpers_1.contains(bysecond, second))) {\n timeset = [];\n }\n else {\n timeset = gettimeset.call(ii, hour, minute, second, dtstartMillisecondModulo);\n }\n }\n let total = 0;\n let count = this.options.count;\n let i;\n let k;\n let dm;\n let div;\n let mod;\n let tmp;\n let pos;\n let dayset;\n let start;\n let end;\n let fixday;\n let filtered;\n while (true) {\n // Get dayset with the right frequency\n tmp = getdayset.call(ii, year, month, day);\n dayset = tmp[0];\n start = tmp[1];\n end = tmp[2];\n // Do the \"hard\" work ;-)\n filtered = false;\n for (let j = start; j < end; j++) {\n i = dayset[j];\n filtered =\n (helpers_1.plb(bymonth) && !helpers_1.contains(bymonth, ii.mmask[i])) ||\n (helpers_1.plb(byweekno) && !ii.wnomask[i]) ||\n (helpers_1.plb(byweekday) &&\n !helpers_1.contains(byweekday, ii.wdaymask[i])) ||\n (helpers_1.plb(ii.nwdaymask) && !ii.nwdaymask[i]) ||\n (byeaster !== null && !helpers_1.contains(ii.eastermask, i)) ||\n ((helpers_1.plb(bymonthday) || helpers_1.plb(bynmonthday)) &&\n !helpers_1.contains(bymonthday, ii.mdaymask[i]) &&\n !helpers_1.contains(bynmonthday, ii.nmdaymask[i])) ||\n (helpers_1.plb(byyearday) &&\n ((i < ii.yearlen &&\n !helpers_1.contains(byyearday, i + 1) &&\n !helpers_1.contains(byyearday, -ii.yearlen + i)) ||\n (i >= ii.yearlen &&\n !helpers_1.contains(byyearday, i + 1 - ii.yearlen) &&\n !helpers_1.contains(byyearday, -ii.nextyearlen + i - ii.yearlen))));\n if (filtered)\n dayset[i] = null;\n }\n // Output results\n if (helpers_1.plb(bysetpos) && helpers_1.plb(timeset)) {\n let daypos;\n let timepos;\n const poslist = [];\n for (let j = 0; j < bysetpos.length; j++) {\n pos = bysetpos[j];\n if (pos < 0) {\n daypos = Math.floor(pos / timeset.length);\n timepos = helpers_1.pymod(pos, timeset.length);\n }\n else {\n daypos = Math.floor((pos - 1) / timeset.length);\n timepos = helpers_1.pymod(pos - 1, timeset.length);\n }\n try {\n tmp = [];\n for (k = start; k < end; k++) {\n const val = dayset[k];\n if (val === null)\n continue;\n tmp.push(val);\n }\n let i;\n if (daypos < 0) {\n // we're trying to emulate python's aList[-n]\n i = tmp.slice(daypos)[0];\n }\n else {\n i = tmp[daypos];\n }\n const time = timeset[timepos];\n const date = dateutil_1.default.fromOrdinal(ii.yearordinal + i);\n const res = dateutil_1.default.combine(date, time);\n // XXX: can this ever be in the array?\n // - compare the actual date instead?\n if (!helpers_1.contains(poslist, res))\n poslist.push(res);\n // tslint:disable-next-line:no-empty\n }\n catch (e) { }\n }\n dateutil_1.default.sort(poslist);\n for (let j = 0; j < poslist.length; j++) {\n const res = poslist[j];\n if (until && res > until) {\n this._len = total;\n return iterResult.getValue();\n }\n else if (res >= dtstart) {\n ++total;\n if (!iterResult.accept(res))\n return iterResult.getValue();\n if (count) {\n --count;\n if (!count) {\n this._len = total;\n return iterResult.getValue();\n }\n }\n }\n }\n }\n else {\n for (let j = start; j < end; j++) {\n i = dayset[j];\n if (i !== null) {\n const date = dateutil_1.default.fromOrdinal(ii.yearordinal + i);\n for (k = 0; k < timeset.length; k++) {\n const time = timeset[k];\n const res = dateutil_1.default.combine(date, time);\n if (until && res > until) {\n this._len = total;\n return iterResult.getValue();\n }\n else if (res >= dtstart) {\n ++total;\n if (!iterResult.accept(res)) {\n return iterResult.getValue();\n }\n if (count) {\n --count;\n if (!count) {\n this._len = total;\n return iterResult.getValue();\n }\n }\n }\n }\n }\n }\n }\n // Handle frequency and interval\n fixday = false;\n if (freq === RRule.YEARLY) {\n year += interval;\n if (year > dateutil_1.default.MAXYEAR) {\n this._len = total;\n return iterResult.getValue();\n }\n ii.rebuild(year, month);\n }\n else if (freq === RRule.MONTHLY) {\n month += interval;\n if (month > 12) {\n div = Math.floor(month / 12);\n mod = helpers_1.pymod(month, 12);\n month = mod;\n year += div;\n if (month === 0) {\n month = 12;\n --year;\n }\n if (year > dateutil_1.default.MAXYEAR) {\n this._len = total;\n return iterResult.getValue();\n }\n }\n ii.rebuild(year, month);\n }\n else if (freq === RRule.WEEKLY) {\n if (wkst > weekday) {\n day += -(weekday + 1 + (6 - wkst)) + interval * 7;\n }\n else {\n day += -(weekday - wkst) + interval * 7;\n }\n weekday = wkst;\n fixday = true;\n }\n else if (freq === RRule.DAILY) {\n day += interval;\n fixday = true;\n }\n else if (freq === RRule.HOURLY) {\n if (filtered) {\n // Jump to one iteration before next day\n hour += Math.floor((23 - hour) / interval) * interval;\n }\n while (true) {\n hour += interval;\n dm = helpers_1.divmod(hour, 24);\n div = dm.div;\n mod = dm.mod;\n if (div) {\n hour = mod;\n day += div;\n fixday = true;\n }\n if (!helpers_1.plb(byhour) || helpers_1.contains(byhour, hour))\n break;\n }\n timeset = gettimeset.call(ii, hour, minute, second);\n }\n else if (freq === RRule.MINUTELY) {\n if (filtered) {\n // Jump to one iteration before next day\n minute +=\n Math.floor((1439 - (hour * 60 + minute)) / interval) * interval;\n }\n while (true) {\n minute += interval;\n dm = helpers_1.divmod(minute, 60);\n div = dm.div;\n mod = dm.mod;\n if (div) {\n minute = mod;\n hour += div;\n dm = helpers_1.divmod(hour, 24);\n div = dm.div;\n mod = dm.mod;\n if (div) {\n hour = mod;\n day += div;\n fixday = true;\n filtered = false;\n }\n }\n if ((!helpers_1.plb(byhour) || helpers_1.contains(byhour, hour)) &&\n (!helpers_1.plb(byminute) || helpers_1.contains(byminute, minute))) {\n break;\n }\n }\n timeset = gettimeset.call(ii, hour, minute, second);\n }\n else if (freq === RRule.SECONDLY) {\n if (filtered) {\n // Jump to one iteration before next day\n second +=\n Math.floor((86399 - (hour * 3600 + minute * 60 + second)) / interval) * interval;\n }\n while (true) {\n second += interval;\n dm = helpers_1.divmod(second, 60);\n div = dm.div;\n mod = dm.mod;\n if (div) {\n second = mod;\n minute += div;\n dm = helpers_1.divmod(minute, 60);\n div = dm.div;\n mod = dm.mod;\n if (div) {\n minute = mod;\n hour += div;\n dm = helpers_1.divmod(hour, 24);\n div = dm.div;\n mod = dm.mod;\n if (div) {\n hour = mod;\n day += div;\n fixday = true;\n }\n }\n }\n if ((!helpers_1.plb(byhour) || helpers_1.contains(byhour, hour)) &&\n (!helpers_1.plb(byminute) || helpers_1.contains(byminute, minute)) &&\n (!helpers_1.plb(bysecond) || helpers_1.contains(bysecond, second))) {\n break;\n }\n }\n timeset = gettimeset.call(ii, hour, minute, second);\n }\n if (fixday && day > 28) {\n let daysinmonth = dateutil_1.default.monthRange(year, month - 1)[1];\n if (day > daysinmonth) {\n while (day > daysinmonth) {\n day -= daysinmonth;\n ++month;\n if (month === 13) {\n month = 1;\n ++year;\n if (year > dateutil_1.default.MAXYEAR) {\n this._len = total;\n return iterResult.getValue();\n }\n }\n daysinmonth = dateutil_1.default.monthRange(year, month - 1)[1];\n }\n ii.rebuild(year, month);\n }\n }\n }\n }\n}\n// RRule class 'constants'\nRRule.FREQUENCIES = [\n 'YEARLY',\n 'MONTHLY',\n 'WEEKLY',\n 'DAILY',\n 'HOURLY',\n 'MINUTELY',\n 'SECONDLY'\n];\nRRule.YEARLY = 0;\nRRule.MONTHLY = 1;\nRRule.WEEKLY = 2;\nRRule.DAILY = 3;\nRRule.HOURLY = 4;\nRRule.MINUTELY = 5;\nRRule.SECONDLY = 6;\nRRule.DEFAULT_OPTIONS = {\n freq: null,\n dtstart: null,\n interval: 1,\n wkst: Days.MO,\n count: null,\n until: null,\n bysetpos: null,\n bymonth: null,\n bymonthday: null,\n bynmonthday: null,\n byyearday: null,\n byweekno: null,\n byweekday: null,\n bynweekday: null,\n byhour: null,\n byminute: null,\n bysecond: null,\n byeaster: null\n};\nRRule.MO = Days.MO;\nRRule.TU = Days.TU;\nRRule.WE = Days.WE;\nRRule.TH = Days.TH;\nRRule.FR = Days.FR;\nRRule.SA = Days.SA;\nRRule.SU = Days.SU;\nexports.default = RRule;\n// =============================================================================\n// Iterinfo\n// =============================================================================\nclass Iterinfo {\n constructor(rrule) {\n this.rrule = rrule;\n this.lastyear = null;\n this.lastmonth = null;\n this.yearlen = null;\n this.nextyearlen = null;\n this.yearordinal = null;\n this.yearweekday = null;\n this.mmask = null;\n this.mrange = null;\n this.mdaymask = null;\n this.nmdaymask = null;\n this.wdaymask = null;\n this.wnomask = null;\n this.nwdaymask = null;\n this.eastermask = null;\n }\n easter(y, offset = 0) {\n const a = y % 19;\n const b = Math.floor(y / 100);\n const c = y % 100;\n const d = Math.floor(b / 4);\n const e = b % 4;\n const f = Math.floor((b + 8) / 25);\n const g = Math.floor((b - f + 1) / 3);\n const h = Math.floor(19 * a + b - d - g + 15) % 30;\n const i = Math.floor(c / 4);\n const k = c % 4;\n const l = Math.floor(32 + 2 * e + 2 * i - h - k) % 7;\n const m = Math.floor((a + 11 * h + 22 * l) / 451);\n const month = Math.floor((h + l - 7 * m + 114) / 31);\n const day = ((h + l - 7 * m + 114) % 31) + 1;\n const date = Date.UTC(y, month - 1, day + offset);\n const yearStart = Date.UTC(y, 0, 1);\n return [Math.ceil((date - yearStart) / (1000 * 60 * 60 * 24))];\n }\n rebuild(year, month) {\n const rr = this.rrule;\n if (year !== this.lastyear) {\n this.yearlen = dateutil_1.default.isLeapYear(year) ? 366 : 365;\n this.nextyearlen = dateutil_1.default.isLeapYear(year + 1) ? 366 : 365;\n const firstyday = new Date(year, 0, 1);\n this.yearordinal = dateutil_1.default.toOrdinal(firstyday);\n this.yearweekday = dateutil_1.default.getWeekday(firstyday);\n const wday = dateutil_1.default.getWeekday(new Date(year, 0, 1));\n if (this.yearlen === 365) {\n this.mmask = [].concat(masks_1.M365MASK);\n this.mdaymask = [].concat(masks_1.MDAY365MASK);\n this.nmdaymask = [].concat(masks_1.NMDAY365MASK);\n this.wdaymask = masks_1.WDAYMASK.slice(wday);\n this.mrange = [].concat(masks_1.M365RANGE);\n }\n else {\n this.mmask = [].concat(masks_1.M366MASK);\n this.mdaymask = [].concat(masks_1.MDAY366MASK);\n this.nmdaymask = [].concat(masks_1.NMDAY366MASK);\n this.wdaymask = masks_1.WDAYMASK.slice(wday);\n this.mrange = [].concat(masks_1.M366RANGE);\n }\n if (!helpers_1.plb(rr.options.byweekno)) {\n this.wnomask = null;\n }\n else {\n this.wnomask = helpers_1.repeat(0, this.yearlen + 7);\n let no1wkst;\n let firstwkst;\n let wyearlen;\n no1wkst = firstwkst = helpers_1.pymod(7 - this.yearweekday + rr.options.wkst, 7);\n if (no1wkst >= 4) {\n no1wkst = 0;\n // Number of days in the year, plus the days we got\n // from last year.\n wyearlen =\n this.yearlen + helpers_1.pymod(this.yearweekday - rr.options.wkst, 7);\n }\n else {\n // Number of days in the year, minus the days we\n // left in last year.\n wyearlen = this.yearlen - no1wkst;\n }\n const div = Math.floor(wyearlen / 7);\n const mod = helpers_1.pymod(wyearlen, 7);\n const numweeks = Math.floor(div + mod / 4);\n for (let j = 0; j < rr.options.byweekno.length; j++) {\n let i;\n let n = rr.options.byweekno[j];\n if (n < 0) {\n n += numweeks + 1;\n }\n if (!(n > 0 && n <= numweeks)) {\n continue;\n }\n if (n > 1) {\n i = no1wkst + (n - 1) * 7;\n if (no1wkst !== firstwkst) {\n i -= 7 - firstwkst;\n }\n }\n else {\n i = no1wkst;\n }\n for (let k = 0; k < 7; k++) {\n this.wnomask[i] = 1;\n i++;\n if (this.wdaymask[i] === rr.options.wkst)\n break;\n }\n }\n if (helpers_1.contains(rr.options.byweekno, 1)) {\n // Check week number 1 of next year as well\n // orig-TODO : Check -numweeks for next year.\n let i = no1wkst + numweeks * 7;\n if (no1wkst !== firstwkst)\n i -= 7 - firstwkst;\n if (i < this.yearlen) {\n // If week starts in next year, we\n // don't care about it.\n for (let j = 0; j < 7; j++) {\n this.wnomask[i] = 1;\n i += 1;\n if (this.wdaymask[i] === rr.options.wkst)\n break;\n }\n }\n }\n if (no1wkst) {\n // Check last week number of last year as\n // well. If no1wkst is 0, either the year\n // started on week start, or week number 1\n // got days from last year, so there are no\n // days from last year's last week number in\n // this year.\n let lnumweeks;\n if (!helpers_1.contains(rr.options.byweekno, -1)) {\n const lyearweekday = dateutil_1.default.getWeekday(new Date(year - 1, 0, 1));\n let lno1wkst = helpers_1.pymod(7 - lyearweekday.valueOf() + rr.options.wkst, 7);\n const lyearlen = dateutil_1.default.isLeapYear(year - 1) ? 366 : 365;\n if (lno1wkst >= 4) {\n lno1wkst = 0;\n lnumweeks = Math.floor(52 +\n helpers_1.pymod(lyearlen + helpers_1.pymod(lyearweekday - rr.options.wkst, 7), 7) /\n 4);\n }\n else {\n lnumweeks = Math.floor(52 + helpers_1.pymod(this.yearlen - no1wkst, 7) / 4);\n }\n }\n else {\n lnumweeks = -1;\n }\n if (helpers_1.contains(rr.options.byweekno, lnumweeks)) {\n for (let i = 0; i < no1wkst; i++)\n this.wnomask[i] = 1;\n }\n }\n }\n }\n if (helpers_1.plb(rr.options.bynweekday) &&\n (month !== this.lastmonth || year !== this.lastyear)) {\n let ranges = [];\n if (rr.options.freq === RRule.YEARLY) {\n if (helpers_1.plb(rr.options.bymonth) && rr.options.bymonth instanceof Array) {\n for (let j = 0; j < rr.options.bymonth.length; j++) {\n month = rr.options.bymonth[j];\n ranges.push(this.mrange.slice(month - 1, month + 1));\n }\n }\n else {\n ranges = [[0, this.yearlen]];\n }\n }\n else if (rr.options.freq === RRule.MONTHLY) {\n ranges = [this.mrange.slice(month - 1, month + 1)];\n }\n if (helpers_1.plb(ranges)) {\n // Weekly frequency won't get here, so we may not\n // care about cross-year weekly periods.\n this.nwdaymask = helpers_1.repeat(0, this.yearlen);\n for (let j = 0; j < ranges.length; j++) {\n const rang = ranges[j];\n const first = rang[0];\n let last = rang[1];\n last -= 1;\n for (let k = 0; k < rr.options.bynweekday.length; k++) {\n let i;\n const wday = rr.options.bynweekday[k][0];\n const n = rr.options.bynweekday[k][1];\n if (n < 0) {\n i = last + (n + 1) * 7;\n i -= helpers_1.pymod((this.wdaymask[i]) - wday, 7);\n }\n else {\n i = first + (n - 1) * 7;\n i += helpers_1.pymod(7 - (this.wdaymask[i]) + wday, 7);\n }\n if (first <= i && i <= last)\n this.nwdaymask[i] = 1;\n }\n }\n }\n this.lastyear = year;\n this.lastmonth = month;\n }\n if (rr.options.byeaster !== null) {\n this.eastermask = this.easter(year, rr.options.byeaster);\n }\n }\n ydayset(_, __, ___) {\n return [helpers_1.range(this.yearlen), 0, this.yearlen];\n }\n mdayset(_, month, __) {\n const set = helpers_1.repeat(null, this.yearlen);\n const start = this.mrange[month - 1];\n const end = this.mrange[month];\n for (let i = start; i < end; i++)\n set[i] = i;\n return [set, start, end];\n }\n wdayset(year, month, day) {\n // We need to handle cross-year weeks here.\n const set = helpers_1.repeat(null, this.yearlen + 7);\n let i = dateutil_1.default.toOrdinal(new Date(year, month - 1, day)) - this.yearordinal;\n const start = i;\n for (let j = 0; j < 7; j++) {\n set[i] = i;\n ++i;\n if (this.wdaymask[i] === this.rrule.options.wkst)\n break;\n }\n return [set, start, i];\n }\n ddayset(year, month, day) {\n const set = helpers_1.repeat(null, this.yearlen);\n const i = dateutil_1.default.toOrdinal(new Date(year, month - 1, day)) - this.yearordinal;\n set[i] = i;\n return [set, i, i + 1];\n }\n htimeset(hour, minute, second, millisecond) {\n const set = [];\n const rr = this.rrule;\n for (let i = 0; i < rr.options.byminute.length; i++) {\n minute = rr.options.byminute[i];\n for (let j = 0; j < rr.options.bysecond.length; j++) {\n second = rr.options.bysecond[j];\n set.push(new dateutil_1.default.Time(hour, minute, second, millisecond));\n }\n }\n dateutil_1.default.sort(set);\n return set;\n }\n mtimeset(hour, minute, second, millisecond) {\n const set = [];\n const rr = this.rrule;\n for (let j = 0; j < rr.options.bysecond.length; j++) {\n second = rr.options.bysecond[j];\n set.push(new dateutil_1.default.Time(hour, minute, second, millisecond));\n }\n dateutil_1.default.sort(set);\n return set;\n }\n stimeset(hour, minute, second, millisecond) {\n return [new dateutil_1.default.Time(hour, minute, second, millisecond)];\n }\n}\n//# sourceMappingURL=rrule.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst WDAYS = ['MO', 'TU', 'WE', 'TH', 'FR', 'SA', 'SU'];\n// =============================================================================\n// Weekday\n// =============================================================================\nclass Weekday {\n constructor(weekday, n) {\n if (n === 0)\n throw new Error(\"Can't create weekday with n == 0\");\n this.weekday = weekday;\n this.n = n;\n }\n // __call__ - Cannot call the object directly, do it through\n // e.g. RRule.TH.nth(-1) instead,\n nth(n) {\n return this.n === n ? this : new Weekday(this.weekday, n);\n }\n // __eq__\n equals(other) {\n return this.weekday === other.weekday && this.n === other.n;\n }\n // __repr__\n toString() {\n let s = WDAYS[this.weekday];\n if (this.n)\n s = (this.n > 0 ? '+' : '') + String(this.n) + s;\n return s;\n }\n getJsWeekday() {\n return this.weekday === 6 ? 0 : this.weekday + 1;\n }\n}\nexports.default = Weekday;\n//# sourceMappingURL=weekday.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass Time {\n constructor(hour, minute, second, millisecond) {\n this.hour = hour;\n this.minute = minute;\n this.second = second;\n this.millisecond = millisecond || 0;\n }\n getHours() {\n return this.hour;\n }\n getMinutes() {\n return this.minute;\n }\n getSeconds() {\n return this.second;\n }\n getMilliseconds() {\n return this.millisecond;\n }\n getTime() {\n return ((this.hour * 60 * 60 + this.minute * 60 + this.second) * 1000 +\n this.millisecond);\n }\n}\nexports.Time = Time;\n/**\n * General date-related utilities.\n * Also handles several incompatibilities between JavaScript and Python\n *\n */\nconst dateutil = {\n MONTH_DAYS: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n /**\n * Number of milliseconds of one day\n */\n ONE_DAY: 1000 * 60 * 60 * 24,\n /**\n * @see: \n */\n MAXYEAR: 9999,\n /**\n * Python uses 1-Jan-1 as the base for calculating ordinals but we don't\n * want to confuse the JS engine with milliseconds > Number.MAX_NUMBER,\n * therefore we use 1-Jan-1970 instead\n */\n ORDINAL_BASE: new Date(1970, 0, 1),\n /**\n * Python: MO-SU: 0 - 6\n * JS: SU-SAT 0 - 6\n */\n PY_WEEKDAYS: [6, 0, 1, 2, 3, 4, 5],\n /**\n * py_date.timetuple()[7]\n */\n getYearDay: function (date) {\n const dateNoTime = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n return (Math.ceil((dateNoTime.valueOf() - new Date(date.getFullYear(), 0, 1).valueOf()) /\n dateutil.ONE_DAY) + 1);\n },\n isLeapYear: function (year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n },\n /**\n * @return {Number} the date's timezone offset in ms\n */\n tzOffset: function (date) {\n return date.getTimezoneOffset() * 60 * 1000;\n },\n /**\n * @see: \n */\n daysBetween: function (date1, date2) {\n // The number of milliseconds in one day\n // Convert both dates to milliseconds\n const date1ms = date1.getTime() - dateutil.tzOffset(date1);\n const date2ms = date2.getTime() - dateutil.tzOffset(date2);\n // Calculate the difference in milliseconds\n const differencems = date1ms - date2ms;\n // Convert back to days and return\n return Math.round(differencems / dateutil.ONE_DAY);\n },\n /**\n * @see: \n */\n toOrdinal: function (date) {\n return dateutil.daysBetween(date, dateutil.ORDINAL_BASE);\n },\n /**\n * @see - \n */\n fromOrdinal: function (ordinal) {\n const millisecsFromBase = ordinal * dateutil.ONE_DAY;\n return new Date(dateutil.ORDINAL_BASE.getTime() -\n dateutil.tzOffset(dateutil.ORDINAL_BASE) +\n millisecsFromBase +\n dateutil.tzOffset(new Date(millisecsFromBase)));\n },\n /**\n * @see: \n */\n monthRange: function (year, month) {\n const date = new Date(year, month, 1);\n return [dateutil.getWeekday(date), dateutil.getMonthDays(date)];\n },\n getMonthDays: function (date) {\n const month = date.getMonth();\n return month === 1 && dateutil.isLeapYear(date.getFullYear())\n ? 29\n : dateutil.MONTH_DAYS[month];\n },\n /**\n * @return {Number} python-like weekday\n */\n getWeekday: function (date) {\n return dateutil.PY_WEEKDAYS[date.getDay()];\n },\n /**\n * @see: \n */\n combine: function (date, time) {\n time = time || date;\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds());\n },\n clone: function (date) {\n const dolly = new Date(date.getTime());\n return dolly;\n },\n cloneDates: function (dates) {\n const clones = [];\n for (let i = 0; i < dates.length; i++) {\n clones.push(dateutil.clone(dates[i]));\n }\n return clones;\n },\n /**\n * Sorts an array of Date or dateutil.Time objects\n */\n sort: function (dates) {\n dates.sort(function (a, b) {\n return a.getTime() - b.getTime();\n });\n },\n timeToUntilString: function (time) {\n let comp;\n const date = new Date(time);\n const comps = [\n date.getUTCFullYear(),\n date.getUTCMonth() + 1,\n date.getUTCDate(),\n 'T',\n date.getUTCHours(),\n date.getUTCMinutes(),\n date.getUTCSeconds(),\n 'Z'\n ];\n for (let i = 0; i < comps.length; i++) {\n comp = comps[i];\n if (!/[TZ]/.test(comp.toString()) && comp < 10) {\n comps[i] = '0' + String(comp);\n }\n }\n return comps.join('');\n },\n untilStringToDate: function (until) {\n const re = /^(\\d{4})(\\d{2})(\\d{2})(T(\\d{2})(\\d{2})(\\d{2})Z?)?$/;\n const bits = re.exec(until);\n if (!bits)\n throw new Error('Invalid UNTIL value: ' + until);\n return new Date(Date.UTC(parseInt(bits[1], 10), parseInt(bits[2], 10) - 1, parseInt(bits[3], 10), parseInt(bits[5], 10) || 0, parseInt(bits[6], 10) || 0, parseInt(bits[7], 10) || 0));\n },\n Time\n};\nexports.default = dateutil;\n//# sourceMappingURL=dateutil.js.map","\"use strict\";\n// =============================================================================\n// Results\n// =============================================================================\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * This class helps us to emulate python's generators, sorta.\n */\nclass IterResult {\n constructor(method, args) {\n this.method = method;\n this.args = args;\n this.minDate = null;\n this.maxDate = null;\n this._result = [];\n if (method === 'between') {\n this.maxDate = args.inc\n ? args.before\n : new Date(args.before.getTime() - 1);\n this.minDate = args.inc ? args.after : new Date(args.after.getTime() + 1);\n }\n else if (method === 'before') {\n this.maxDate = args.inc ? args.dt : new Date(args.dt.getTime() - 1);\n }\n else if (method === 'after') {\n this.minDate = args.inc ? args.dt : new Date(args.dt.getTime() + 1);\n }\n }\n /**\n * Possibly adds a date into the result.\n *\n * @param {Date} date - the date isn't necessarly added to the result\n * list (if it is too late/too early)\n * @return {Boolean} true if it makes sense to continue the iteration\n * false if we're done.\n */\n accept(date) {\n const tooEarly = this.minDate && date < this.minDate;\n const tooLate = this.maxDate && date > this.maxDate;\n if (this.method === 'between') {\n if (tooEarly)\n return true;\n if (tooLate)\n return false;\n }\n else if (this.method === 'before') {\n if (tooLate)\n return false;\n }\n else if (this.method === 'after') {\n if (tooEarly)\n return true;\n this.add(date);\n return false;\n }\n return this.add(date);\n }\n /**\n *\n * @param {Date} date that is part of the result.\n * @return {Boolean} whether we are interested in more values.\n */\n add(date) {\n this._result.push(date);\n return true;\n }\n /**\n * 'before' and 'after' return only one date, whereas 'all'\n * and 'between' an array.\n * @return {Date,Array?}\n */\n getValue() {\n const res = this._result;\n switch (this.method) {\n case 'all':\n case 'between':\n return res;\n case 'before':\n case 'after':\n return res.length ? res[res.length - 1] : null;\n }\n }\n clone() {\n return new IterResult(this.method, this.args);\n }\n}\nexports.default = IterResult;\n//# sourceMappingURL=iterresult.js.map","\"use strict\";\n// =============================================================================\n// i18n\n// =============================================================================\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ENGLISH = {\n dayNames: [\n 'Sunday', 'Monday', 'Tuesday', 'Wednesday',\n 'Thursday', 'Friday', 'Saturday'\n ],\n monthNames: [\n 'January', 'February', 'March', 'April', 'May',\n 'June', 'July', 'August', 'September', 'October',\n 'November', 'December'\n ],\n tokens: {\n 'SKIP': /^[ \\r\\n\\t]+|^\\.$/,\n 'number': /^[1-9][0-9]*/,\n 'numberAsText': /^(one|two|three)/i,\n 'every': /^every/i,\n 'day(s)': /^days?/i,\n 'weekday(s)': /^weekdays?/i,\n 'week(s)': /^weeks?/i,\n 'hour(s)': /^hours?/i,\n 'minute(s)': /^minutes?/i,\n 'month(s)': /^months?/i,\n 'year(s)': /^years?/i,\n 'on': /^(on|in)/i,\n 'at': /^(at)/i,\n 'the': /^the/i,\n 'first': /^first/i,\n 'second': /^second/i,\n 'third': /^third/i,\n 'nth': /^([1-9][0-9]*)(\\.|th|nd|rd|st)/i,\n 'last': /^last/i,\n 'for': /^for/i,\n 'time(s)': /^times?/i,\n 'until': /^(un)?til/i,\n 'monday': /^mo(n(day)?)?/i,\n 'tuesday': /^tu(e(s(day)?)?)?/i,\n 'wednesday': /^we(d(n(esday)?)?)?/i,\n 'thursday': /^th(u(r(sday)?)?)?/i,\n 'friday': /^fr(i(day)?)?/i,\n 'saturday': /^sa(t(urday)?)?/i,\n 'sunday': /^su(n(day)?)?/i,\n 'january': /^jan(uary)?/i,\n 'february': /^feb(ruary)?/i,\n 'march': /^mar(ch)?/i,\n 'april': /^apr(il)?/i,\n 'may': /^may/i,\n 'june': /^june?/i,\n 'july': /^july?/i,\n 'august': /^aug(ust)?/i,\n 'september': /^sep(t(ember)?)?/i,\n 'october': /^oct(ober)?/i,\n 'november': /^nov(ember)?/i,\n 'december': /^dec(ember)?/i,\n 'comma': /^(,\\s*|(and|or)\\s*)+/i\n }\n};\nexports.default = ENGLISH;\n//# sourceMappingURL=i18n.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst rrule_1 = require(\"./rrule\");\nconst dateutil_1 = require(\"./dateutil\");\nconst helpers_1 = require(\"./helpers\");\n/**\n *\n * @param {Boolean?} noCache\n * The same stratagy as RRule on cache, default to false\n * @constructor\n */\nclass RRuleSet extends rrule_1.default {\n constructor(noCache = false) {\n super({}, noCache);\n this._rrule = [];\n this._rdate = [];\n this._exrule = [];\n this._exdate = [];\n }\n /**\n * Adds an RRule to the set\n *\n * @param {RRule}\n */\n rrule(rrule) {\n if (!(rrule instanceof rrule_1.default)) {\n throw new TypeError(String(rrule) + ' is not RRule instance');\n }\n if (!helpers_1.contains(this._rrule.map(String), String(rrule))) {\n this._rrule.push(rrule);\n }\n }\n /**\n * Adds an RDate to the set\n *\n * @param {Date}\n */\n rdate(date) {\n if (!(date instanceof Date)) {\n throw new TypeError(String(date) + ' is not Date instance');\n }\n if (!helpers_1.contains(this._rdate.map(Number), Number(date))) {\n this._rdate.push(date);\n dateutil_1.default.sort(this._rdate);\n }\n }\n /**\n * Adds an EXRULE to the set\n *\n * @param {RRule}\n */\n exrule(rrule) {\n if (!(rrule instanceof rrule_1.default)) {\n throw new TypeError(String(rrule) + ' is not RRule instance');\n }\n if (!helpers_1.contains(this._exrule.map(String), String(rrule))) {\n this._exrule.push(rrule);\n }\n }\n /**\n * Adds an EXDATE to the set\n *\n * @param {Date}\n */\n exdate(date) {\n if (!(date instanceof Date)) {\n throw new TypeError(String(date) + ' is not Date instance');\n }\n if (!helpers_1.contains(this._exdate.map(Number), Number(date))) {\n this._exdate.push(date);\n dateutil_1.default.sort(this._exdate);\n }\n }\n valueOf() {\n const result = [];\n if (this._rrule.length) {\n this._rrule.forEach(function (rrule) {\n result.push('RRULE:' + rrule);\n });\n }\n if (this._rdate.length) {\n result.push('RDATE:' +\n this._rdate\n .map(function (rdate) {\n return dateutil_1.default.timeToUntilString(rdate.valueOf());\n })\n .join(','));\n }\n if (this._exrule.length) {\n this._exrule.forEach(function (exrule) {\n result.push('EXRULE:' + exrule);\n });\n }\n if (this._exdate.length) {\n result.push('EXDATE:' +\n this._exdate\n .map(function (exdate) {\n return dateutil_1.default.timeToUntilString(exdate.valueOf());\n })\n .join(','));\n }\n return result;\n }\n /**\n * to generate recurrence field sush as:\n * [\"RRULE:FREQ=YEARLY;COUNT=2;BYDAY=TU;DTSTART=19970902T010000Z\",\"RRULE:FREQ=YEARLY;COUNT=1;BYDAY=TH;DTSTART=19970902T010000Z\"]\n */\n toString() {\n return JSON.stringify(this.valueOf());\n }\n _iter(iterResult) {\n const _exdateHash = {};\n const _exrule = this._exrule;\n const _accept = iterResult.accept;\n function evalExdate(after, before) {\n _exrule.forEach(function (rrule) {\n rrule.between(after, before, true).forEach(function (date) {\n _exdateHash[Number(date)] = true;\n });\n });\n }\n this._exdate.forEach(function (date) {\n _exdateHash[Number(date)] = true;\n });\n iterResult.accept = function (date) {\n const dt = Number(date);\n if (!_exdateHash[dt]) {\n evalExdate(new Date(dt - 1), new Date(dt + 1));\n if (!_exdateHash[dt]) {\n _exdateHash[dt] = true;\n return _accept.call(this, date);\n }\n }\n return true;\n };\n if (iterResult.method === 'between') {\n evalExdate(iterResult.args.after, iterResult.args.before);\n iterResult.accept = function (date) {\n const dt = Number(date);\n if (!_exdateHash[dt]) {\n _exdateHash[dt] = true;\n return _accept.call(this, date);\n }\n return true;\n };\n }\n for (let i = 0; i < this._rdate.length; i++) {\n if (!iterResult.accept(new Date(this._rdate[i].valueOf())))\n break;\n }\n this._rrule.forEach(function (rrule) {\n rrule._iter(iterResult);\n });\n const res = iterResult._result;\n dateutil_1.default.sort(res);\n switch (iterResult.method) {\n case 'all':\n case 'between':\n return res;\n case 'before':\n return (res.length && res[res.length - 1]) || null;\n case 'after':\n return (res.length && res[0]) || null;\n default:\n return null;\n }\n }\n /**\n * Create a new RRuleSet Object completely base on current instance\n */\n clone() {\n const rrs = new RRuleSet(!!this._cache);\n let i;\n for (i = 0; i < this._rrule.length; i++) {\n rrs.rrule(this._rrule[i].clone());\n }\n for (i = 0; i < this._rdate.length; i++) {\n rrs.rdate(new Date(this._rdate[i].valueOf()));\n }\n for (i = 0; i < this._exrule.length; i++) {\n rrs.exrule(this._exrule[i].clone());\n }\n for (i = 0; i < this._exdate.length; i++) {\n rrs.exdate(new Date(this._exdate[i].valueOf()));\n }\n return rrs;\n }\n}\nexports.default = RRuleSet;\n//# sourceMappingURL=rruleset.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst helpers_1 = require(\"./helpers\");\n// =============================================================================\n// Date masks\n// =============================================================================\n// Every mask is 7 days longer to handle cross-year weekly periods.\nconst M365MASK = [].concat(helpers_1.repeat(1, 31), helpers_1.repeat(2, 28), helpers_1.repeat(3, 31), helpers_1.repeat(4, 30), helpers_1.repeat(5, 31), helpers_1.repeat(6, 30), helpers_1.repeat(7, 31), helpers_1.repeat(8, 31), helpers_1.repeat(9, 30), helpers_1.repeat(10, 31), helpers_1.repeat(11, 30), helpers_1.repeat(12, 31), helpers_1.repeat(1, 7));\nexports.M365MASK = M365MASK;\nconst M366MASK = [].concat(helpers_1.repeat(1, 31), helpers_1.repeat(2, 29), helpers_1.repeat(3, 31), helpers_1.repeat(4, 30), helpers_1.repeat(5, 31), helpers_1.repeat(6, 30), helpers_1.repeat(7, 31), helpers_1.repeat(8, 31), helpers_1.repeat(9, 30), helpers_1.repeat(10, 31), helpers_1.repeat(11, 30), helpers_1.repeat(12, 31), helpers_1.repeat(1, 7));\nexports.M366MASK = M366MASK;\nlet M28 = helpers_1.range(1, 29);\nlet M29 = helpers_1.range(1, 30);\nlet M30 = helpers_1.range(1, 31);\nlet M31 = helpers_1.range(1, 32);\nconst MDAY366MASK = [].concat(M31, M29, M31, M30, M31, M30, M31, M31, M30, M31, M30, M31, M31.slice(0, 7));\nexports.MDAY366MASK = MDAY366MASK;\nconst MDAY365MASK = [].concat(M31, M28, M31, M30, M31, M30, M31, M31, M30, M31, M30, M31, M31.slice(0, 7));\nexports.MDAY365MASK = MDAY365MASK;\nM28 = helpers_1.range(-28, 0);\nM29 = helpers_1.range(-29, 0);\nM30 = helpers_1.range(-30, 0);\nM31 = helpers_1.range(-31, 0);\nconst NMDAY366MASK = [].concat(M31, M29, M31, M30, M31, M30, M31, M31, M30, M31, M30, M31, M31.slice(0, 7));\nexports.NMDAY366MASK = NMDAY366MASK;\nconst NMDAY365MASK = [].concat(M31, M28, M31, M30, M31, M30, M31, M31, M30, M31, M30, M31, M31.slice(0, 7));\nexports.NMDAY365MASK = NMDAY365MASK;\nconst M366RANGE = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366];\nexports.M366RANGE = M366RANGE;\nconst M365RANGE = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365];\nexports.M365RANGE = M365RANGE;\nconst WDAYMASK = (function () {\n let wdaymask = [];\n for (let i = 0; i < 55; i++)\n wdaymask = wdaymask.concat(helpers_1.range(7));\n return wdaymask;\n})();\nexports.WDAYMASK = WDAYMASK;\n//# sourceMappingURL=masks.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst iterresult_1 = require(\"./iterresult\");\nconst helpers_1 = require(\"./helpers\");\n/**\n * IterResult subclass that calls a callback function on each add,\n * and stops iterating when the callback returns false.\n */\nclass CallbackIterResult extends iterresult_1.default {\n constructor(method, args, iterator) {\n const allowedMethods = ['all', 'between'];\n if (!helpers_1.contains(allowedMethods, method)) {\n throw new Error('Invalid method \"' +\n method +\n '\". Only all and between works with iterator.');\n }\n super(method, args);\n this.iterator = iterator;\n }\n add(date) {\n if (this.iterator(date, this._result.length)) {\n this._result.push(date);\n return true;\n }\n return false;\n }\n}\nexports.default = CallbackIterResult;\n//# sourceMappingURL=callbackiterresult.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst totext_1 = require(\"./totext\");\nconst parsetext_1 = require(\"./parsetext\");\nexports.parseText = parsetext_1.default;\nconst index_1 = require(\"../index\");\n/*!\n* rrule.js - Library for working with recurrence rules for calendar dates.\n* https://github.com/jakubroztocil/rrule\n*\n* Copyright 2010, Jakub Roztocil and Lars Schoning\n* Licenced under the BSD licence.\n* https://github.com/jakubroztocil/rrule/blob/master/LICENCE\n*\n*/\n/**\n *\n * Implementation of RRule.fromText() and RRule::toText().\n *\n *\n * On the client side, this file needs to be included\n * when those functions are used.\n *\n */\n// =============================================================================\n// fromText\n// =============================================================================\n/**\n * Will be able to convert some of the below described rules from\n * text format to a rule object.\n *\n *\n * RULES\n *\n * Every ([n])\n * day(s)\n * | [weekday], ..., (and) [weekday]\n * | weekday(s)\n * | week(s)\n * | month(s)\n * | [month], ..., (and) [month]\n * | year(s)\n *\n *\n * Plus 0, 1, or multiple of these:\n *\n * on [weekday], ..., (or) [weekday] the [monthday], [monthday], ... (or) [monthday]\n *\n * on [weekday], ..., (and) [weekday]\n *\n * on the [monthday], [monthday], ... (and) [monthday] (day of the month)\n *\n * on the [nth-weekday], ..., (and) [nth-weekday] (of the month/year)\n *\n *\n * Plus 0 or 1 of these:\n *\n * for [n] time(s)\n *\n * until [date]\n *\n * Plus (.)\n *\n *\n * Definitely no supported for parsing:\n *\n * (for year):\n * in week(s) [n], ..., (and) [n]\n *\n * on the [yearday], ..., (and) [n] day of the year\n * on day [yearday], ..., (and) [n]\n *\n *\n * NON-TERMINALS\n *\n * [n]: 1, 2 ..., one, two, three ..\n * [month]: January, February, March, April, May, ... December\n * [weekday]: Monday, ... Sunday\n * [nth-weekday]: first [weekday], 2nd [weekday], ... last [weekday], ...\n * [monthday]: first, 1., 2., 1st, 2nd, second, ... 31st, last day, 2nd last day, ..\n * [date]:\n * [month] (0-31(,) ([year])),\n * (the) 0-31.(1-12.([year])),\n * (the) 0-31/(1-12/([year])),\n * [weekday]\n *\n * [year]: 0000, 0001, ... 01, 02, ..\n *\n * Definitely not supported for parsing:\n *\n * [yearday]: first, 1., 2., 1st, 2nd, second, ... 366th, last day, 2nd last day, ..\n *\n * @param {String} text\n * @return {Object, Boolean} the rule, or null.\n */\nconst fromText = function (text, language) {\n return new index_1.default(parsetext_1.default(text, language));\n};\nexports.fromText = fromText;\nconst common = [\n 'count',\n 'until',\n 'interval',\n 'byweekday',\n 'bymonthday',\n 'bymonth'\n];\ntotext_1.default.IMPLEMENTED = [];\ntotext_1.default.IMPLEMENTED[index_1.default.HOURLY] = common;\ntotext_1.default.IMPLEMENTED[index_1.default.MINUTELY] = common;\ntotext_1.default.IMPLEMENTED[index_1.default.DAILY] = ['byhour'].concat(common);\ntotext_1.default.IMPLEMENTED[index_1.default.WEEKLY] = common;\ntotext_1.default.IMPLEMENTED[index_1.default.MONTHLY] = common;\ntotext_1.default.IMPLEMENTED[index_1.default.YEARLY] = ['byweekno', 'byyearday'].concat(common);\n// =============================================================================\n// Export\n// =============================================================================\nconst toText = function (rrule, gettext, language) {\n return new totext_1.default(rrule, gettext, language).toString();\n};\nexports.toText = toText;\nconst { isFullyConvertible } = totext_1.default;\nexports.isFullyConvertible = isFullyConvertible;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst i18n_1 = require(\"./i18n\");\nconst index_1 = require(\"../index\");\n// =============================================================================\n// Helper functions\n// =============================================================================\n/**\n * Return true if a value is in an array\n */\nconst contains = function (arr, val) {\n return arr.indexOf(val) !== -1;\n};\n/**\n *\n * @param {RRule} rrule\n * Optional:\n * @param {Function} gettext function\n * @param {Object} language definition\n * @constructor\n */\nclass ToText {\n constructor(rrule, gettext, language = i18n_1.default) {\n this.text = [];\n this.language = language || i18n_1.default;\n this.gettext =\n gettext ||\n function (id) {\n return id.toString();\n };\n this.rrule = rrule;\n this.options = rrule.options;\n this.origOptions = rrule.origOptions;\n if (this.origOptions.bymonthday) {\n const bymonthday = [].concat(this.options.bymonthday);\n const bynmonthday = [].concat(this.options.bynmonthday);\n bymonthday.sort();\n bynmonthday.sort();\n bynmonthday.reverse();\n // 1, 2, 3, .., -5, -4, -3, ..\n this.bymonthday = bymonthday.concat(bynmonthday);\n if (!this.bymonthday.length)\n this.bymonthday = null;\n }\n if (this.origOptions.byweekday) {\n const byweekday = !(this.origOptions.byweekday instanceof Array)\n ? [this.origOptions.byweekday]\n : this.origOptions.byweekday;\n const days = String(byweekday);\n this.byweekday = {\n allWeeks: byweekday.filter(function (weekday) {\n return !weekday.n;\n }),\n someWeeks: byweekday.filter(function (weekday) {\n return Boolean(weekday.n);\n }),\n isWeekdays: days.indexOf('MO') !== -1 &&\n days.indexOf('TU') !== -1 &&\n days.indexOf('WE') !== -1 &&\n days.indexOf('TH') !== -1 &&\n days.indexOf('FR') !== -1 &&\n days.indexOf('SA') === -1 &&\n days.indexOf('SU') === -1\n };\n const sortWeekDays = function (a, b) {\n return a.weekday - b.weekday;\n };\n this.byweekday.allWeeks.sort(sortWeekDays);\n this.byweekday.someWeeks.sort(sortWeekDays);\n if (!this.byweekday.allWeeks.length)\n this.byweekday.allWeeks = null;\n if (!this.byweekday.someWeeks.length)\n this.byweekday.someWeeks = null;\n }\n else {\n this.byweekday = null;\n }\n }\n /**\n * Test whether the rrule can be fully converted to text.\n * @param {RRule} rrule\n * @return {Boolean}\n */\n static isFullyConvertible(rrule) {\n let canConvert = true;\n if (!(rrule.options.freq in ToText.IMPLEMENTED))\n return false;\n if (rrule.origOptions.until && rrule.origOptions.count)\n return false;\n for (let key in rrule.origOptions) {\n if (contains(['dtstart', 'wkst', 'freq'], key))\n return true;\n if (!contains(ToText.IMPLEMENTED[rrule.options.freq], key))\n return false;\n }\n return canConvert;\n }\n isFullyConvertible() {\n return ToText.isFullyConvertible(this.rrule);\n }\n /**\n * Perform the conversion. Only some of the frequencies are supported.\n * If some of the rrule's options aren't supported, they'll\n * be omitted from the output an \"(~ approximate)\" will be appended.\n * @return {*}\n */\n toString() {\n const gettext = this.gettext;\n if (!(this.options.freq in ToText.IMPLEMENTED)) {\n return gettext('RRule error: Unable to fully convert this rrule to text');\n }\n this.text = [gettext('every')];\n // @ts-ignore\n this[index_1.default.FREQUENCIES[this.options.freq]]();\n if (this.options.until) {\n this.add(gettext('until'));\n const until = this.options.until;\n this.add(this.language.monthNames[until.getMonth()])\n .add(until.getDate() + ',')\n .add(until.getFullYear().toString());\n }\n else if (this.options.count) {\n this.add(gettext('for'))\n .add(this.options.count.toString())\n .add(this.plural(this.options.count) ? gettext('times') : gettext('time'));\n }\n if (!this.isFullyConvertible())\n this.add(gettext('(~ approximate)'));\n return this.text.join('');\n }\n HOURLY() {\n const gettext = this.gettext;\n if (this.options.interval !== 1)\n this.add(this.options.interval.toString());\n this.add(this.plural(this.options.interval) ? gettext('hours') : gettext('hour'));\n }\n MINUTELY() {\n const gettext = this.gettext;\n if (this.options.interval !== 1)\n this.add(this.options.interval.toString());\n this.add(this.plural(this.options.interval)\n ? gettext('minutes')\n : gettext('minutes'));\n }\n DAILY() {\n const gettext = this.gettext;\n if (this.options.interval !== 1)\n this.add(this.options.interval.toString());\n if (this.byweekday && this.byweekday.isWeekdays) {\n this.add(this.plural(this.options.interval)\n ? gettext('weekdays')\n : gettext('weekday'));\n }\n else {\n this.add(this.plural(this.options.interval) ? gettext('days') : gettext('day'));\n }\n if (this.origOptions.bymonth) {\n this.add(gettext('in'));\n this._bymonth();\n }\n if (this.bymonthday) {\n this._bymonthday();\n }\n else if (this.byweekday) {\n this._byweekday();\n }\n else if (this.origOptions.byhour) {\n this._byhour();\n }\n }\n WEEKLY() {\n const gettext = this.gettext;\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString()).add(this.plural(this.options.interval) ? gettext('weeks') : gettext('week'));\n }\n if (this.byweekday && this.byweekday.isWeekdays) {\n if (this.options.interval === 1) {\n this.add(this.plural(this.options.interval)\n ? gettext('weekdays')\n : gettext('weekday'));\n }\n else {\n this.add(gettext('on')).add(gettext('weekdays'));\n }\n }\n else {\n if (this.options.interval === 1)\n this.add(gettext('week'));\n if (this.origOptions.bymonth) {\n this.add(gettext('in'));\n this._bymonth();\n }\n if (this.bymonthday) {\n this._bymonthday();\n }\n else if (this.byweekday) {\n this._byweekday();\n }\n }\n }\n MONTHLY() {\n const gettext = this.gettext;\n if (this.origOptions.bymonth) {\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString()).add(gettext('months'));\n if (this.plural(this.options.interval))\n this.add(gettext('in'));\n }\n else {\n // this.add(gettext('MONTH'))\n }\n this._bymonth();\n }\n else {\n if (this.options.interval !== 1)\n this.add(this.options.interval.toString());\n this.add(this.plural(this.options.interval)\n ? gettext('months')\n : gettext('month'));\n }\n if (this.bymonthday) {\n this._bymonthday();\n }\n else if (this.byweekday && this.byweekday.isWeekdays) {\n this.add(gettext('on')).add(gettext('weekdays'));\n }\n else if (this.byweekday) {\n this._byweekday();\n }\n }\n YEARLY() {\n const gettext = this.gettext;\n if (this.origOptions.bymonth) {\n if (this.options.interval !== 1) {\n this.add(this.options.interval.toString());\n this.add(gettext('years'));\n }\n else {\n // this.add(gettext('YEAR'))\n }\n this._bymonth();\n }\n else {\n if (this.options.interval !== 1)\n this.add(this.options.interval.toString());\n this.add(this.plural(this.options.interval) ? gettext('years') : gettext('year'));\n }\n if (this.bymonthday) {\n this._bymonthday();\n }\n else if (this.byweekday) {\n this._byweekday();\n }\n if (this.options.byyearday) {\n this.add(gettext('on the'))\n .add(this.list(this.options.byyearday, this.nth, gettext('and')))\n .add(gettext('day'));\n }\n if (this.options.byweekno) {\n this.add(gettext('in'))\n .add(this.plural(this.options.byweekno.length)\n ? gettext('weeks')\n : gettext('week'))\n .add(this.list(this.options.byweekno, null, gettext('and')));\n }\n }\n _bymonthday() {\n const gettext = this.gettext;\n if (this.byweekday && this.byweekday.allWeeks) {\n this.add(gettext('on'))\n .add(this.list(this.byweekday.allWeeks, this.weekdaytext, gettext('or')))\n .add(gettext('the'))\n .add(this.list(this.bymonthday, this.nth, gettext('or')));\n }\n else {\n this.add(gettext('on the')).add(this.list(this.bymonthday, this.nth, gettext('and')));\n }\n // this.add(gettext('DAY'))\n }\n _byweekday() {\n const gettext = this.gettext;\n if (this.byweekday.allWeeks && !this.byweekday.isWeekdays) {\n this.add(gettext('on')).add(this.list(this.byweekday.allWeeks, this.weekdaytext));\n }\n if (this.byweekday.someWeeks) {\n if (this.byweekday.allWeeks)\n this.add(gettext('and'));\n this.add(gettext('on the')).add(this.list(this.byweekday.someWeeks, this.weekdaytext, gettext('and')));\n }\n }\n _byhour() {\n const gettext = this.gettext;\n this.add(gettext('at')).add(this.list(this.origOptions.byhour, null, gettext('and')));\n }\n _bymonth() {\n this.add(this.list(this.options.bymonth, this.monthtext, this.gettext('and')));\n }\n nth(n) {\n n = parseInt(n.toString(), 10);\n let nth;\n let npos;\n const gettext = this.gettext;\n if (n === -1)\n return gettext('last');\n npos = Math.abs(n);\n switch (npos) {\n case 1:\n case 21:\n case 31:\n nth = npos + gettext('st');\n break;\n case 2:\n case 22:\n nth = npos + gettext('nd');\n break;\n case 3:\n case 23:\n nth = npos + gettext('rd');\n break;\n default:\n nth = npos + gettext('th');\n }\n return n < 0 ? nth + ' ' + gettext('last') : nth;\n }\n monthtext(m) {\n return this.language.monthNames[m - 1];\n }\n weekdaytext(wday) {\n const weekday = typeof wday === 'number' ? (wday + 1) % 7 : wday.getJsWeekday();\n return ((wday.n ? this.nth(wday.n) + ' ' : '') + this.language.dayNames[weekday]);\n }\n plural(n) {\n return n % 100 !== 1;\n }\n add(s) {\n this.text.push(' ');\n this.text.push(s);\n return this;\n }\n list(arr, callback, finalDelim, delim = ',') {\n if (!(arr instanceof Array)) {\n arr = [arr];\n }\n const delimJoin = function (array, delimiter, finalDelimiter) {\n let list = '';\n for (let i = 0; i < array.length; i++) {\n if (i !== 0) {\n if (i === array.length - 1) {\n list += ' ' + finalDelimiter + ' ';\n }\n else {\n list += delimiter + ' ';\n }\n }\n list += array[i];\n }\n return list;\n };\n callback =\n callback ||\n function (o) {\n return o.toString();\n };\n const self = this;\n const realCallback = function (arg) {\n return callback.call(self, arg);\n };\n if (finalDelim) {\n return delimJoin(arr.map(realCallback), delim, finalDelim);\n }\n else {\n return arr.map(realCallback).join(delim + ' ');\n }\n }\n}\nexports.default = ToText;\n//# sourceMappingURL=totext.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst i18n_1 = require(\"./i18n\");\nconst index_1 = require(\"../index\");\n// =============================================================================\n// Parser\n// =============================================================================\nclass Parser {\n constructor(rules) {\n this.done = true;\n this.rules = rules;\n }\n start(text) {\n this.text = text;\n this.done = false;\n return this.nextSymbol();\n }\n isDone() {\n return this.done && this.symbol === null;\n }\n nextSymbol() {\n let best;\n let bestSymbol;\n const p = this;\n this.symbol = null;\n this.value = null;\n do {\n if (this.done)\n return false;\n let match;\n let rule;\n best = null;\n for (let name in this.rules) {\n rule = this.rules[name];\n match = rule.exec(p.text);\n if (match) {\n if (best === null || match[0].length > best[0].length) {\n best = match;\n bestSymbol = name;\n }\n }\n }\n if (best != null) {\n this.text = this.text.substr(best[0].length);\n if (this.text === '')\n this.done = true;\n }\n if (best == null) {\n this.done = true;\n this.symbol = null;\n this.value = null;\n return;\n }\n } while (bestSymbol === 'SKIP');\n this.symbol = bestSymbol;\n this.value = best;\n return true;\n }\n accept(name) {\n if (this.symbol === name) {\n if (this.value) {\n const v = this.value;\n this.nextSymbol();\n return v;\n }\n this.nextSymbol();\n return true;\n }\n return false;\n }\n expect(name) {\n if (this.accept(name))\n return true;\n throw new Error('expected ' + name + ' but found ' + this.symbol);\n }\n}\nfunction parseText(text, language) {\n const options = {};\n const ttr = new Parser((language || i18n_1.default).tokens);\n if (!ttr.start(text))\n return null;\n S();\n return options;\n function S() {\n // every [n]\n ttr.expect('every');\n let n = ttr.accept('number');\n if (n)\n options.interval = parseInt(n[0], 10);\n if (ttr.isDone())\n throw new Error('Unexpected end');\n switch (ttr.symbol) {\n case 'day(s)':\n options.freq = index_1.default.DAILY;\n if (ttr.nextSymbol()) {\n AT();\n F();\n }\n break;\n // FIXME Note: every 2 weekdays != every two weeks on weekdays.\n // DAILY on weekdays is not a valid rule\n case 'weekday(s)':\n options.freq = index_1.default.WEEKLY;\n options.byweekday = [\n index_1.default.MO,\n index_1.default.TU,\n index_1.default.WE,\n index_1.default.TH,\n index_1.default.FR\n ];\n ttr.nextSymbol();\n F();\n break;\n case 'week(s)':\n options.freq = index_1.default.WEEKLY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'hour(s)':\n options.freq = index_1.default.HOURLY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'minute(s)':\n options.freq = index_1.default.MINUTELY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'month(s)':\n options.freq = index_1.default.MONTHLY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'year(s)':\n options.freq = index_1.default.YEARLY;\n if (ttr.nextSymbol()) {\n ON();\n F();\n }\n break;\n case 'monday':\n case 'tuesday':\n case 'wednesday':\n case 'thursday':\n case 'friday':\n case 'saturday':\n case 'sunday':\n options.freq = index_1.default.WEEKLY;\n const key = ttr.symbol.substr(0, 2).toUpperCase();\n // @ts-ignore\n options.byweekday = [index_1.default[key]];\n if (!ttr.nextSymbol())\n return;\n // TODO check for duplicates\n while (ttr.accept('comma')) {\n if (ttr.isDone())\n throw new Error('Unexpected end');\n let wkd = decodeWKD();\n if (!wkd) {\n throw new Error('Unexpected symbol ' + ttr.symbol + ', expected weekday');\n }\n // @ts-ignore\n options.byweekday.push(index_1.default[wkd]);\n ttr.nextSymbol();\n }\n MDAYs();\n F();\n break;\n case 'january':\n case 'february':\n case 'march':\n case 'april':\n case 'may':\n case 'june':\n case 'july':\n case 'august':\n case 'september':\n case 'october':\n case 'november':\n case 'december':\n options.freq = index_1.default.YEARLY;\n options.bymonth = [decodeM()];\n if (!ttr.nextSymbol())\n return;\n // TODO check for duplicates\n while (ttr.accept('comma')) {\n if (ttr.isDone())\n throw new Error('Unexpected end');\n let m = decodeM();\n if (!m) {\n throw new Error('Unexpected symbol ' + ttr.symbol + ', expected month');\n }\n options.bymonth.push(m);\n ttr.nextSymbol();\n }\n ON();\n F();\n break;\n default:\n throw new Error('Unknown symbol');\n }\n }\n function ON() {\n const on = ttr.accept('on');\n const the = ttr.accept('the');\n if (!(on || the))\n return;\n do {\n let nth = decodeNTH();\n let wkd = decodeWKD();\n let m = decodeM();\n // nth | \n if (nth) {\n // ttr.nextSymbol()\n if (wkd) {\n ttr.nextSymbol();\n if (!options.byweekday)\n options.byweekday = [];\n // @ts-ignore\n options.byweekday.push(index_1.default[wkd].nth(nth));\n }\n else {\n if (!options.bymonthday)\n options.bymonthday = [];\n // @ts-ignore\n options.bymonthday.push(nth);\n ttr.accept('day(s)');\n }\n // \n }\n else if (wkd) {\n ttr.nextSymbol();\n if (!options.byweekday)\n options.byweekday = [];\n // @ts-ignore\n options.byweekday.push(index_1.default[wkd]);\n }\n else if (ttr.symbol === 'weekday(s)') {\n ttr.nextSymbol();\n if (!options.byweekday) {\n options.byweekday = [\n index_1.default.MO,\n index_1.default.TU,\n index_1.default.WE,\n index_1.default.TH,\n index_1.default.FR\n ];\n }\n }\n else if (ttr.symbol === 'week(s)') {\n ttr.nextSymbol();\n let n = ttr.accept('number');\n if (!n) {\n throw new Error('Unexpected symbol ' + ttr.symbol + ', expected week number');\n }\n options.byweekno = [n[0]];\n while (ttr.accept('comma')) {\n n = ttr.accept('number');\n if (!n) {\n throw new Error('Unexpected symbol ' + ttr.symbol + '; expected monthday');\n }\n options.byweekno.push(n[0]);\n }\n }\n else if (m) {\n ttr.nextSymbol();\n if (!options.bymonth)\n options.bymonth = [];\n // @ts-ignore\n options.bymonth.push(m);\n }\n else {\n return;\n }\n } while (ttr.accept('comma') || ttr.accept('the') || ttr.accept('on'));\n }\n function AT() {\n const at = ttr.accept('at');\n if (!at)\n return;\n do {\n let n = ttr.accept('number');\n if (!n) {\n throw new Error('Unexpected symbol ' + ttr.symbol + ', expected hour');\n }\n options.byhour = [n[0]];\n while (ttr.accept('comma')) {\n n = ttr.accept('number');\n if (!n) {\n throw new Error('Unexpected symbol ' + ttr.symbol + '; expected hour');\n }\n options.byhour.push(n[0]);\n }\n } while (ttr.accept('comma') || ttr.accept('at'));\n }\n function decodeM() {\n switch (ttr.symbol) {\n case 'january':\n return 1;\n case 'february':\n return 2;\n case 'march':\n return 3;\n case 'april':\n return 4;\n case 'may':\n return 5;\n case 'june':\n return 6;\n case 'july':\n return 7;\n case 'august':\n return 8;\n case 'september':\n return 9;\n case 'october':\n return 10;\n case 'november':\n return 11;\n case 'december':\n return 12;\n default:\n return false;\n }\n }\n function decodeWKD() {\n switch (ttr.symbol) {\n case 'monday':\n case 'tuesday':\n case 'wednesday':\n case 'thursday':\n case 'friday':\n case 'saturday':\n case 'sunday':\n return ttr.symbol.substr(0, 2).toUpperCase();\n default:\n return false;\n }\n }\n function decodeNTH() {\n switch (ttr.symbol) {\n case 'last':\n ttr.nextSymbol();\n return -1;\n case 'first':\n ttr.nextSymbol();\n return 1;\n case 'second':\n ttr.nextSymbol();\n return ttr.accept('last') ? -2 : 2;\n case 'third':\n ttr.nextSymbol();\n return ttr.accept('last') ? -3 : 3;\n case 'nth':\n const v = parseInt(ttr.value[1], 10);\n if (v < -366 || v > 366)\n throw new Error('Nth out of range: ' + v);\n ttr.nextSymbol();\n return ttr.accept('last') ? -v : v;\n default:\n return false;\n }\n }\n function MDAYs() {\n ttr.accept('on');\n ttr.accept('the');\n let nth = decodeNTH();\n if (!nth)\n return;\n options.bymonthday = [nth];\n ttr.nextSymbol();\n while (ttr.accept('comma')) {\n nth = decodeNTH();\n if (!nth) {\n throw new Error('Unexpected symbol ' + ttr.symbol + '; expected monthday');\n }\n options.bymonthday.push(nth);\n ttr.nextSymbol();\n }\n }\n function F() {\n if (ttr.symbol === 'until') {\n const date = Date.parse(ttr.text);\n if (!date)\n throw new Error('Cannot parse until date:' + ttr.text);\n options.until = new Date(date);\n }\n else if (ttr.accept('for')) {\n options.count = ttr.value[0];\n ttr.expect('number');\n // ttr.expect('times')\n }\n }\n}\nexports.default = parseText;\n//# sourceMappingURL=parsetext.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst rrule_1 = require(\"./rrule\");\nconst rruleset_1 = require(\"./rruleset\");\nconst dateutil_1 = require(\"./dateutil\");\nconst weekday_1 = require(\"./weekday\");\nconst helpers_1 = require(\"./helpers\");\n/**\n * RRuleStr\n * To parse a set of rrule strings\n */\nclass RRuleStr {\n constructor() {\n // tslint:disable-next-line:variable-name\n this._handle_BYDAY = this._handle_BYWEEKDAY;\n // tslint:disable-next-line:variable-name\n this._handle_INTERVAL = this._handle_int;\n // tslint:disable-next-line:variable-name\n this._handle_COUNT = this._handle_int;\n // tslint:disable-next-line:variable-name\n this._handle_BYSETPOS = this._handle_int_list;\n // tslint:disable-next-line:variable-name\n this._handle_BYMONTH = this._handle_int_list;\n // tslint:disable-next-line:variable-name\n this._handle_BYMONTHDAY = this._handle_int_list;\n // tslint:disable-next-line:variable-name\n this._handle_BYYEARDAY = this._handle_int_list;\n // tslint:disable-next-line:variable-name\n this._handle_BYEASTER = this._handle_int_list;\n // tslint:disable-next-line:variable-name\n this._handle_BYWEEKNO = this._handle_int_list;\n // tslint:disable-next-line:variable-name\n this._handle_BYHOUR = this._handle_int_list;\n // tslint:disable-next-line:variable-name\n this._handle_BYMINUTE = this._handle_int_list;\n // tslint:disable-next-line:variable-name\n this._handle_BYSECOND = this._handle_int_list;\n }\n // tslint:disable-next-line:variable-name\n _handle_DTSTART(rrkwargs, name, value, _) {\n // @ts-ignore\n rrkwargs[name.toLowerCase()] = dateutil_1.default.untilStringToDate(value);\n }\n _handle_int(rrkwargs, name, value) {\n // @ts-ignore\n rrkwargs[name.toLowerCase()] = parseInt(value, 10);\n }\n _handle_int_list(rrkwargs, name, value) {\n // @ts-ignore\n rrkwargs[name.toLowerCase()] = value.split(',').map(x => parseInt(x, 10));\n }\n _handle_FREQ(rrkwargs, _, value, __) {\n // eslint-disable-line\n rrkwargs['freq'] = RRuleStr._freq_map[value];\n }\n _handle_UNTIL(rrkwargs, _, value, __) {\n // eslint-disable-line\n try {\n rrkwargs['until'] = dateutil_1.default.untilStringToDate(value);\n }\n catch (error) {\n throw new Error('invalid until date');\n }\n }\n _handle_WKST(rrkwargs, _, value, __) {\n // eslint-disable-line\n rrkwargs['wkst'] = RRuleStr._weekday_map[value];\n }\n _handle_BYWEEKDAY(rrkwargs, _, value, __) {\n // Two ways to specify this: +1MO or MO(+1)\n let splt;\n let i;\n let j;\n let n;\n let w;\n let wday;\n const l = [];\n const wdays = value.split(',');\n for (i = 0; i < wdays.length; i++) {\n wday = wdays[i];\n if (wday.indexOf('(') > -1) {\n // If it's of the form TH(+1), etc.\n splt = wday.split('(');\n w = splt[0];\n n = parseInt(splt.slice(1, -1)[0], 10);\n }\n else {\n // # If it's of the form +1MO\n for (j = 0; j < wday.length; j++) {\n if ('+-0123456789'.indexOf(wday[j]) === -1)\n break;\n }\n n = wday.slice(0, j) || null;\n w = wday.slice(j);\n if (n)\n n = parseInt(n, 10);\n }\n const weekday = new weekday_1.default(RRuleStr._weekday_map[w], n);\n l.push(weekday);\n }\n rrkwargs['byweekday'] = l;\n }\n _parseRfcRRule(line, options = {}) {\n options.dtstart = options.dtstart || null;\n options.cache = options.cache || false;\n options.ignoretz = options.ignoretz || false;\n options.tzinfos = options.tzinfos || null;\n let name;\n let value;\n let parts;\n if (line.indexOf(':') !== -1) {\n parts = line.split(':');\n name = parts[0];\n value = parts[1];\n if (name !== 'RRULE')\n throw new Error('unknown parameter name');\n }\n else {\n value = line;\n }\n const rrkwargs = {};\n const pairs = value.split(';');\n for (let i = 0; i < pairs.length; i++) {\n parts = pairs[i].split('=');\n name = parts[0].toUpperCase();\n value = parts[1].toUpperCase();\n try {\n // @ts-ignore\n this['_handle_' + name](rrkwargs, name, value, {\n ignoretz: options.ignoretz,\n tzinfos: options.tzinfos\n });\n }\n catch (error) {\n throw new Error(\"unknown parameter '\" + name + \"':\" + value);\n }\n }\n rrkwargs.dtstart = rrkwargs.dtstart || options.dtstart;\n return new rrule_1.default(rrkwargs, !options.cache);\n }\n _parseRfc(s, options) {\n if (options.compatible) {\n options.forceset = true;\n options.unfold = true;\n }\n s = s && s.toUpperCase().trim();\n if (!s)\n throw new Error('Invalid empty string');\n let i = 0;\n let line;\n let lines;\n // More info about 'unfold' option\n // Go head to http://www.ietf.org/rfc/rfc2445.txt\n if (options.unfold) {\n lines = s.split('\\n');\n while (i < lines.length) {\n // TODO\n line = lines[i] = lines[i].replace(/\\s+$/g, '');\n if (!line) {\n lines.splice(i, 1);\n }\n else if (i > 0 && line[0] === ' ') {\n lines[i - 1] += line.slice(1);\n lines.splice(i, 1);\n }\n else {\n i += 1;\n }\n }\n }\n else {\n lines = s.split(/\\s/);\n }\n const rrulevals = [];\n const rdatevals = [];\n const exrulevals = [];\n const exdatevals = [];\n let name;\n let value;\n let parts;\n let parms;\n let parm;\n let dtstart;\n let rset;\n let j;\n let k;\n let datestrs;\n let datestr;\n if (!options.forceset &&\n lines.length === 1 &&\n (s.indexOf(':') === -1 || s.indexOf('RRULE:') === 0)) {\n return this._parseRfcRRule(lines[0], {\n cache: options.cache,\n dtstart: options.dtstart,\n ignoretz: options.ignoretz,\n tzinfos: options.tzinfos\n });\n }\n else {\n for (let i = 0; i < lines.length; i++) {\n line = lines[i];\n if (!line)\n continue;\n if (line.indexOf(':') === -1) {\n name = 'RRULE';\n value = line;\n }\n else {\n parts = helpers_1.split(line, ':', 1);\n name = parts[0];\n value = parts[1];\n }\n parms = name.split(';');\n if (!parms)\n throw new Error('empty property name');\n name = parms[0];\n parms = parms.slice(1);\n if (name === 'RRULE') {\n for (j = 0; j < parms.length; j++) {\n parm = parms[j];\n throw new Error('unsupported RRULE parm: ' + parm);\n }\n rrulevals.push(value);\n }\n else if (name === 'RDATE') {\n for (j = 0; j < parms.length; j++) {\n parm = parms[j];\n if (parm !== 'VALUE=DATE-TIME' && parm !== 'VALUE=DATE') {\n throw new Error('unsupported RDATE parm: ' + parm);\n }\n }\n rdatevals.push(value);\n }\n else if (name === 'EXRULE') {\n for (j = 0; j < parms.length; j++) {\n parm = parms[j];\n throw new Error('unsupported EXRULE parm: ' + parm);\n }\n exrulevals.push(value);\n }\n else if (name === 'EXDATE') {\n for (j = 0; j < parms.length; j++) {\n parm = parms[j];\n if (parm !== 'VALUE=DATE-TIME' && parm !== 'VALUE=DATE') {\n throw new Error('unsupported EXDATE parm: ' + parm);\n }\n }\n exdatevals.push(value);\n }\n else if (name === 'DTSTART') {\n dtstart = dateutil_1.default.untilStringToDate(value);\n }\n else {\n throw new Error('unsupported property: ' + name);\n }\n }\n if (options.forceset ||\n rrulevals.length > 1 ||\n rdatevals.length ||\n exrulevals.length ||\n exdatevals.length) {\n rset = new rruleset_1.default(!options.cache);\n for (j = 0; j < rrulevals.length; j++) {\n rset.rrule(this._parseRfcRRule(rrulevals[j], {\n dtstart: options.dtstart || dtstart,\n ignoretz: options.ignoretz,\n tzinfos: options.tzinfos\n }));\n }\n for (j = 0; j < rdatevals.length; j++) {\n datestrs = rdatevals[j].split(',');\n for (k = 0; k < datestrs.length; k++) {\n datestr = datestrs[k];\n rset.rdate(dateutil_1.default.untilStringToDate(datestr));\n }\n }\n for (j = 0; j < exrulevals.length; j++) {\n rset.exrule(this._parseRfcRRule(exrulevals[j], {\n dtstart: options.dtstart || dtstart,\n ignoretz: options.ignoretz,\n tzinfos: options.tzinfos\n }));\n }\n for (j = 0; j < exdatevals.length; j++) {\n datestrs = exdatevals[j].split(',');\n for (k = 0; k < datestrs.length; k++) {\n datestr = datestrs[k];\n rset.exdate(dateutil_1.default.untilStringToDate(datestr));\n }\n }\n if (options.compatible && options.dtstart)\n rset.rdate(dtstart);\n return rset;\n }\n else {\n return this._parseRfcRRule(rrulevals[0], {\n dtstart: options.dtstart || dtstart,\n cache: options.cache,\n ignoretz: options.ignoretz,\n tzinfos: options.tzinfos\n });\n }\n }\n }\n parse(s, options = {}) {\n const invalid = [];\n const keys = Object.keys(options);\n const defaultKeys = Object.keys(RRuleStr.DEFAULT_OPTIONS);\n keys.forEach(function (key) {\n if (!helpers_1.contains(defaultKeys, key))\n invalid.push(key);\n }, this);\n if (invalid.length) {\n throw new Error('Invalid options: ' + invalid.join(', '));\n }\n // Merge in default options\n defaultKeys.forEach(function (key) {\n // @ts-ignore\n if (!helpers_1.contains(keys, key))\n options[key] = RRuleStr.DEFAULT_OPTIONS[key];\n });\n return this._parseRfc(s, options);\n }\n}\n// tslint:disable-next-line:variable-name\nRRuleStr._weekday_map = {\n MO: 0,\n TU: 1,\n WE: 2,\n TH: 3,\n FR: 4,\n SA: 5,\n SU: 6\n};\n// tslint:disable-next-line:variable-name\nRRuleStr._freq_map = {\n YEARLY: rrule_1.default.YEARLY,\n MONTHLY: rrule_1.default.MONTHLY,\n WEEKLY: rrule_1.default.WEEKLY,\n DAILY: rrule_1.default.DAILY,\n HOURLY: rrule_1.default.HOURLY,\n MINUTELY: rrule_1.default.MINUTELY,\n SECONDLY: rrule_1.default.SECONDLY\n};\nRRuleStr.DEFAULT_OPTIONS = {\n dtstart: null,\n cache: false,\n unfold: false,\n forceset: false,\n compatible: false,\n ignoretz: false,\n tzinfos: null\n};\nexports.default = RRuleStr;\n//# sourceMappingURL=rrulestr.js.map"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/es6/nlp/parsetext.js b/dist/es6/nlp/parsetext.js index 0b77b1c4..049e7509 100644 --- a/dist/es6/nlp/parsetext.js +++ b/dist/es6/nlp/parsetext.js @@ -16,7 +16,7 @@ class Parser { return this.nextSymbol(); } isDone() { - return this.done && this.symbol == null; + return this.done && this.symbol === null; } nextSymbol() { let best; @@ -34,7 +34,7 @@ class Parser { rule = this.rules[name]; match = rule.exec(p.text); if (match) { - if (best == null || match[0].length > best[0].length) { + if (best === null || match[0].length > best[0].length) { best = match; bestSymbol = name; } diff --git a/dist/es6/nlp/parsetext.js.map b/dist/es6/nlp/parsetext.js.map index 25f9efd9..635ef019 100644 --- a/dist/es6/nlp/parsetext.js.map +++ b/dist/es6/nlp/parsetext.js.map @@ -1 +1 @@ -{"version":3,"file":"parsetext.js","sourceRoot":"","sources":["../../../src/nlp/parsetext.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"parsetext.js","sourceRoot":"","sources":["../../../src/nlp/parsetext.ts"],"names":[],"mappings":";;AAAA,iCAA0C;AAC1C,oCAA4B;AAG5B,gFAAgF;AAChF,SAAS;AACT,gFAAgF;AAEhF,MAAM,MAAM;IAOV,YAAa,KAA8B;QAFnC,SAAI,GAAG,IAAI,CAAA;QAGjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;IAED,KAAK,CAAE,IAAY;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAA;QACjB,OAAO,IAAI,CAAC,UAAU,EAAE,CAAA;IAC1B,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAA;IAC1C,CAAC;IAED,UAAU;QACR,IAAI,IAAqB,CAAA;QACzB,IAAI,UAAkB,CAAA;QACtB,MAAM,CAAC,GAAG,IAAI,CAAA;QAEd,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;QAClB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;QACjB,GAAG;YACD,IAAI,IAAI,CAAC,IAAI;gBAAE,OAAO,KAAK,CAAA;YAE3B,IAAI,KAAsB,CAAA;YAC1B,IAAI,IAAY,CAAA;YAChB,IAAI,GAAG,IAAI,CAAA;YACX,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;gBAC3B,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;gBACvB,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;gBACzB,IAAI,KAAK,EAAE;oBACT,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;wBACrD,IAAI,GAAG,KAAK,CAAA;wBACZ,UAAU,GAAG,IAAI,CAAA;qBAClB;iBACF;aACF;YAED,IAAI,IAAI,IAAI,IAAI,EAAE;gBAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;gBAE5C,IAAI,IAAI,CAAC,IAAI,KAAK,EAAE;oBAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;aACvC;YAED,IAAI,IAAI,IAAI,IAAI,EAAE;gBAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;gBAChB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;gBAClB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;gBACjB,OAAM;aACP;SACF,QAAQ,UAAU,KAAK,MAAM,EAAC;QAE/B,IAAI,CAAC,MAAM,GAAG,UAAU,CAAA;QACxB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;QACjB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,CAAE,IAAY;QAClB,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE;YACxB,IAAI,IAAI,CAAC,KAAK,EAAE;gBACd,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAA;gBACpB,IAAI,CAAC,UAAU,EAAE,CAAA;gBACjB,OAAO,CAAC,CAAA;aACT;YAED,IAAI,CAAC,UAAU,EAAE,CAAA;YACjB,OAAO,IAAI,CAAA;SACZ;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,CAAE,IAAY;QAClB,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAA;QAElC,MAAM,IAAI,KAAK,CAAC,WAAW,GAAG,IAAI,GAAG,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,CAAA;IACnE,CAAC;CACF;AAED,SAAwB,SAAS,CAAE,IAAY,EAAE,QAAkB;IACjE,MAAM,OAAO,GAAqB,EAAE,CAAA;IACpC,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,CAAC,QAAQ,IAAI,cAAO,CAAC,CAAC,MAAM,CAAC,CAAA;IAEpD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IAEjC,CAAC,EAAE,CAAA;IACH,OAAO,OAAO,CAAA;IAEd,SAAS,CAAC;QACR,YAAY;QACZ,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QACnB,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAC5B,IAAI,CAAC;YAAE,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QAC5C,IAAI,GAAG,CAAC,MAAM,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAA;QAEnD,QAAQ,GAAG,CAAC,MAAM,EAAE;YAClB,KAAK,QAAQ;gBACX,OAAO,CAAC,IAAI,GAAG,eAAK,CAAC,KAAK,CAAA;gBAC1B,IAAI,GAAG,CAAC,UAAU,EAAE,EAAE;oBACpB,EAAE,EAAE,CAAA;oBACJ,CAAC,EAAE,CAAA;iBACJ;gBACD,MAAK;YAEP,+DAA+D;YAC/D,wCAAwC;YACxC,KAAK,YAAY;gBACf,OAAO,CAAC,IAAI,GAAG,eAAK,CAAC,MAAM,CAAA;gBAC3B,OAAO,CAAC,SAAS,GAAG;oBAClB,eAAK,CAAC,EAAE;oBACR,eAAK,CAAC,EAAE;oBACR,eAAK,CAAC,EAAE;oBACR,eAAK,CAAC,EAAE;oBACR,eAAK,CAAC,EAAE;iBACT,CAAA;gBACD,GAAG,CAAC,UAAU,EAAE,CAAA;gBAChB,CAAC,EAAE,CAAA;gBACH,MAAK;YAEP,KAAK,SAAS;gBACZ,OAAO,CAAC,IAAI,GAAG,eAAK,CAAC,MAAM,CAAA;gBAC3B,IAAI,GAAG,CAAC,UAAU,EAAE,EAAE;oBACpB,EAAE,EAAE,CAAA;oBACJ,CAAC,EAAE,CAAA;iBACJ;gBACD,MAAK;YAEP,KAAK,SAAS;gBACZ,OAAO,CAAC,IAAI,GAAG,eAAK,CAAC,MAAM,CAAA;gBAC3B,IAAI,GAAG,CAAC,UAAU,EAAE,EAAE;oBACpB,EAAE,EAAE,CAAA;oBACJ,CAAC,EAAE,CAAA;iBACJ;gBACD,MAAK;YAEP,KAAK,WAAW;gBACd,OAAO,CAAC,IAAI,GAAG,eAAK,CAAC,QAAQ,CAAA;gBAC7B,IAAI,GAAG,CAAC,UAAU,EAAE,EAAE;oBACpB,EAAE,EAAE,CAAA;oBACJ,CAAC,EAAE,CAAA;iBACJ;gBACD,MAAK;YAEP,KAAK,UAAU;gBACb,OAAO,CAAC,IAAI,GAAG,eAAK,CAAC,OAAO,CAAA;gBAC5B,IAAI,GAAG,CAAC,UAAU,EAAE,EAAE;oBACpB,EAAE,EAAE,CAAA;oBACJ,CAAC,EAAE,CAAA;iBACJ;gBACD,MAAK;YAEP,KAAK,SAAS;gBACZ,OAAO,CAAC,IAAI,GAAG,eAAK,CAAC,MAAM,CAAA;gBAC3B,IAAI,GAAG,CAAC,UAAU,EAAE,EAAE;oBACpB,EAAE,EAAE,CAAA;oBACJ,CAAC,EAAE,CAAA;iBACJ;gBACD,MAAK;YAEP,KAAK,QAAQ,CAAC;YACd,KAAK,SAAS,CAAC;YACf,KAAK,WAAW,CAAC;YACjB,KAAK,UAAU,CAAC;YAChB,KAAK,QAAQ,CAAC;YACd,KAAK,UAAU,CAAC;YAChB,KAAK,QAAQ;gBACX,OAAO,CAAC,IAAI,GAAG,eAAK,CAAC,MAAM,CAAA;gBAC3B,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAwB,CAAA;gBACvE,aAAa;gBACb,OAAO,CAAC,SAAS,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,CAAC,CAAA;gBAEhC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE;oBAAE,OAAM;gBAE7B,4BAA4B;gBAC5B,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;oBAC1B,IAAI,GAAG,CAAC,MAAM,EAAE;wBAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAA;oBAEnD,IAAI,GAAG,GAAG,SAAS,EAAwB,CAAA;oBAC3C,IAAI,CAAC,GAAG,EAAE;wBACR,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,GAAG,CAAC,MAAM,GAAG,oBAAoB,CAAC,CAAA;qBAC1E;oBAED,aAAa;oBACb,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,eAAK,CAAC,GAAG,CAAC,CAAC,CAAA;oBAClC,GAAG,CAAC,UAAU,EAAE,CAAA;iBACjB;gBACD,KAAK,EAAE,CAAA;gBACP,CAAC,EAAE,CAAA;gBACH,MAAK;YAEP,KAAK,SAAS,CAAC;YACf,KAAK,UAAU,CAAC;YAChB,KAAK,OAAO,CAAC;YACb,KAAK,OAAO,CAAC;YACb,KAAK,KAAK,CAAC;YACX,KAAK,MAAM,CAAC;YACZ,KAAK,MAAM,CAAC;YACZ,KAAK,QAAQ,CAAC;YACd,KAAK,WAAW,CAAC;YACjB,KAAK,SAAS,CAAC;YACf,KAAK,UAAU,CAAC;YAChB,KAAK,UAAU;gBACb,OAAO,CAAC,IAAI,GAAG,eAAK,CAAC,MAAM,CAAA;gBAC3B,OAAO,CAAC,OAAO,GAAG,CAAC,OAAO,EAAY,CAAC,CAAA;gBAEvC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE;oBAAE,OAAM;gBAE7B,4BAA4B;gBAC5B,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;oBAC1B,IAAI,GAAG,CAAC,MAAM,EAAE;wBAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAA;oBAEnD,IAAI,CAAC,GAAG,OAAO,EAAE,CAAA;oBACjB,IAAI,CAAC,CAAC,EAAE;wBACN,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,GAAG,CAAC,MAAM,GAAG,kBAAkB,CAAC,CAAA;qBACxE;oBAED,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;oBACvB,GAAG,CAAC,UAAU,EAAE,CAAA;iBACjB;gBAED,EAAE,EAAE,CAAA;gBACJ,CAAC,EAAE,CAAA;gBACH,MAAK;YAEP;gBACE,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAA;SACpC;IACH,CAAC;IAED,SAAS,EAAE;QACT,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAC3B,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC7B,IAAI,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC;YAAE,OAAM;QAExB,GAAG;YACD,IAAI,GAAG,GAAG,SAAS,EAAE,CAAA;YACrB,IAAI,GAAG,GAAG,SAAS,EAAE,CAAA;YACrB,IAAI,CAAC,GAAG,OAAO,EAAE,CAAA;YAEjB,4BAA4B;YAC5B,IAAI,GAAG,EAAE;gBACP,mBAAmB;gBAEnB,IAAI,GAAG,EAAE;oBACP,GAAG,CAAC,UAAU,EAAE,CAAA;oBAChB,IAAI,CAAC,OAAO,CAAC,SAAS;wBAAE,OAAO,CAAC,SAAS,GAAG,EAAE,CAAA;oBAC9C,aAAa;oBACb,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,eAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;iBAC5C;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,UAAU;wBAAE,OAAO,CAAC,UAAU,GAAG,EAAE,CAAA;oBAChD,aAAa;oBACb,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;oBAC5B,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;iBACrB;gBACD,YAAY;aACb;iBAAM,IAAI,GAAG,EAAE;gBACd,GAAG,CAAC,UAAU,EAAE,CAAA;gBAChB,IAAI,CAAC,OAAO,CAAC,SAAS;oBAAE,OAAO,CAAC,SAAS,GAAG,EAAE,CAAA;gBAE9C,aAAa;gBACb,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,eAAK,CAAC,GAAG,CAAC,CAAC,CAAA;aACnC;iBAAM,IAAI,GAAG,CAAC,MAAM,KAAK,YAAY,EAAE;gBACtC,GAAG,CAAC,UAAU,EAAE,CAAA;gBAChB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;oBACtB,OAAO,CAAC,SAAS,GAAG;wBAClB,eAAK,CAAC,EAAE;wBACR,eAAK,CAAC,EAAE;wBACR,eAAK,CAAC,EAAE;wBACR,eAAK,CAAC,EAAE;wBACR,eAAK,CAAC,EAAE;qBACT,CAAA;iBACF;aACF;iBAAM,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE;gBACnC,GAAG,CAAC,UAAU,EAAE,CAAA;gBAChB,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;gBAC5B,IAAI,CAAC,CAAC,EAAE;oBACN,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,GAAG,CAAC,MAAM,GAAG,wBAAwB,CAAC,CAAA;iBAC9E;gBACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;gBACzB,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;oBAC1B,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;oBACxB,IAAI,CAAC,CAAC,EAAE;wBACN,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,GAAG,CAAC,MAAM,GAAG,qBAAqB,CAAC,CAAA;qBAC3E;oBACD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;iBAC5B;aACF;iBAAM,IAAI,CAAC,EAAE;gBACZ,GAAG,CAAC,UAAU,EAAE,CAAA;gBAChB,IAAI,CAAC,OAAO,CAAC,OAAO;oBAAE,OAAO,CAAC,OAAO,GAAG,EAAE,CAAA;gBAE1C,aAAa;gBACb,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;aACxB;iBAAM;gBACL,OAAM;aACP;SACF,QAAQ,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAC;IACxE,CAAC;IAED,SAAS,EAAE;QACT,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAC3B,IAAI,CAAC,EAAE;YAAE,OAAM;QAEf,GAAG;YACD,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;YAC5B,IAAI,CAAC,CAAC,EAAE;gBACN,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,GAAG,CAAC,MAAM,GAAG,iBAAiB,CAAC,CAAA;aACvE;YACD,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YACvB,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;gBAC1B,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;gBACxB,IAAI,CAAC,CAAC,EAAE;oBACN,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,GAAG,CAAC,MAAM,GAAG,iBAAiB,CAAC,CAAA;iBACvE;gBACD,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;aAC1B;SACF,QAAQ,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAC;IACnD,CAAC;IAED,SAAS,OAAO;QACd,QAAQ,GAAG,CAAC,MAAM,EAAE;YAClB,KAAK,SAAS;gBACZ,OAAO,CAAC,CAAA;YACV,KAAK,UAAU;gBACb,OAAO,CAAC,CAAA;YACV,KAAK,OAAO;gBACV,OAAO,CAAC,CAAA;YACV,KAAK,OAAO;gBACV,OAAO,CAAC,CAAA;YACV,KAAK,KAAK;gBACR,OAAO,CAAC,CAAA;YACV,KAAK,MAAM;gBACT,OAAO,CAAC,CAAA;YACV,KAAK,MAAM;gBACT,OAAO,CAAC,CAAA;YACV,KAAK,QAAQ;gBACX,OAAO,CAAC,CAAA;YACV,KAAK,WAAW;gBACd,OAAO,CAAC,CAAA;YACV,KAAK,SAAS;gBACZ,OAAO,EAAE,CAAA;YACX,KAAK,UAAU;gBACb,OAAO,EAAE,CAAA;YACX,KAAK,UAAU;gBACb,OAAO,EAAE,CAAA;YACX;gBACE,OAAO,KAAK,CAAA;SACf;IACH,CAAC;IAED,SAAS,SAAS;QAChB,QAAQ,GAAG,CAAC,MAAM,EAAE;YAClB,KAAK,QAAQ,CAAC;YACd,KAAK,SAAS,CAAC;YACf,KAAK,WAAW,CAAC;YACjB,KAAK,UAAU,CAAC;YAChB,KAAK,QAAQ,CAAC;YACd,KAAK,UAAU,CAAC;YAChB,KAAK,QAAQ;gBACX,OAAO,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAA;YAC9C;gBACE,OAAO,KAAK,CAAA;SACf;IACH,CAAC;IAED,SAAS,SAAS;QAChB,QAAQ,GAAG,CAAC,MAAM,EAAE;YAClB,KAAK,MAAM;gBACT,GAAG,CAAC,UAAU,EAAE,CAAA;gBAChB,OAAO,CAAC,CAAC,CAAA;YACX,KAAK,OAAO;gBACV,GAAG,CAAC,UAAU,EAAE,CAAA;gBAChB,OAAO,CAAC,CAAA;YACV,KAAK,QAAQ;gBACX,GAAG,CAAC,UAAU,EAAE,CAAA;gBAChB,OAAO,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YACpC,KAAK,OAAO;gBACV,GAAG,CAAC,UAAU,EAAE,CAAA;gBAChB,OAAO,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YACpC,KAAK,KAAK;gBACR,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;gBACpC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG;oBAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAA;gBAElE,GAAG,CAAC,UAAU,EAAE,CAAA;gBAChB,OAAO,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YAEpC;gBACE,OAAO,KAAK,CAAA;SACf;IACH,CAAC;IAED,SAAS,KAAK;QACZ,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAChB,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAEjB,IAAI,GAAG,GAAG,SAAS,EAAE,CAAA;QACrB,IAAI,CAAC,GAAG;YAAE,OAAM;QAEhB,OAAO,CAAC,UAAU,GAAG,CAAC,GAAG,CAAC,CAAA;QAC1B,GAAG,CAAC,UAAU,EAAE,CAAA;QAEhB,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;YAC1B,GAAG,GAAG,SAAS,EAAE,CAAA;YACjB,IAAI,CAAC,GAAG,EAAE;gBACR,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,GAAG,CAAC,MAAM,GAAG,qBAAqB,CAAC,CAAA;aAC3E;YAED,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAC5B,GAAG,CAAC,UAAU,EAAE,CAAA;SACjB;IACH,CAAC;IAED,SAAS,CAAC;QACR,IAAI,GAAG,CAAC,MAAM,KAAK,OAAO,EAAE;YAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YAEjC,IAAI,CAAC,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,GAAG,CAAC,IAAI,CAAC,CAAA;YACjE,OAAO,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAA;SAC/B;aAAM,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YAC5B,OAAO,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YAC5B,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;YACpB,sBAAsB;SACvB;IACH,CAAC;AACH,CAAC;AAxVD,4BAwVC"} \ No newline at end of file diff --git a/package.json b/package.json index 93fe67ec..3af5812a 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "license": "SEE LICENSE IN LICENSE", "babel": { "presets": [ - "@babel/preset-env" + "babel-preset-env" ] }, "keywords": [ @@ -17,7 +17,7 @@ "rfc" ], "author": "Jakub Roztocil and Lars Schöning", - "main": "dist/es5", + "main": "dist/es6", "module": "dist/es6", "repository": { "type": "git", @@ -25,20 +25,18 @@ }, "scripts": { "build": "yarn lint && tsc && webpack", - "lint": "yarn tslint --fix src/**/*.ts test/**/*.ts", + "lint": "yarn tslint --project . --fix --config tslint.json", "test": "yarn lint && TZ=UTC TS_NODE_PROJECT=tsconfig.test.json mocha --compilers ts:ts-node/register" }, "devDependencies": { - "@babel/core": "^7.0.0-beta.55", - "@babel/preset-env": "^7.0.0-beta.55", "@types/assert": "^0.0.31", "@types/chai": "^4.1.4", "@types/mocha": "^5.2.5", "@types/node": "^10.5.4", "babel-cli": "^6.26.0", - "babel-core": "7.0.0-bridge.0", + "babel-core": "^6.26.0", "babel-loader": "^7.1.5", - "babel-preset-env": "^1.7.0", + "babel-preset-env": "^1.6.1", "chai": "^4.1.2", "coffee-loader": "^0.9.0", "coffeescript": "^2.3.1", @@ -50,7 +48,7 @@ "ts-loader": "^4.4.2", "ts-node": "^7.0.0", "tslint": "^5.11.0", - "tslint-config-standard": "^7.1.0", + "tslint-eslint-rules": "^5.3.1", "typescript": "^3.0.1", "webpack": "^4.16.3", "webpack-cli": "^3.1.0" diff --git a/src/nlp/parsetext.ts b/src/nlp/parsetext.ts index ae46b8bb..4ea62617 100644 --- a/src/nlp/parsetext.ts +++ b/src/nlp/parsetext.ts @@ -24,7 +24,7 @@ class Parser { } isDone () { - return this.done && this.symbol == null + return this.done && this.symbol === null } nextSymbol () { @@ -44,7 +44,7 @@ class Parser { rule = this.rules[name] match = rule.exec(p.text) if (match) { - if (best == null || match[0].length > best[0].length) { + if (best === null || match[0].length > best[0].length) { best = match bestSymbol = name } diff --git a/tsconfig.json b/tsconfig.json index 7f93d47b..838b11a5 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -8,17 +8,10 @@ "noEmitOnError": true, "target": "es6", "jsx": "react", + "lib": ["es6"], "baseUrl": ".", - "rootDirs": [ - "./src/", - "./test/", - ] + "rootDirs": ["./src/", "./test/"] }, - "include": [ - "./src/**/*", - ], - "exclude": [ - "node_modules", - "./test/**/*" - ] -} \ No newline at end of file + "include": ["./src/**/*"], + "exclude": ["node_modules", "./test/**/*"] +} diff --git a/tslint.json b/tslint.json index 79670514..a356f3e5 100644 --- a/tslint.json +++ b/tslint.json @@ -1,3 +1,145 @@ { - "extends": "tslint-config-standard" -} \ No newline at end of file + "extends": ["tslint-eslint-rules"], + "rules": { + // TSLint rules. + "no-internal-module": true, + "typedef-whitespace": [ + true, + { + "call-signature": "nospace", + "index-signature": "nospace", + "parameter": "nospace", + "property-declaration": "nospace", + "variable-declaration": "nospace" + }, + { + "call-signature": "onespace", + "index-signature": "onespace", + "parameter": "onespace", + "property-declaration": "onespace", + "variable-declaration": "onespace" + } + ], + "await-promise": true, + "curly": [true, "ignore-same-line"], + "deprecation": true, + "label-position": true, + "no-arg": true, + "no-conditional-assignment": true, + "no-duplicate-imports": true, + "no-duplicate-variable": true, + "no-empty": true, + "no-eval": true, + "no-reference-import": true, + "no-return-await": true, + "no-switch-case-fall-through": true, + "no-unused-expression": [ + true, + "allow-fast-null-checks", + "allow-tagged-template" + ], + "no-use-before-declare": true, + "no-var-keyword": true, + "radix": true, + "space-within-parens": [true, 0], + "triple-equals": [true, "allow-null-check"], + "use-isnan": true, + "eofline": true, + "ter-indent": [ + true, + 2, + { + "SwitchCase": 1 + } + ], + "no-trailing-whitespace": true, + "trailing-comma": [ + true, + { + "multiline": "never", + "singleline": "never" + } + ], + "class-name": true, + "comment-format": [true, "check-space"], + "jsdoc-format": true, + "new-parens": true, + "no-angle-bracket-type-assertion": true, + "no-consecutive-blank-lines": true, + "no-floating-promises": true, + "no-misused-new": true, + "no-string-throw": true, + "no-unnecessary-qualifier": true, + "no-unnecessary-type-assertion": true, + "one-line": [ + true, + "check-catch", + "check-finally", + "check-else", + "check-open-brace", + "check-whitespace" + ], + "one-variable-per-declaration": true, + "quotemark": [true, "single", "avoid-escape", "jsx-single"], + "semicolon": [true, "never"], + "space-before-function-paren": [true, "always"], + "unified-signatures": true, + "variable-name": [ + true, + "ban-keywords", + "check-format", + "allow-leading-underscore", + "allow-pascal-case" + ], + "whitespace": [ + true, + "check-branch", + "check-decl", + "check-operator", + // 'check-module', + "check-rest-spread", + "check-type", + "check-typecast", + "check-type-operator", + "check-preblock" + ], + // TSLint ESLint rules. + "no-constant-condition": [ + true, + { + "checkLoops": false + } + ], + "no-control-regex": true, + "no-duplicate-case": true, + "no-empty-character-class": true, + "no-ex-assign": true, + "no-extra-boolean-cast": true, + "no-inner-declarations": [true, "functions"], + "no-invalid-regexp": true, + "ter-no-irregular-whitespace": true, + "no-regex-spaces": true, + "ter-no-sparse-arrays": true, + "ter-func-call-spacing": [true, "never"], + "no-unexpected-multiline": true, + "valid-typeof": true, + "ter-arrow-spacing": [ + true, + { + "before": true, + "after": true + } + ], + "no-multi-spaces": true, + "handle-callback-err": [true, "^(err|error)$"], + "block-spacing": [true, "always"], + "brace-style": [ + true, + "1tbs", + { + "allowSingleLine": true + } + ], + "object-curly-spacing": [true, "always"] + } +} diff --git a/webpack.config.js b/webpack.config.js index 3b7dec0e..c7824392 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -8,37 +8,40 @@ const paths = { styles: path.resolve(__dirname, "demo/demo.css"), template: path.resolve(__dirname, "demo/index.html") }, - demoDist: path.resolve(__dirname, "dist", "demo"), - es5: path.resolve(__dirname, "dist", "es5") + demoDist: path.resolve(__dirname, "dist"), + es5: path.resolve(__dirname, "dist", "es5"), + es6: path.resolve(__dirname, "dist", "es6") }; const rruleConfig = { entry: { - index: './dist/es6/index.js' + index: path.join(paths.es6, "index.js") }, output: { - filename: 'rrule.js', + filename: "rrule.js", path: paths.es5, - library: 'rrule', - libraryTarget: 'umd', - globalObject: 'typeof self !== \'undefined\' ? self : this' + library: "rrule", + libraryTarget: "umd", + globalObject: "typeof self !== 'undefined' ? self : this" }, - devtool: 'source-map', - mode: 'production', + devtool: "source-map", + mode: "production", module: { - rules: [{ - test: /\.js?$/, - use: 'babel-loader', - exclude: /node_modules/ - }] + rules: [ + { + test: /\.js?$/, + use: "babel-loader", + exclude: /node_modules/ + } + ] }, resolve: { - extensions: ['.js'] + extensions: [".js"] }, optimization: { minimize: false } -} +}; const demoConfig = { entry: { @@ -55,7 +58,7 @@ const demoConfig = { }, output: { filename: "demo.js", - path: paths.dist + path: paths.demoDist }, plugins: [ new webpack.ProvidePlugin({ @@ -65,7 +68,7 @@ const demoConfig = { new CopyWebpackPlugin([ { from: paths.demo.styles, - to: paths.dist + to: paths.demoDist } ]), new HtmlWebpackPlugin({ diff --git a/yarn.lock b/yarn.lock index fd7032ac..f7929beb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,511 +2,6 @@ # yarn lockfile v1 -"@babel/code-frame@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.0.0-beta.55.tgz#71f530e7b010af5eb7a7df7752f78921dd57e9ee" - dependencies: - "@babel/highlight" "7.0.0-beta.55" - -"@babel/core@^7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.0.0-beta.55.tgz#9e17c34b5ac855e427c98f570915a17fcc6bab4a" - dependencies: - "@babel/code-frame" "7.0.0-beta.55" - "@babel/generator" "7.0.0-beta.55" - "@babel/helpers" "7.0.0-beta.55" - "@babel/parser" "7.0.0-beta.55" - "@babel/template" "7.0.0-beta.55" - "@babel/traverse" "7.0.0-beta.55" - "@babel/types" "7.0.0-beta.55" - convert-source-map "^1.1.0" - debug "^3.1.0" - json5 "^0.5.0" - lodash "^4.17.10" - resolve "^1.3.2" - semver "^5.4.1" - source-map "^0.5.0" - -"@babel/generator@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.0.0-beta.55.tgz#8ec11152dcc398bae35dd181122704415c383a01" - dependencies: - "@babel/types" "7.0.0-beta.55" - jsesc "^2.5.1" - lodash "^4.17.10" - source-map "^0.5.0" - trim-right "^1.0.1" - -"@babel/helper-annotate-as-pure@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0-beta.55.tgz#3c3e4c00e14e7dea917938e35ed5d9156cdd35ce" - dependencies: - "@babel/types" "7.0.0-beta.55" - -"@babel/helper-builder-binary-assignment-operator-visitor@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.0.0-beta.55.tgz#4d02128acff5c368a2d43ea8608260ce49aeec5d" - dependencies: - "@babel/helper-explode-assignable-expression" "7.0.0-beta.55" - "@babel/types" "7.0.0-beta.55" - -"@babel/helper-call-delegate@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.0.0-beta.55.tgz#13f68c85c2adfe87c02f7ab4d2a63d35cd67d724" - dependencies: - "@babel/helper-hoist-variables" "7.0.0-beta.55" - "@babel/traverse" "7.0.0-beta.55" - "@babel/types" "7.0.0-beta.55" - -"@babel/helper-define-map@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.0.0-beta.55.tgz#b62bcb37b753be416db7f21563f0162cd933403a" - dependencies: - "@babel/helper-function-name" "7.0.0-beta.55" - "@babel/types" "7.0.0-beta.55" - lodash "^4.17.10" - -"@babel/helper-explode-assignable-expression@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.0.0-beta.55.tgz#f5c096f261ca4efc6154b2633317eec1ed9029ea" - dependencies: - "@babel/traverse" "7.0.0-beta.55" - "@babel/types" "7.0.0-beta.55" - -"@babel/helper-function-name@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.55.tgz#16aab21380a2eabcee3328d21b9586ba3427dbef" - dependencies: - "@babel/helper-get-function-arity" "7.0.0-beta.55" - "@babel/template" "7.0.0-beta.55" - "@babel/types" "7.0.0-beta.55" - -"@babel/helper-get-function-arity@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.55.tgz#8559ded96ecd3b626f9c1f57494edc4fa3cc6a94" - dependencies: - "@babel/types" "7.0.0-beta.55" - -"@babel/helper-hoist-variables@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.0.0-beta.55.tgz#a88c5d992dca109199cf95b25907534a959dc461" - dependencies: - "@babel/types" "7.0.0-beta.55" - -"@babel/helper-member-expression-to-functions@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.0.0-beta.55.tgz#823d254bc9bd019a529fe2ab7f9e1d26870c5e50" - dependencies: - "@babel/types" "7.0.0-beta.55" - -"@babel/helper-module-imports@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.0.0-beta.55.tgz#93f927c6631d0689b8bbd1991d3fb2aa63eeb3f2" - dependencies: - "@babel/types" "7.0.0-beta.55" - lodash "^4.17.10" - -"@babel/helper-module-transforms@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.0.0-beta.55.tgz#2bd12f0e9187e5d69599ffa7c11fe9a3a67b03d2" - dependencies: - "@babel/helper-module-imports" "7.0.0-beta.55" - "@babel/helper-simple-access" "7.0.0-beta.55" - "@babel/helper-split-export-declaration" "7.0.0-beta.55" - "@babel/template" "7.0.0-beta.55" - "@babel/types" "7.0.0-beta.55" - lodash "^4.17.10" - -"@babel/helper-optimise-call-expression@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0-beta.55.tgz#57fdc6898bc53f02da78bf4a39509d4dfc3b33cb" - dependencies: - "@babel/types" "7.0.0-beta.55" - -"@babel/helper-plugin-utils@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0-beta.55.tgz#31f40777efd6b961da8496a923c22d2b062b3f73" - -"@babel/helper-regex@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/helper-regex/-/helper-regex-7.0.0-beta.55.tgz#74e6c063d1ef9f7e58b7a84c06e6ee4a5bb5a5da" - dependencies: - lodash "^4.17.10" - -"@babel/helper-remap-async-to-generator@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.0.0-beta.55.tgz#e762d1b8f7f06121ed3e40befb1f9847d4658a7d" - dependencies: - "@babel/helper-annotate-as-pure" "7.0.0-beta.55" - "@babel/helper-wrap-function" "7.0.0-beta.55" - "@babel/template" "7.0.0-beta.55" - "@babel/traverse" "7.0.0-beta.55" - "@babel/types" "7.0.0-beta.55" - -"@babel/helper-replace-supers@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.0.0-beta.55.tgz#d588ad863990f35d8b0f67aa94ef8eec24171855" - dependencies: - "@babel/helper-member-expression-to-functions" "7.0.0-beta.55" - "@babel/helper-optimise-call-expression" "7.0.0-beta.55" - "@babel/traverse" "7.0.0-beta.55" - "@babel/types" "7.0.0-beta.55" - -"@babel/helper-simple-access@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.0.0-beta.55.tgz#f3f3ce279f20fc90c166c4fea1667646857ba559" - dependencies: - "@babel/template" "7.0.0-beta.55" - "@babel/types" "7.0.0-beta.55" - lodash "^4.17.10" - -"@babel/helper-split-export-declaration@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.55.tgz#ecb8074bf2d22c6518a252282535def137a8704f" - dependencies: - "@babel/types" "7.0.0-beta.55" - -"@babel/helper-wrap-function@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.0.0-beta.55.tgz#3053e77647057b29b88d9625503e033b1bd349b4" - dependencies: - "@babel/helper-function-name" "7.0.0-beta.55" - "@babel/template" "7.0.0-beta.55" - "@babel/traverse" "7.0.0-beta.55" - "@babel/types" "7.0.0-beta.55" - -"@babel/helpers@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.0.0-beta.55.tgz#d0b4b9a327dba42d58890011deb905c820739617" - dependencies: - "@babel/template" "7.0.0-beta.55" - "@babel/traverse" "7.0.0-beta.55" - "@babel/types" "7.0.0-beta.55" - -"@babel/highlight@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.0.0-beta.55.tgz#988653647d629c261dae156e74d5f0252ba520c0" - dependencies: - chalk "^2.0.0" - esutils "^2.0.2" - js-tokens "^3.0.0" - -"@babel/parser@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.0.0-beta.55.tgz#0a527efc148c6c8cd85d5ffddacad817a2daeeb2" - -"@babel/plugin-proposal-async-generator-functions@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.0.0-beta.55.tgz#512bb28c0401769811818d6b4453ce9bdf5f21ca" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.55" - "@babel/helper-remap-async-to-generator" "7.0.0-beta.55" - "@babel/plugin-syntax-async-generators" "7.0.0-beta.55" - -"@babel/plugin-proposal-object-rest-spread@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.0.0-beta.55.tgz#b611bb83901bf05196237c516a8bb1117a2a9396" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.55" - "@babel/plugin-syntax-object-rest-spread" "7.0.0-beta.55" - -"@babel/plugin-proposal-optional-catch-binding@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.0.0-beta.55.tgz#365727b214a3e3e5cbeb92c471635a5f51839735" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.55" - "@babel/plugin-syntax-optional-catch-binding" "7.0.0-beta.55" - -"@babel/plugin-proposal-unicode-property-regex@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.0.0-beta.55.tgz#987f851d4f50fbb91c17ba51cc113d8d3f558c5b" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.55" - "@babel/helper-regex" "7.0.0-beta.55" - regexpu-core "^4.2.0" - -"@babel/plugin-syntax-async-generators@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.0.0-beta.55.tgz#e72b3857eb80b695c77c3721237b149072cda46b" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.55" - -"@babel/plugin-syntax-object-rest-spread@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.0.0-beta.55.tgz#990ea47e790d7d9a9d28469c6bcc15f580bf19e9" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.55" - -"@babel/plugin-syntax-optional-catch-binding@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.0.0-beta.55.tgz#ef903fee2dbc3621773d7db2dec9861c8f976c12" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.55" - -"@babel/plugin-transform-arrow-functions@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.0.0-beta.55.tgz#eacb446ffc67e5135a4a29ac72bffac1ada181f6" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.55" - -"@babel/plugin-transform-async-to-generator@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.0.0-beta.55.tgz#490a4715540807bd89f5858e8aac30d1561bdd65" - dependencies: - "@babel/helper-module-imports" "7.0.0-beta.55" - "@babel/helper-plugin-utils" "7.0.0-beta.55" - "@babel/helper-remap-async-to-generator" "7.0.0-beta.55" - -"@babel/plugin-transform-block-scoped-functions@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.0.0-beta.55.tgz#0670d0a149435eea73f72e3392a51b38de607270" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.55" - -"@babel/plugin-transform-block-scoping@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.0.0-beta.55.tgz#c826f8c20304ac39f6cdd11d14f1cd7d90aa5470" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.55" - lodash "^4.17.10" - -"@babel/plugin-transform-classes@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.0.0-beta.55.tgz#fa260266943f7a1e144ef9783d9a07e987755022" - dependencies: - "@babel/helper-annotate-as-pure" "7.0.0-beta.55" - "@babel/helper-define-map" "7.0.0-beta.55" - "@babel/helper-function-name" "7.0.0-beta.55" - "@babel/helper-optimise-call-expression" "7.0.0-beta.55" - "@babel/helper-plugin-utils" "7.0.0-beta.55" - "@babel/helper-replace-supers" "7.0.0-beta.55" - "@babel/helper-split-export-declaration" "7.0.0-beta.55" - globals "^11.1.0" - -"@babel/plugin-transform-computed-properties@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.0.0-beta.55.tgz#a04f101f305695031ffda61501728c00180237b9" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.55" - -"@babel/plugin-transform-destructuring@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.0.0-beta.55.tgz#1d44216cbbdb5d873819abb71fe033c14a1c1723" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.55" - -"@babel/plugin-transform-dotall-regex@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.0.0-beta.55.tgz#2b9c2d13b79b660789b40f9f49873525d7d77437" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.55" - "@babel/helper-regex" "7.0.0-beta.55" - regexpu-core "^4.1.3" - -"@babel/plugin-transform-duplicate-keys@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.0.0-beta.55.tgz#d1300c60703d5b5205f65ea178b7b5715d0b9687" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.55" - -"@babel/plugin-transform-exponentiation-operator@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.0.0-beta.55.tgz#ddcac0ea80e6641681a473a703093cd2f623a59e" - dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "7.0.0-beta.55" - "@babel/helper-plugin-utils" "7.0.0-beta.55" - -"@babel/plugin-transform-for-of@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.0.0-beta.55.tgz#cf3058c6d81a3d69e5df086294688dac28a42710" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.55" - -"@babel/plugin-transform-function-name@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.0.0-beta.55.tgz#114384d56e1739492bd4ce9337dd158acde14801" - dependencies: - "@babel/helper-function-name" "7.0.0-beta.55" - "@babel/helper-plugin-utils" "7.0.0-beta.55" - -"@babel/plugin-transform-literals@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.0.0-beta.55.tgz#8bc92cd24e6419301ef3867e4667b77aa6374e11" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.55" - -"@babel/plugin-transform-modules-amd@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.0.0-beta.55.tgz#c8b59b84d6f4987512667c6f9410af3ddd562e12" - dependencies: - "@babel/helper-module-transforms" "7.0.0-beta.55" - "@babel/helper-plugin-utils" "7.0.0-beta.55" - -"@babel/plugin-transform-modules-commonjs@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.0.0-beta.55.tgz#748af5037e28a78694df71be2e8d02c5c84b8aaf" - dependencies: - "@babel/helper-module-transforms" "7.0.0-beta.55" - "@babel/helper-plugin-utils" "7.0.0-beta.55" - "@babel/helper-simple-access" "7.0.0-beta.55" - -"@babel/plugin-transform-modules-systemjs@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.0.0-beta.55.tgz#9e36a7d48c9137781484c5442da426873289594e" - dependencies: - "@babel/helper-hoist-variables" "7.0.0-beta.55" - "@babel/helper-plugin-utils" "7.0.0-beta.55" - -"@babel/plugin-transform-modules-umd@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.0.0-beta.55.tgz#028c96f64e89313657c6d5f5ff0660fc99f6ee0a" - dependencies: - "@babel/helper-module-transforms" "7.0.0-beta.55" - "@babel/helper-plugin-utils" "7.0.0-beta.55" - -"@babel/plugin-transform-new-target@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.0.0-beta.55.tgz#0164ad758b68f67fc39dbef1b7d61e37f5a9bfd5" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.55" - -"@babel/plugin-transform-object-super@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.0.0-beta.55.tgz#b518d13a90352128191514d7d5db8e5a78c9992b" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.55" - "@babel/helper-replace-supers" "7.0.0-beta.55" - -"@babel/plugin-transform-parameters@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.0.0-beta.55.tgz#f211f18a560a4d928d9649da11c28dd89f15effe" - dependencies: - "@babel/helper-call-delegate" "7.0.0-beta.55" - "@babel/helper-get-function-arity" "7.0.0-beta.55" - "@babel/helper-plugin-utils" "7.0.0-beta.55" - -"@babel/plugin-transform-regenerator@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.0.0-beta.55.tgz#a12ba1376c647cf0b777dea8a7b55fe4665ed1ff" - dependencies: - regenerator-transform "^0.13.3" - -"@babel/plugin-transform-shorthand-properties@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.0.0-beta.55.tgz#75e97575b87c6fe31c008fc3d755fddcd6cb908a" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.55" - -"@babel/plugin-transform-spread@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.0.0-beta.55.tgz#d5a1c320aac86469d6d311e136a89fb5a1f65600" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.55" - -"@babel/plugin-transform-sticky-regex@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.0.0-beta.55.tgz#d0b80b2deb8b4db03bc6459ebe79ad8b39b40546" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.55" - "@babel/helper-regex" "7.0.0-beta.55" - -"@babel/plugin-transform-template-literals@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.0.0-beta.55.tgz#b00a6496d4c8384507559598aaf49d8c1ad892e6" - dependencies: - "@babel/helper-annotate-as-pure" "7.0.0-beta.55" - "@babel/helper-plugin-utils" "7.0.0-beta.55" - -"@babel/plugin-transform-typeof-symbol@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.0.0-beta.55.tgz#62326918560b765bbe9f362ad3a4ce3bc71477bc" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.55" - -"@babel/plugin-transform-unicode-regex@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.0.0-beta.55.tgz#87e7bedbba103f784a7999f82064f47c0b35c796" - dependencies: - "@babel/helper-plugin-utils" "7.0.0-beta.55" - "@babel/helper-regex" "7.0.0-beta.55" - regexpu-core "^4.1.3" - -"@babel/preset-env@^7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.0.0-beta.55.tgz#d3d997517761890144081d53c0c669ba7e8334e0" - dependencies: - "@babel/helper-module-imports" "7.0.0-beta.55" - "@babel/helper-plugin-utils" "7.0.0-beta.55" - "@babel/plugin-proposal-async-generator-functions" "7.0.0-beta.55" - "@babel/plugin-proposal-object-rest-spread" "7.0.0-beta.55" - "@babel/plugin-proposal-optional-catch-binding" "7.0.0-beta.55" - "@babel/plugin-proposal-unicode-property-regex" "7.0.0-beta.55" - "@babel/plugin-syntax-async-generators" "7.0.0-beta.55" - "@babel/plugin-syntax-object-rest-spread" "7.0.0-beta.55" - "@babel/plugin-syntax-optional-catch-binding" "7.0.0-beta.55" - "@babel/plugin-transform-arrow-functions" "7.0.0-beta.55" - "@babel/plugin-transform-async-to-generator" "7.0.0-beta.55" - "@babel/plugin-transform-block-scoped-functions" "7.0.0-beta.55" - "@babel/plugin-transform-block-scoping" "7.0.0-beta.55" - "@babel/plugin-transform-classes" "7.0.0-beta.55" - "@babel/plugin-transform-computed-properties" "7.0.0-beta.55" - "@babel/plugin-transform-destructuring" "7.0.0-beta.55" - "@babel/plugin-transform-dotall-regex" "7.0.0-beta.55" - "@babel/plugin-transform-duplicate-keys" "7.0.0-beta.55" - "@babel/plugin-transform-exponentiation-operator" "7.0.0-beta.55" - "@babel/plugin-transform-for-of" "7.0.0-beta.55" - "@babel/plugin-transform-function-name" "7.0.0-beta.55" - "@babel/plugin-transform-literals" "7.0.0-beta.55" - "@babel/plugin-transform-modules-amd" "7.0.0-beta.55" - "@babel/plugin-transform-modules-commonjs" "7.0.0-beta.55" - "@babel/plugin-transform-modules-systemjs" "7.0.0-beta.55" - "@babel/plugin-transform-modules-umd" "7.0.0-beta.55" - "@babel/plugin-transform-new-target" "7.0.0-beta.55" - "@babel/plugin-transform-object-super" "7.0.0-beta.55" - "@babel/plugin-transform-parameters" "7.0.0-beta.55" - "@babel/plugin-transform-regenerator" "7.0.0-beta.55" - "@babel/plugin-transform-shorthand-properties" "7.0.0-beta.55" - "@babel/plugin-transform-spread" "7.0.0-beta.55" - "@babel/plugin-transform-sticky-regex" "7.0.0-beta.55" - "@babel/plugin-transform-template-literals" "7.0.0-beta.55" - "@babel/plugin-transform-typeof-symbol" "7.0.0-beta.55" - "@babel/plugin-transform-unicode-regex" "7.0.0-beta.55" - browserslist "^3.0.0" - invariant "^2.2.2" - js-levenshtein "^1.1.3" - semver "^5.3.0" - -"@babel/template@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.0.0-beta.55.tgz#c6cab0e2722ba5e33fe034073b6d31673aba326e" - dependencies: - "@babel/code-frame" "7.0.0-beta.55" - "@babel/parser" "7.0.0-beta.55" - "@babel/types" "7.0.0-beta.55" - lodash "^4.17.10" - -"@babel/traverse@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.0.0-beta.55.tgz#50be5d0fcc5cc4ac020a7b0c519be8dae345d4be" - dependencies: - "@babel/code-frame" "7.0.0-beta.55" - "@babel/generator" "7.0.0-beta.55" - "@babel/helper-function-name" "7.0.0-beta.55" - "@babel/helper-split-export-declaration" "7.0.0-beta.55" - "@babel/parser" "7.0.0-beta.55" - "@babel/types" "7.0.0-beta.55" - debug "^3.1.0" - globals "^11.1.0" - lodash "^4.17.10" - -"@babel/types@7.0.0-beta.55": - version "7.0.0-beta.55" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.0.0-beta.55.tgz#7755c9d2e58315a64f05d8cf3322379be16d9199" - dependencies: - esutils "^2.0.2" - lodash "^4.17.10" - to-fast-properties "^2.0.0" - "@types/assert@^0.0.31": version "0.0.31" resolved "https://registry.yarnpkg.com/@types/assert/-/assert-0.0.31.tgz#d1f70595a72d02555b7ecd28eb4c68f1b6918d6d" @@ -844,10 +339,6 @@ babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: esutils "^2.0.2" js-tokens "^3.0.2" -babel-core@7.0.0-bridge.0: - version "7.0.0-bridge.0" - resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-7.0.0-bridge.0.tgz#95a492ddd90f9b4e9a4a1da14eb335b87b634ece" - babel-core@^6.26.0: version "6.26.3" resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.3.tgz#b2e2f09e342d0f0c88e2f02e067794125e75c207" @@ -1223,7 +714,7 @@ babel-polyfill@^6.26.0: core-js "^2.5.0" regenerator-runtime "^0.10.5" -babel-preset-env@^1.7.0: +babel-preset-env@^1.6.1: version "1.7.0" resolved "https://registry.yarnpkg.com/babel-preset-env/-/babel-preset-env-1.7.0.tgz#dea79fa4ebeb883cd35dab07e260c1c9c04df77a" dependencies: @@ -1445,7 +936,7 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^3.0.0, browserslist@^3.2.6: +browserslist@^3.2.6: version "3.2.8" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-3.2.8.tgz#b0005361d6471f0f5952797a76fc985f1f978fc6" dependencies: @@ -1726,7 +1217,7 @@ constants-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" -convert-source-map@^1.1.0, convert-source-map@^1.5.0, convert-source-map@^1.5.1: +convert-source-map@^1.5.0, convert-source-map@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" @@ -2378,10 +1869,6 @@ global-modules-path@^2.1.0: version "2.3.0" resolved "https://registry.yarnpkg.com/global-modules-path/-/global-modules-path-2.3.0.tgz#b0e2bac6beac39745f7db5c59d26a36a0b94f7dc" -globals@^11.1.0: - version "11.7.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.7.0.tgz#a583faa43055b1aca771914bf68258e2fc125673" - globals@^9.18.0: version "9.18.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" @@ -2810,18 +2297,14 @@ jquery@^3.3.1: version "3.3.1" resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.3.1.tgz#958ce29e81c9790f31be7792df5d4d95fc57fbca" -js-levenshtein@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.3.tgz#3ef627df48ec8cf24bacf05c0f184ff30ef413c5" - -js-tokens@^3.0.0, js-tokens@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" - "js-tokens@^3.0.0 || ^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" +js-tokens@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" + js-yaml@^3.7.0: version "3.12.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.12.0.tgz#eaed656ec8344f10f527c6bfa1b6e2244de167d1" @@ -2833,10 +2316,6 @@ jsesc@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" -jsesc@^2.5.1: - version "2.5.1" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.1.tgz#e421a2a8e20d6b0819df28908f782526b96dd1fe" - jsesc@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" @@ -3638,13 +3117,7 @@ readdirp@^2.0.0: readable-stream "^2.0.2" set-immediate-shim "^1.0.1" -regenerate-unicode-properties@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-7.0.0.tgz#107405afcc4a190ec5ed450ecaa00ed0cafa7a4c" - dependencies: - regenerate "^1.4.0" - -regenerate@^1.2.1, regenerate@^1.4.0: +regenerate@^1.2.1: version "1.4.0" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.0.tgz#4a856ec4b56e4077c557589cae85e7a4c8869a11" @@ -3664,12 +3137,6 @@ regenerator-transform@^0.10.0: babel-types "^6.19.0" private "^0.1.6" -regenerator-transform@^0.13.3: - version "0.13.3" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.13.3.tgz#264bd9ff38a8ce24b06e0636496b2c856b57bcbb" - dependencies: - private "^0.1.6" - regex-cache@^0.4.2: version "0.4.4" resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" @@ -3691,37 +3158,16 @@ regexpu-core@^2.0.0: regjsgen "^0.2.0" regjsparser "^0.1.4" -regexpu-core@^4.1.3, regexpu-core@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-4.2.0.tgz#a3744fa03806cffe146dea4421a3e73bdcc47b1d" - dependencies: - regenerate "^1.4.0" - regenerate-unicode-properties "^7.0.0" - regjsgen "^0.4.0" - regjsparser "^0.3.0" - unicode-match-property-ecmascript "^1.0.4" - unicode-match-property-value-ecmascript "^1.0.2" - regjsgen@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" -regjsgen@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.4.0.tgz#c1eb4c89a209263f8717c782591523913ede2561" - regjsparser@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" dependencies: jsesc "~0.5.0" -regjsparser@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.3.0.tgz#3c326da7fcfd69fa0d332575a41c8c0cdf588c96" - dependencies: - jsesc "~0.5.0" - relateurl@0.2.x: version "0.2.7" resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" @@ -3849,7 +3295,7 @@ schema-utils@^0.4.4, schema-utils@^0.4.5: ajv "^6.1.0" ajv-keywords "^3.1.0" -semver@^5.0.1, semver@^5.3.0, semver@^5.4.1, semver@^5.5.0: +semver@^5.0.1, semver@^5.3.0, semver@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" @@ -3978,7 +3424,7 @@ source-map-url@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" -source-map@0.5.x, source-map@^0.5.0, source-map@^0.5.6, source-map@^0.5.7: +source-map@0.5.x, source-map@^0.5.6, source-map@^0.5.7: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" @@ -4139,10 +3585,6 @@ to-fast-properties@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - to-object-path@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" @@ -4204,12 +3646,6 @@ tslib@^1.7.1, tslib@^1.8.0, tslib@^1.8.1, tslib@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286" -tslint-config-standard@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/tslint-config-standard/-/tslint-config-standard-7.1.0.tgz#6bcc435a179478e365f6cc62312a561221985760" - dependencies: - tslint-eslint-rules "^5.3.1" - tslint-eslint-rules@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/tslint-eslint-rules/-/tslint-eslint-rules-5.3.1.tgz#10dec4361df0b3e4385d91ff8e0226bda4ec2ad4" @@ -4290,25 +3726,6 @@ uglifyjs-webpack-plugin@^1.2.4: webpack-sources "^1.1.0" worker-farm "^1.5.2" -unicode-canonical-property-names-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz#2619800c4c825800efdd8343af7dd9933cbe2818" - -unicode-match-property-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz#8ed2a32569961bce9227d09cd3ffbb8fed5f020c" - dependencies: - unicode-canonical-property-names-ecmascript "^1.0.4" - unicode-property-aliases-ecmascript "^1.0.4" - -unicode-match-property-value-ecmascript@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.0.2.tgz#9f1dc76926d6ccf452310564fd834ace059663d4" - -unicode-property-aliases-ecmascript@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.4.tgz#5a533f31b4317ea76f17d807fa0d116546111dd0" - union-value@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4"